00001 // Copyright (C) 2004 Nitin Jyoti, Arun Pratap, Suresh Golconda ;-) 00002 00003 #ifndef CAJUN_SIGNAL_SENSOR_OBSERVERS_H 00004 #define CAJUN_SIGNAL_SENSOR_OBSERVERS_H 00005 00006 #include "timer.H" 00007 #include "queue_generator.H" 00008 #include "data_logger.H" 00009 #include "components.H" 00010 #include "simulated_object.H" 00011 00012 namespace cajun 00013 { 00014 class signal_line_observer_t; 00015 class simulated_object_t; 00016 00018 class signal_line_sensor_t : public components_t 00019 { 00020 #define DELAY_SIGNAL 0.1 00021 friend class signal_line_observer_t; 00022 public: 00023 signal_line_sensor_t (simulated_object_t *parent, timer_t *timer); 00024 virtual ~signal_line_sensor_t (); 00025 signal_line_data_t * update_signal_line_data (); 00026 00027 double get_estop_pause (); 00028 double get_estop_kill (); 00029 double get_engine_on (); 00030 double get_generator_on (); 00031 double get_collision (); 00032 00033 // inherited functions 00034 void update_position (dBodyID carb ) { }; 00035 void command (int cmd, double value ) { }; 00036 void simulate_component (dBodyID carb) { }; 00037 private: 00038 simulated_object_t *m_robot; 00039 signal_line_data_t m_signal_line_data; 00040 signal_line_observer_t *m_signal_line_observer; 00041 }; 00042 00044 00045 class signal_line_observer_t : public timer_t::observer_t 00046 { 00047 public: 00048 signal_line_observer_t (signal_line_sensor_t *m, double interval_v); 00049 virtual ~signal_line_observer_t (); 00050 bool timeout (double currTime); 00051 private: 00052 signal_line_sensor_t * m_signal_line_sensor; 00053 }; 00054 }; 00055 #endif