00001 // Copyright (C) 2003, 2004 Pablo Mejia 00002 00003 00004 #ifndef CAJUN_CNAV_H 00005 #define CAJUN_CNAV_H 00006 00007 #include "navcom_msg.H" 00008 00009 #include <vector> 00010 00011 00012 namespace cajun 00013 { 00014 00015 00016 class input_buffer_t; 00017 00018 00019 class cnav_t 00020 { 00021 public: 00022 cnav_t (); 00023 ~cnav_t (); 00024 00025 void handle_input (int fd); 00026 00027 class observer_t 00028 { 00029 public: 00030 enum cnav_message_t 00031 { 00032 STATUS_FULL_BUFFER, 00033 STATUS_GARBAGE_DATA, 00034 STATUS_OK 00035 }; 00036 00037 virtual ~observer_t () {} 00038 virtual void publish_status (double tstamp, 00039 unsigned status) {} 00040 virtual void log_raw_data (unsigned len, void const *msg) {} 00041 }; 00042 00043 void register_observer (observer_t *observer) 00044 { m_observer = observer; } 00045 00046 protected: 00047 input_buffer_t *m_ib; 00048 00049 double m_tstamp; 00050 observer_t *m_observer; 00051 bool m_garbage_data; 00052 }; 00053 00054 00055 }; 00056 00057 00058 #endif