#ifndef _ANT_LIST_HPP_ #define _ANT_LIST_HPP_ #include #include #include #include #include #include #include "line.h" #include "point.h" struct path { line_v m_line; double m_slope=0; }; struct algo_config { const char*desc; int min_msg_cnt; int best_msg_cnt; int min_wait_time; int max_wait_time; }; struct ant { static algo_config g_config[]; int m_site_id; int m_algo; //TOF:0,TDOA:1 int m_num_dims; //1维:0,2维:1,3维:2 point m_position; std::vector m_path; int index()const; const algo_config&config()const; }; struct ant_list { std::vector m_ant_list; ant*get(uint32_t site_id,uint32_t ant_id) { return 0; } void load_from_db() { } static ant_list*instance(); }; struct site { std::vector m_ant_list; }; struct site_list { std::vector m_site_list; site*get(uint32_t site_id) { return 0; } void load_from_db() { } static site_list*instance(); }; struct loc_message { ant* m_ant; uint64_t m_num_ticks; //tof时间片或tdoa相对root时间 loc_message(); loc_message(ant*a,uint64_t num_ticks) :m_ant(a) ,m_num_ticks(num_ticks) {} int tool_index()const; }; struct loc_tool { virtual std::vector calc_location(const std::vector&locm)=0; virtual int index() { return -1; } virtual ~loc_tool(){} }; struct loc_tool_tdoa_3_base:loc_tool { virtual std::vector calc_location(const std::vector&locm); virtual int index(); }; struct loc_tool_tdoa_2_base:loc_tool { virtual std::vector calc_location(const std::vector&locm); virtual int index(); }; struct loc_tool_tdoa_1_base:loc_tool { virtual std::vector calc_location(const std::vector&locm); virtual int index(); }; struct loc_tool_tof_3_base:loc_tool { virtual std::vector calc_location(const std::vector&locm); virtual int index(); }; struct loc_tool_tof_2_base:loc_tool { virtual std::vector calc_location(const std::vector&locm); virtual int index(); }; struct loc_tool_tof_1_base:loc_tool { virtual std::vector calc_location(const std::vector&locm); virtual int index(); }; struct loc_tool_main:loc_tool { static loc_tool* g_tool[6]; loc_tool_main(); ~loc_tool_main(); static void set_tool(loc_tool*tool); std::vector calc_location(const std::vector&locm); }; #endif