00001
00002
00003
00004
00005 #ifndef CAJUN_IBEO_ALASCA_H
00006 #define CAJUN_IBEO_ALASCA_H
00007
00008
00009 #include "ibeo_object_data.H"
00010 #include "scan_msg.H"
00011
00012
00013 namespace cajun
00014 {
00015 class input_buffer_t;
00016
00017 using namespace ibeo;
00018
00019 class ibeo_alasca_t
00020 {
00021 public:
00022 ibeo_alasca_t ();
00023 ~ibeo_alasca_t ();
00024
00025 int create_tcp_socket ();
00026
00027 bool connect_tcp_interface (int ,char *, int);
00028
00029 void handle_input (int fd_);
00030 void debug (bool flag) { m_debug = flag; }
00031
00032 class observer_t
00033 {
00034 public:
00035 enum message_t
00036 {
00037 STATUS_OK,
00038 STATUS_FULL_BUFFER,
00039 STATUS_GARBAGE_DATA,
00040 UNKNOWN_MESSAGE_FORMAT,
00041 ERROR_DECODING_OBJECT_DATA,
00042 ERROR_DECODING_SCAN_DATA,
00043 };
00044
00045 virtual ~observer_t () {}
00046
00047 virtual void scan (double tstamp_, scan_msg_t const &msg_) {}
00048 virtual void ibeo_object (object_data_t ) {}
00049 virtual void publish_status (double tstamp_, message_t msg_) {}
00050 };
00051
00052 void register_observer (observer_t *observer)
00053 { m_observer = observer; }
00054
00055 protected:
00056 bool m_garbage_data;
00057 input_buffer_t *m_ib;
00058 observer_t *m_observer;
00059 bool m_debug;
00060
00061 object_data_t m_object_data;
00062
00063 static unsigned const BUFFER_SIZE = 103808;
00064
00065 bool decode_msg (msg_t const &msg_);
00066 };
00067
00068 };
00069 #endif