00001 // Copyright (C) 2007 University of Louisiana at Lafayette 00002 // Authors: Suresh Golconda, Christopher Mire 00003 00004 #ifndef CAJUN_RADAR_DATA_COLLECTOR_H 00005 #define CAJUN_RADAR_DATA_COLLECTOR_H 00006 00007 #include "data_type.H" 00008 #include <vector> 00009 #include <map> 00010 00011 namespace cajun 00012 { 00013 struct radar_object_t 00014 { 00015 double data_tstamp; 00016 radar_data_t::target_t radar_target; 00017 }; 00018 00019 class radar_data_collector_t 00020 { 00021 public: 00022 radar_data_collector_t (); 00023 00024 void update_radar_data ( 00025 const std::vector<radar_data_t> &radar_data_, bool debug); 00026 00027 /*\brief Returns true if any lanes blocked and fills up the input 00028 * vector with all blockages of all blocked lanes information, else 00029 * returns * false */ 00030 bool get_all_objects ( 00031 std::vector<radar_object_t> &radar_data_, 00032 double threshold_tstamp_); 00033 //fixme: update to remove entries 00034 private: 00035 void update_radar_data (const radar_data_t &radar_data_, bool debug); 00036 void delete_if_exist (radar_object_t const &ro, bool debug); 00037 00038 00039 00040 //fixme: For efficiency reasons, it is better to change 00041 //radar_data_t to *radar_data_t, as its passed around 00042 //bunch of times 00043 typedef std::map<unsigned, radar_object_t> data_list_t; 00044 00045 data_list_t m_data_list; 00046 }; 00047 }; 00048 00049 00050 #endif