1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- #include "tdoa_sync.h"
- #include "sync_time/sync_time_message.h"
- #include "sync_manager.h"
- #include <log.h>
- #include <config_file.h>
- extern config_file config;
- struct tdoa_sync_impl:tdoa_sync
- {
- virtual void on_message(message_tdoasync&msg)
- {
- host_server::sync_time_message _sync_msg;
- _sync_msg.set_local_id((unsigned long long)(msg.m_local_site_id));
- _sync_msg.set_local_id((unsigned long long)((_sync_msg.get_local_id() << 8) + msg.m_local_ant_id));
- _sync_msg.set_upper_id((unsigned long long)(msg.m_parent_site_id));
- _sync_msg.set_upper_id((unsigned long long)((_sync_msg.get_upper_id() << 8) + msg.m_parent_ant_id));
- _sync_msg.set_root_id((unsigned long long)(msg.m_root_site_id));
- _sync_msg.set_root_id((unsigned long long)((_sync_msg.get_root_id() << 8) + msg.m_root_ant_id));
- _sync_msg.set_sync_num(msg.m_sync_num);
- _sync_msg.set_sync_level(msg.m_local_level);
- _sync_msg.set_local_send_time(msg.m_send_time);
- _sync_msg.set_local_receive_time(msg.m_recv_time);
-
- ssync_manager.analyze_sync_msg(_sync_msg);
- }
- virtual void translate(message_tdoa_locinfo& tdoa_msg)
- {
- host_server::tag_message _tag_msg;
- _tag_msg.m_receive_time = tdoa_msg.m_card_msg.m_loc_stamp;
- _tag_msg.m_local_id = host_server::sync_helper::parse_id((unsigned long long)tdoa_msg.m_site_msg.m_site_id, (unsigned long long)(tdoa_msg.m_card_msg.m_ant_id + 1));
- _tag_msg.m_sync_num = tdoa_msg.m_card_msg.m_time_stamp;
- // 线性插值后的值
- uint64_t ip_value = 0;
- // 线性插值类型
- int ip_type = config.get("service.interpolation", 0);
- switch(ip_type){
- case 0:
- ip_value = ssync_manager.cal_time_by_linear(_tag_msg);
- break;
- case 1:
- ip_value = ssync_manager.cal_time_by_inter_linear(_tag_msg);
- break;
- default:
- break;
- }
- if(0 == ip_value){
- ip_value = LONGLONG_MAX;
- }
-
- tdoa_msg.m_interpolation = ip_value;
- log_info("[tdoa] interpolation_info: card_id=%d, ct=%d, sync_num=%d, type=%d, value=%lld", tdoa_msg.m_card_msg.m_id, tdoa_msg.m_card_msg.m_time_stamp, tdoa_msg.m_card_msg.m_sync_num, ip_type, ip_value);
- }
- };
- tdoa_sync*tdoa_sync::instance()
- {
- static tdoa_sync_impl _impl;
- return &_impl;
- }
|