123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- #ifndef _ANT_LIST_HPP_
- #define _ANT_LIST_HPP_
- #include <math.h>
- #include <array>
- #include <deque>
- #include <tuple>
- #include <memory>
- #include <algorithm>
- #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<path> m_path;
- int index()const;
- const algo_config&config()const;
- };
- struct ant_list
- {
- std::vector<ant*> 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<ant*> m_ant_list;
- };
- struct site_list
- {
- std::vector<site*> 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<point> calc_location(const std::vector<loc_message>&locm)=0;
- virtual int index()
- {
- return -1;
- }
- virtual ~loc_tool(){}
- };
- struct loc_tool_tdoa_3_base:loc_tool
- {
- virtual std::vector<point> calc_location(const std::vector<loc_message>&locm);
- virtual int index();
- };
- struct loc_tool_tdoa_2_base:loc_tool
- {
- virtual std::vector<point> calc_location(const std::vector<loc_message>&locm);
- virtual int index();
- };
- struct loc_tool_tdoa_1_base:loc_tool
- {
- virtual std::vector<point> calc_location(const std::vector<loc_message>&locm);
- virtual int index();
- };
- struct loc_tool_tof_3_base:loc_tool
- {
- virtual std::vector<point> calc_location(const std::vector<loc_message>&locm);
- virtual int index();
- };
- struct loc_tool_tof_2_base:loc_tool
- {
- virtual std::vector<point> calc_location(const std::vector<loc_message>&locm);
- virtual int index();
- };
- struct loc_tool_tof_1_base:loc_tool
- {
- virtual std::vector<point> calc_location(const std::vector<loc_message>&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<point> calc_location(const std::vector<loc_message>&locm);
- };
- #endif
|