diff --git a/config/config.json b/config/config.json index f7d7ea9..55ef912 100644 --- a/config/config.json +++ b/config/config.json @@ -175,7 +175,8 @@ "library_path": "@/dll_source.dll", "function_name": "adsb_read", "data_type": "BIN_Blank_Text", - "buffer_size": 200000 + "buffer_size": 200000, + "use_system_time": true }, { "type": "File_Data_Source", @@ -195,7 +196,8 @@ "keep_mode": true, "file_path": "D:\\ae\\proj\\projects\\ECAP_Server\\data\\BIN_Blank_Text\\ADS-B_195_0205.txt", "data_type": "BIN_Blank_Text", - "play_mode": "loop" + "play_mode": "loop", + "use_system_time": true } ] }, diff --git a/module/Local_Server/Data_Source/Data_Source.h b/module/Local_Server/Data_Source/Data_Source.h index af6f81d..ffe32ca 100644 --- a/module/Local_Server/Data_Source/Data_Source.h +++ b/module/Local_Server/Data_Source/Data_Source.h @@ -59,6 +59,7 @@ public: double lat{}; double lon{}; double alt{}; + Psc::Copyable_Atomic use_system_time; // 如果启用那么收到消息会自动使用操作系统的时间解析位置, 应对时间戳错的情况 Psc::Copyable_Atomic update_form_gps{}; Psc::Copyable_Atomic show_icao = true; Psc::Copyable_Atomic show_call_sign = false; diff --git a/module/Local_Server/Data_Source/Data_Source_Handler.cpp b/module/Local_Server/Data_Source/Data_Source_Handler.cpp index 1d912d8..d553419 100644 --- a/module/Local_Server/Data_Source/Data_Source_Handler.cpp +++ b/module/Local_Server/Data_Source/Data_Source_Handler.cpp @@ -182,8 +182,9 @@ void Data_Source_Handler::handle_mode_s(std::shared_ptr mode_s_ auto& cfg = Global::instance()->mode_acs; bool time_space_filter = cfg.time_space_filter.load(); bool speed_filter = cfg.speed_filter.load(); - SSR::ADS_B_T::Constraint air_constraint{cfg.max_speed_m_s, cfg.air_pos_timeout, SSR::cpr_cb, time_space_filter, speed_filter}; - SSR::ADS_B_T::Constraint surface_constraint{cfg.max_speed_m_s, cfg.surface_pos_timeout, SSR::cpr_cb, time_space_filter, speed_filter}; + bool use_system_time = source->use_system_time.load(); + SSR::ADS_B_T::Constraint air_constraint{cfg.max_speed_m_s, cfg.air_pos_timeout, SSR::cpr_cb, time_space_filter, speed_filter, use_system_time}; + SSR::ADS_B_T::Constraint surface_constraint{cfg.max_speed_m_s, cfg.surface_pos_timeout, SSR::cpr_cb, time_space_filter, speed_filter, use_system_time}; SSR::parse_mode_s_bin(source.get(), mode_s_msg, source->base_station.get_pos(), air_constraint, surface_constraint);