From fcfc851aa562bdeaad5ab035dbe48efe124acd9e Mon Sep 17 00:00:00 2001 From: Carles Fernandez Date: Thu, 9 Nov 2023 08:53:29 +0100 Subject: [PATCH] Write HAS data file at PVT.output_path --- src/algorithms/PVT/adapters/rtklib_pvt.cc | 1 + .../PVT/gnuradio_blocks/rtklib_pvt_gs.cc | 2 +- src/algorithms/PVT/libs/pvt_conf.h | 1 + src/algorithms/PVT/libs/rinex_printer.cc | 33 ++++++------------- 4 files changed, 13 insertions(+), 24 deletions(-) diff --git a/src/algorithms/PVT/adapters/rtklib_pvt.cc b/src/algorithms/PVT/adapters/rtklib_pvt.cc index e03dcad5c..0e47e01f9 100644 --- a/src/algorithms/PVT/adapters/rtklib_pvt.cc +++ b/src/algorithms/PVT/adapters/rtklib_pvt.cc @@ -861,6 +861,7 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration, pvt_output_parameters.xml_output_path = configuration->property(role + ".xml_output_path", default_output_path); pvt_output_parameters.nmea_output_file_path = configuration->property(role + ".nmea_output_file_path", default_output_path); pvt_output_parameters.rtcm_output_file_path = configuration->property(role + ".rtcm_output_file_path", default_output_path); + pvt_output_parameters.has_output_file_path = configuration->property(role + ".has_output_file_path", default_output_path); // Read PVT MONITOR Configuration pvt_output_parameters.monitor_enabled = configuration->property(role + ".enable_monitor", false); diff --git a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc index 8e24687ba..ca63c6f31 100644 --- a/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc +++ b/src/algorithms/PVT/gnuradio_blocks/rtklib_pvt_gs.cc @@ -437,7 +437,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels, d_enable_has_messages = (((d_type_of_rx >= 100) && (d_type_of_rx < 109)) && (conf_.output_enabled)); if (d_enable_has_messages) { - d_has_simple_printer = std::make_unique(); + d_has_simple_printer = std::make_unique(conf_.has_output_file_path); } else { diff --git a/src/algorithms/PVT/libs/pvt_conf.h b/src/algorithms/PVT/libs/pvt_conf.h index 517465350..80f4494d5 100644 --- a/src/algorithms/PVT/libs/pvt_conf.h +++ b/src/algorithms/PVT/libs/pvt_conf.h @@ -46,6 +46,7 @@ public: std::string kml_output_path = std::string("."); std::string xml_output_path = std::string("."); std::string rtcm_output_file_path = std::string("."); + std::string has_output_file_path = std::string("."); std::string udp_addresses; std::string udp_eph_addresses; std::string log_source_timetag_file; diff --git a/src/algorithms/PVT/libs/rinex_printer.cc b/src/algorithms/PVT/libs/rinex_printer.cc index 7b17a4295..516403dbb 100644 --- a/src/algorithms/PVT/libs/rinex_printer.cc +++ b/src/algorithms/PVT/libs/rinex_printer.cc @@ -1253,30 +1253,17 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver, cons } break; case 108: // GPS L1 C/A + Galileo E1B + GPS L5 + Galileo E5a + Galileo E6B - if (gps_ephemeris_iter != pvt_solver->gps_ephemeris_map.cend()) + if ((galileo_ephemeris_iter != pvt_solver->galileo_ephemeris_map.cend()) and + (gps_ephemeris_iter != pvt_solver->gps_ephemeris_map.cend()) and + (gps_cnav_ephemeris_iter != pvt_solver->gps_cnav_ephemeris_map.cend())) { - if (galileo_ephemeris_iter != pvt_solver->galileo_ephemeris_map.cend()) - { - // we have Galileo ephemeris, maybe from assistance - log_rinex_obs(obsFile, gps_ephemeris_iter->second, galileo_ephemeris_iter->second, rx_time, gnss_observables_map); - if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0)) - { - update_obs_header(obsFile, pvt_solver->gps_utc_model); - update_nav_header(navMixFile, pvt_solver->gps_iono, pvt_solver->gps_utc_model, gps_ephemeris_iter->second, pvt_solver->galileo_iono, pvt_solver->galileo_utc_model); - d_rinex_header_updated = true; - } - } - else - { - // we do not have galileo ephemeris, print only GPS data - log_rinex_obs(obsFile, gps_ephemeris_iter->second, rx_time, gnss_observables_map); - if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0)) - { - update_obs_header(obsFile, pvt_solver->gps_utc_model); - update_nav_header(navFile, pvt_solver->gps_utc_model, pvt_solver->gps_iono, gps_ephemeris_iter->second); - d_rinex_header_updated = true; - } - } + log_rinex_obs(obsFile, gps_ephemeris_iter->second, gps_cnav_ephemeris_iter->second, galileo_ephemeris_iter->second, rx_time, gnss_observables_map, true); + } + if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0) && (pvt_solver->galileo_utc_model.A0 != 0) && (gps_ephemeris_iter != pvt_solver->gps_ephemeris_map.cend())) + { + update_obs_header(obsFile, pvt_solver->gps_utc_model); + update_nav_header(navMixFile, pvt_solver->gps_iono, pvt_solver->gps_utc_model, gps_ephemeris_iter->second, pvt_solver->galileo_iono, pvt_solver->galileo_utc_model); + d_rinex_header_updated = true; } break; case 500: // BDS B1I only