00001
00002
00003
00004
00005
00006 #ifndef CAJUN_AEVIT_H
00007 #define CAJUN_AEVIT_H
00008
00009 #include "aevit_frame.H"
00010
00011 namespace cajun
00012 {
00013 class input_buffer_t;
00014
00015 class aevit_t
00016 {
00017 public:
00018 aevit_t ();
00019 ~aevit_t ();
00020
00021 void handle_input (int fd_);
00022
00023 class observer_t
00024 {
00025 public:
00026 enum message_t
00027 {
00028 STATUS_OK,
00029 STATUS_FULL_BUFFER,
00030 STATUS_GARBAGE_DATA
00031 };
00032
00033 virtual ~observer_t () {}
00034
00035 virtual void publish_status (double tstamp_, message_t msg_) {}
00036 virtual void publish_data () {}
00037 virtual void steering (double tstamp_, unsigned value_) {}
00038 virtual void throttle (double tstamp_, unsigned value_) {}
00039 virtual void set_bot_speed (double speed_) {}
00040 virtual void set_generic_integer (unsigned value_) {}
00041 virtual void set_command_value (unsigned value_) {}
00042 virtual void set_vehicle_data (bool coil_pulse_, bool brake_lights_, bool park_lights_,
00043 bool steering_servo_engaged_, bool remote_off_switch_,
00044 bool throttle_clutch_engaged_) {}
00045 virtual void set_ignition_status (bool ignition_) {}
00046 virtual void set_battery_voltage (double battery_1_, double battery_2_) {}
00047 virtual void set_timestamp_for_vehicle_data (double tstamp_) {}
00048
00049 };
00050
00051 void register_observer (observer_t *observer)
00052 { m_observer = observer; }
00053 protected:
00054 bool m_garbage_data;
00055 input_buffer_t *m_ib;
00056 observer_t *m_observer;
00057 void extract_data (aevit::frame_t &frame_);
00058 };
00059
00060
00061 };
00062
00063
00064 #endif