mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-08-07 02:38:52 +00:00
Cleanup signal enabled flags
This commit is contained in:
@@ -342,7 +342,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
||||
const std::string rtcm_dump_filename = d_dump_filename;
|
||||
if (conf_.flag_rtcm_server || conf_.flag_rtcm_tty_port || conf_.rtcm_output_file_enabled)
|
||||
{
|
||||
d_rtcm_printer = std::make_unique<Rtcm_Printer>(rtcm_dump_filename, conf_.rtcm_output_file_enabled, conf_.flag_rtcm_server, conf_.flag_rtcm_tty_port, conf_.rtcm_tcp_port, conf_.rtcm_station_id, conf_.rtcm_dump_devname, true, conf_.rtcm_output_file_path);
|
||||
d_rtcm_printer = std::make_unique<Rtcm_Printer>(rtcm_dump_filename, conf_.rtcm_output_file_enabled, conf_.flag_rtcm_server, conf_.flag_rtcm_tty_port, conf_.rtcm_tcp_port, conf_.rtcm_station_id, conf_.rtcm_dump_devname, d_signal_enabled_flags, true, conf_.rtcm_output_file_path);
|
||||
std::map<int, int> rtcm_msg_rate_ms = conf_.rtcm_msg_rate_ms;
|
||||
if (rtcm_msg_rate_ms.find(1019) != rtcm_msg_rate_ms.end())
|
||||
{
|
||||
@@ -2431,7 +2431,6 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
|
||||
d_rtcm_printer->Print_Rtcm_Messages(d_user_pvt_solver.get(),
|
||||
d_gnss_observables_map,
|
||||
d_rx_time,
|
||||
d_signal_enabled_flags,
|
||||
rtcm_MSM_enabled,
|
||||
rtcm_MT1019_enabled,
|
||||
rtcm_MT1020_enabled,
|
||||
|
||||
@@ -35,7 +35,6 @@
|
||||
#include "gps_navigation_message.h"
|
||||
#include "gps_utc_model.h"
|
||||
#include "rtklib_solver.h"
|
||||
#include "signal_enabled_flags.h"
|
||||
#include <boost/date_time/gregorian/gregorian.hpp>
|
||||
#include <boost/date_time/local_time/local_time.hpp>
|
||||
#include <boost/date_time/time_zone_base.hpp>
|
||||
@@ -1930,13 +1929,13 @@ Rinex_Printer::Rinex_Printer(uint32_t signal_enabled_flags,
|
||||
int version,
|
||||
bool pre_2009_file) : observationType(getObservationTypes()),
|
||||
observationCode(getObservationCodes()),
|
||||
d_flags(signal_enabled_flags),
|
||||
d_version(get_version(signal_enabled_flags, version)),
|
||||
d_stringVersion(d_version == 2 ? "2.11" : "3.02"), // Only version 2.11 and 3.02
|
||||
d_fake_cnav_iode(1),
|
||||
d_rinex_header_updated(false),
|
||||
d_rinex_header_written(false),
|
||||
d_pre_2009_file(pre_2009_file),
|
||||
d_signal_enabled_flags(signal_enabled_flags),
|
||||
navfilename(getNavFilePath(signal_enabled_flags, d_version, base_name, base_rinex_path)),
|
||||
obsfilename(getFilePath("RINEX_FILE_TYPE_OBS", base_name, base_rinex_path)),
|
||||
navGlofilename(getFilePath("RINEX_FILE_TYPE_GLO_NAV", base_name, base_rinex_path)),
|
||||
@@ -2023,16 +2022,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
const auto glonass_gnav_ephemeris_iter = pvt_solver->glonass_gnav_ephemeris_map.cbegin();
|
||||
const auto beidou_dnav_ephemeris_iter = pvt_solver->beidou_dnav_ephemeris_map.cbegin();
|
||||
|
||||
const Signal_Enabled_Flags flags(d_signal_enabled_flags);
|
||||
const auto signal = enabled_signal_flags_to_string(flags);
|
||||
const auto has_gps = flags.check_any_enabled(GPS_1C, GPS_2S, GPS_L5);
|
||||
const auto has_galileo = flags.check_any_enabled(GAL_1B, GAL_E5a, GAL_E5b, GAL_E6);
|
||||
const auto has_glonass = flags.check_any_enabled(GLO_1G, GLO_2G);
|
||||
const auto has_beidou = flags.check_any_enabled(BDS_B1, BDS_B3);
|
||||
const auto only_galileo = has_galileo && !(has_gps || has_glonass || has_beidou);
|
||||
const auto only_glonass = has_glonass && !(has_gps || has_galileo || has_beidou);
|
||||
const auto only_beidou = has_beidou && !(has_gps || has_galileo || has_glonass);
|
||||
|
||||
const auto signal = enabled_signal_flags_to_string(d_flags);
|
||||
const bool has_gps_lnav_eph = !pvt_solver->gps_ephemeris_map.empty();
|
||||
const bool has_gps_cnav_eph = !pvt_solver->gps_cnav_ephemeris_map.empty();
|
||||
const bool has_galileo_eph = !pvt_solver->galileo_ephemeris_map.empty();
|
||||
@@ -2043,52 +2033,52 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
{
|
||||
bool rinex_header_written = true;
|
||||
|
||||
if (flags.check_only_enabled(GPS_1C) && has_gps_lnav_eph)
|
||||
if (d_flags.check_only_enabled(GPS_1C) && has_gps_lnav_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_ephemeris_iter->second, rx_time);
|
||||
rinex_nav_header(navFile, pvt_solver->gps_iono, pvt_solver->gps_utc_model, gps_ephemeris_iter->second);
|
||||
}
|
||||
else if ((flags.check_only_enabled(GPS_2S) || flags.check_only_enabled(GPS_L5)) && has_gps_cnav_eph)
|
||||
else if ((d_flags.check_only_enabled(GPS_2S) || d_flags.check_only_enabled(GPS_L5)) && has_gps_cnav_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_cnav_ephemeris_iter->second, rx_time, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->gps_cnav_iono, pvt_solver->gps_cnav_utc_model);
|
||||
}
|
||||
else if (only_galileo && has_galileo_eph)
|
||||
else if (d_flags.only_galileo && has_galileo_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, galileo_ephemeris_iter->second, rx_time, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->galileo_iono, pvt_solver->galileo_utc_model);
|
||||
}
|
||||
else if (only_glonass && has_glonass_eph)
|
||||
else if (d_flags.only_glonass && has_glonass_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, glonass_gnav_ephemeris_iter->second, rx_time, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->glonass_gnav_utc_model, glonass_gnav_ephemeris_iter->second);
|
||||
}
|
||||
else if (only_beidou && has_beidou_dnav_eph)
|
||||
else if (d_flags.only_beidou && has_beidou_dnav_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, beidou_dnav_ephemeris_iter->second, rx_time, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->beidou_dnav_iono, pvt_solver->beidou_dnav_utc_model);
|
||||
}
|
||||
else if ((flags.check_only_enabled(GPS_1C, GPS_2S) ||
|
||||
flags.check_only_enabled(GPS_1C, GPS_L5) ||
|
||||
flags.check_only_enabled(GPS_1C, GPS_2S, GPS_L5)) &&
|
||||
else if ((d_flags.check_only_enabled(GPS_1C, GPS_2S) ||
|
||||
d_flags.check_only_enabled(GPS_1C, GPS_L5) ||
|
||||
d_flags.check_only_enabled(GPS_1C, GPS_2S, GPS_L5)) &&
|
||||
has_gps_lnav_eph && has_gps_cnav_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_ephemeris_iter->second, gps_cnav_ephemeris_iter->second, rx_time, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->gps_iono, pvt_solver->gps_utc_model, gps_ephemeris_iter->second);
|
||||
}
|
||||
else if ((flags.check_only_enabled(GPS_1C, GAL_1B) || flags.check_only_enabled(GPS_1C, GAL_E5a) || flags.check_only_enabled(GPS_1C, GAL_E5b)) &&
|
||||
else if ((d_flags.check_only_enabled(GPS_1C, GAL_1B) || d_flags.check_only_enabled(GPS_1C, GAL_E5a) || d_flags.check_only_enabled(GPS_1C, GAL_E5b)) &&
|
||||
has_gps_lnav_eph && has_galileo_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_ephemeris_iter->second, galileo_ephemeris_iter->second, rx_time, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->gps_iono, pvt_solver->gps_utc_model, gps_ephemeris_iter->second, pvt_solver->galileo_iono, pvt_solver->galileo_utc_model);
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_L5, GAL_E5a) &&
|
||||
else if (d_flags.check_only_enabled(GPS_L5, GAL_E5a) &&
|
||||
has_gps_cnav_eph && has_galileo_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_cnav_ephemeris_iter->second, galileo_ephemeris_iter->second, rx_time, signal, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->gps_cnav_iono, pvt_solver->gps_cnav_utc_model, pvt_solver->galileo_iono, pvt_solver->galileo_utc_model);
|
||||
}
|
||||
else if ((flags.check_only_enabled(GPS_1C, GLO_1G) || flags.check_only_enabled(GPS_1C, GLO_2G) || flags.check_only_enabled(GPS_1C, GLO_1G, GLO_2G)) &&
|
||||
else if ((d_flags.check_only_enabled(GPS_1C, GLO_1G) || d_flags.check_only_enabled(GPS_1C, GLO_2G) || d_flags.check_only_enabled(GPS_1C, GLO_1G, GLO_2G)) &&
|
||||
has_gps_lnav_eph && has_glonass_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_ephemeris_iter->second, glonass_gnav_ephemeris_iter->second, rx_time, signal);
|
||||
@@ -2103,32 +2093,32 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
output_navfilename.push_back(navGlofilename);
|
||||
}
|
||||
}
|
||||
else if ((flags.check_only_enabled(GLO_1G, GPS_2S) || flags.check_only_enabled(GLO_2G, GPS_2S)) &&
|
||||
else if ((d_flags.check_only_enabled(GLO_1G, GPS_2S) || d_flags.check_only_enabled(GLO_2G, GPS_2S)) &&
|
||||
has_gps_cnav_eph && has_glonass_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_cnav_ephemeris_iter->second, glonass_gnav_ephemeris_iter->second, rx_time, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->gps_cnav_iono, pvt_solver->gps_cnav_utc_model, pvt_solver->glonass_gnav_utc_model);
|
||||
}
|
||||
else if ((flags.check_only_enabled(GAL_1B, GLO_1G) || flags.check_only_enabled(GAL_1B, GLO_2G)) &&
|
||||
else if ((d_flags.check_only_enabled(GAL_1B, GLO_1G) || d_flags.check_only_enabled(GAL_1B, GLO_2G)) &&
|
||||
has_galileo_eph && has_glonass_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, galileo_ephemeris_iter->second, glonass_gnav_ephemeris_iter->second, rx_time, signal, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->galileo_iono, pvt_solver->galileo_utc_model, pvt_solver->glonass_gnav_utc_model);
|
||||
}
|
||||
else if ((flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a) ||
|
||||
flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a, GAL_E6) ||
|
||||
flags.check_only_enabled(GPS_1C, GAL_1B, GPS_2S, GPS_L5, GAL_E5a)) &&
|
||||
else if ((d_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a) ||
|
||||
d_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a, GAL_E6) ||
|
||||
d_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_2S, GPS_L5, GAL_E5a)) &&
|
||||
has_gps_lnav_eph && has_gps_cnav_eph && has_galileo_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_ephemeris_iter->second, gps_cnav_ephemeris_iter->second, galileo_ephemeris_iter->second, rx_time, signal, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->gps_iono, pvt_solver->gps_utc_model, gps_ephemeris_iter->second, pvt_solver->galileo_iono, pvt_solver->galileo_utc_model);
|
||||
}
|
||||
else if ((flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E5a) || flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E5b)) && has_gps_lnav_eph && has_galileo_eph)
|
||||
else if ((d_flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E5a) || d_flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E5b)) && has_gps_lnav_eph && has_galileo_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, gps_ephemeris_iter->second, galileo_ephemeris_iter->second, rx_time, signal);
|
||||
rinex_nav_header(navFile, pvt_solver->gps_iono, pvt_solver->gps_utc_model, gps_ephemeris_iter->second, pvt_solver->galileo_iono, pvt_solver->galileo_utc_model);
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_1C, GAL_E6) && has_gps_lnav_eph)
|
||||
else if (d_flags.check_only_enabled(GPS_1C, GAL_E6) && has_gps_lnav_eph)
|
||||
{
|
||||
if (has_galileo_eph)
|
||||
{
|
||||
@@ -2143,7 +2133,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
rinex_nav_header(navFile, pvt_solver->gps_iono, pvt_solver->gps_utc_model, gps_ephemeris_iter->second);
|
||||
}
|
||||
}
|
||||
else if (has_beidou && has_beidou_dnav_eph)
|
||||
else if (d_flags.has_beidou && has_beidou_dnav_eph)
|
||||
{
|
||||
rinex_obs_header(obsFile, beidou_dnav_ephemeris_iter->second, rx_time, signal);
|
||||
// Not implemented for beidou
|
||||
@@ -2155,7 +2145,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
|
||||
if (rinex_header_written)
|
||||
{
|
||||
if (has_gps_lnav_eph && !flags.check_any_enabled(GPS_L5)) // That's how it used to be, not sure why
|
||||
if (has_gps_lnav_eph && !d_flags.check_any_enabled(GPS_L5)) // That's how it used to be, not sure why
|
||||
{
|
||||
log_rinex_nav(navFile, pvt_solver->gps_ephemeris_map);
|
||||
}
|
||||
@@ -2190,14 +2180,14 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
|
||||
if (d_rinex_header_written && flag_write_RINEX_obs_output) // The header is already written, we can now log the navigation message data
|
||||
{
|
||||
const auto constel_signal_flags = get_constel_signal_flags(flags);
|
||||
const auto constel_signal_flags = get_constel_signal_flags(d_flags);
|
||||
const auto constel_observables = get_constellation_observables_map(constel_signal_flags, gnss_observables_map);
|
||||
|
||||
double seconds;
|
||||
boost::posix_time::ptime system_time;
|
||||
|
||||
// Order is important
|
||||
if (flags.check_any_enabled(GPS_1C))
|
||||
if (d_flags.check_any_enabled(GPS_1C))
|
||||
{
|
||||
if (has_gps_lnav_eph)
|
||||
{
|
||||
@@ -2205,7 +2195,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
seconds = fmod(rx_time, 60);
|
||||
}
|
||||
}
|
||||
else if (has_gps)
|
||||
else if (d_flags.has_gps)
|
||||
{
|
||||
if (has_gps_cnav_eph)
|
||||
{
|
||||
@@ -2213,7 +2203,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
seconds = fmod(rx_time, 60);
|
||||
}
|
||||
}
|
||||
else if (has_galileo)
|
||||
else if (d_flags.has_galileo)
|
||||
{
|
||||
if (has_galileo_eph)
|
||||
{
|
||||
@@ -2221,7 +2211,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
seconds = fmod(rx_time, 60);
|
||||
}
|
||||
}
|
||||
else if (has_glonass)
|
||||
else if (d_flags.has_glonass)
|
||||
{
|
||||
if (has_glonass_eph)
|
||||
{
|
||||
@@ -2230,7 +2220,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
seconds = modf(rx_time, &int_sec) + system_time.time_of_day().seconds();
|
||||
}
|
||||
}
|
||||
else if (has_beidou)
|
||||
else if (d_flags.has_beidou)
|
||||
{
|
||||
if (has_beidou_dnav_eph)
|
||||
{
|
||||
@@ -2246,19 +2236,19 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
|
||||
std::vector<std::string> constellations;
|
||||
|
||||
if (has_gps)
|
||||
if (d_flags.has_gps)
|
||||
{
|
||||
constellations.emplace_back("GPS");
|
||||
}
|
||||
if (has_galileo)
|
||||
if (d_flags.has_galileo)
|
||||
{
|
||||
constellations.emplace_back("Galileo");
|
||||
}
|
||||
if (has_glonass)
|
||||
if (d_flags.has_glonass)
|
||||
{
|
||||
constellations.emplace_back("GLONASS");
|
||||
}
|
||||
if (has_beidou)
|
||||
if (d_flags.has_beidou)
|
||||
{
|
||||
constellations.emplace_back("Beidou");
|
||||
}
|
||||
@@ -2266,7 +2256,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
add_obs_epoch_record(obsFile, system_time, seconds, d_version, constel_observables);
|
||||
add_constellation_obs_sat_record_lines(obsFile, constellations, constel_observables, d_version);
|
||||
|
||||
if (flags.check_only_enabled(GPS_1C) && has_gps_lnav_eph)
|
||||
if (d_flags.check_only_enabled(GPS_1C) && has_gps_lnav_eph)
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0))
|
||||
{
|
||||
@@ -2275,7 +2265,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_1C, GPS_2S) && has_gps_lnav_eph && has_gps_cnav_eph)
|
||||
else if (d_flags.check_only_enabled(GPS_1C, GPS_2S) && has_gps_lnav_eph && has_gps_cnav_eph)
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0))
|
||||
{
|
||||
@@ -2284,7 +2274,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_1C, GPS_L5) && has_gps_lnav_eph && has_gps_cnav_eph)
|
||||
else if (d_flags.check_only_enabled(GPS_1C, GPS_L5) && has_gps_lnav_eph && has_gps_cnav_eph)
|
||||
{
|
||||
if (!d_rinex_header_updated && ((pvt_solver->gps_cnav_utc_model.A0 != 0) || (pvt_solver->gps_utc_model.A0 != 0)))
|
||||
{
|
||||
@@ -2301,7 +2291,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_2S) || flags.check_only_enabled(GPS_L5) || flags.check_only_enabled(GPS_2S, GPS_L5))
|
||||
else if (d_flags.check_only_enabled(GPS_2S) || d_flags.check_only_enabled(GPS_L5) || d_flags.check_only_enabled(GPS_2S, GPS_L5))
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_cnav_utc_model.A0 != 0))
|
||||
{
|
||||
@@ -2310,7 +2300,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_1C, GPS_2S, GPS_L5))
|
||||
else if (d_flags.check_only_enabled(GPS_1C, GPS_2S, GPS_L5))
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0) && (has_gps_lnav_eph))
|
||||
{
|
||||
@@ -2319,7 +2309,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if (only_galileo)
|
||||
else if (d_flags.only_galileo)
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->galileo_utc_model.A0 != 0))
|
||||
{
|
||||
@@ -2328,7 +2318,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if (only_glonass)
|
||||
else if (d_flags.only_glonass)
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->glonass_gnav_utc_model.d_tau_c != 0))
|
||||
{
|
||||
@@ -2336,7 +2326,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if (only_beidou)
|
||||
else if (d_flags.only_beidou)
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->beidou_dnav_utc_model.A0_UTC != 0))
|
||||
{
|
||||
@@ -2345,7 +2335,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if ((flags.check_only_enabled(GPS_1C, GAL_1B) || flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E6)) &&
|
||||
else if ((d_flags.check_only_enabled(GPS_1C, GAL_1B) || d_flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E6)) &&
|
||||
has_gps_lnav_eph && has_galileo_eph)
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0))
|
||||
@@ -2355,7 +2345,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if ((flags.check_only_enabled(GPS_1C, GLO_1G) || flags.check_only_enabled(GPS_1C, GLO_2G) || flags.check_only_enabled(GPS_1C, GLO_1G, GLO_2G)) &&
|
||||
else if ((d_flags.check_only_enabled(GPS_1C, GLO_1G) || d_flags.check_only_enabled(GPS_1C, GLO_2G) || d_flags.check_only_enabled(GPS_1C, GLO_1G, GLO_2G)) &&
|
||||
has_gps_lnav_eph && has_glonass_eph)
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0))
|
||||
@@ -2365,7 +2355,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true; // do not write header anymore
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_L5, GAL_E5a))
|
||||
else if (d_flags.check_only_enabled(GPS_L5, GAL_E5a))
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_cnav_utc_model.A0 != 0) && (pvt_solver->galileo_utc_model.A0 != 0))
|
||||
{
|
||||
@@ -2374,7 +2364,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true; // do not write header anymore
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GAL_1B, GLO_1G) || flags.check_only_enabled(GAL_1B, GLO_2G))
|
||||
else if (d_flags.check_only_enabled(GAL_1B, GLO_1G) || d_flags.check_only_enabled(GAL_1B, GLO_2G))
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->galileo_utc_model.A0 != 0))
|
||||
{
|
||||
@@ -2383,7 +2373,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true; // do not write header anymore
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_2S, GLO_1G) || flags.check_only_enabled(GPS_2S, GLO_2G))
|
||||
else if (d_flags.check_only_enabled(GPS_2S, GLO_1G) || d_flags.check_only_enabled(GPS_2S, GLO_2G))
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_cnav_utc_model.A0 != 0))
|
||||
{
|
||||
@@ -2392,7 +2382,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true; // do not write header anymore
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a))
|
||||
else if (d_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a))
|
||||
{
|
||||
if (has_gps_lnav_eph && has_gps_cnav_eph && has_galileo_eph)
|
||||
{
|
||||
@@ -2412,7 +2402,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E5a))
|
||||
else if (d_flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E5a))
|
||||
{
|
||||
if (has_gps_lnav_eph && has_galileo_eph)
|
||||
{
|
||||
@@ -2424,7 +2414,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a, GAL_E6) || flags.check_only_enabled(GPS_1C, GAL_1B, GPS_2S, GPS_L5, GAL_E5a))
|
||||
else if (d_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a, GAL_E6) || d_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_2S, GPS_L5, GAL_E5a))
|
||||
{
|
||||
if (!d_rinex_header_updated && (pvt_solver->gps_utc_model.A0 != 0) && (pvt_solver->galileo_utc_model.A0 != 0) && (has_gps_lnav_eph))
|
||||
{
|
||||
@@ -2433,7 +2423,7 @@ void Rinex_Printer::print_rinex_annotation(const Rtklib_Solver* pvt_solver,
|
||||
d_rinex_header_updated = true;
|
||||
}
|
||||
}
|
||||
else if (flags.check_only_enabled(GPS_1C, GAL_E6) && has_gps_lnav_eph)
|
||||
else if (d_flags.check_only_enabled(GPS_1C, GAL_E6) && has_gps_lnav_eph)
|
||||
{
|
||||
if (has_galileo_eph)
|
||||
{
|
||||
|
||||
@@ -38,6 +38,7 @@
|
||||
#ifndef GNSS_SDR_RINEX_PRINTER_H
|
||||
#define GNSS_SDR_RINEX_PRINTER_H
|
||||
|
||||
#include "signal_enabled_flags.h"
|
||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||
#include <cstdint> // for int32_t
|
||||
#include <cstdlib> // for strtol, strtod
|
||||
@@ -544,6 +545,8 @@ private:
|
||||
const std::map<std::string, std::string> observationType; // PSEUDORANGE, CARRIER_PHASE, DOPPLER, SIGNAL_STRENGTH
|
||||
const std::map<std::string, std::string> observationCode; // GNSS observation descriptors
|
||||
|
||||
const Signal_Enabled_Flags d_flags;
|
||||
|
||||
const int d_version; // RINEX version (2 for 2.10/2.11 and 3 for 3.01)
|
||||
const std::string d_stringVersion; // RINEX version (2.10/2.11 or 3.01/3.02)
|
||||
|
||||
@@ -551,7 +554,6 @@ private:
|
||||
bool d_rinex_header_updated;
|
||||
bool d_rinex_header_written;
|
||||
const bool d_pre_2009_file;
|
||||
const uint32_t d_signal_enabled_flags;
|
||||
|
||||
const std::string navfilename; // Name of RINEX navigation file
|
||||
const std::string obsfilename; // Name of RINEX observation file
|
||||
|
||||
@@ -29,7 +29,6 @@
|
||||
#include "gps_ephemeris.h"
|
||||
#include "rtcm.h"
|
||||
#include "rtklib_solver.h"
|
||||
#include "signal_enabled_flags.h"
|
||||
#include <boost/exception/diagnostic_information.hpp>
|
||||
#include <ctime> // for tm
|
||||
#include <exception> // for exception
|
||||
@@ -52,13 +51,15 @@ Rtcm_Printer::Rtcm_Printer(const std::string& filename,
|
||||
uint16_t rtcm_tcp_port,
|
||||
uint16_t rtcm_station_id,
|
||||
const std::string& rtcm_dump_devname,
|
||||
uint32_t signal_enabled_flags,
|
||||
bool time_tag_name,
|
||||
const std::string& base_path) : rtcm_base_path(base_path),
|
||||
rtcm_devname(rtcm_dump_devname),
|
||||
port(rtcm_tcp_port),
|
||||
station_id(rtcm_station_id),
|
||||
d_rtcm_has_written_once(false),
|
||||
d_rtcm_file_dump(flag_rtcm_file_dump)
|
||||
d_rtcm_file_dump(flag_rtcm_file_dump),
|
||||
d_flags(signal_enabled_flags)
|
||||
{
|
||||
const boost::posix_time::ptime pt = boost::posix_time::second_clock::local_time();
|
||||
const tm timeinfo = boost::posix_time::to_tm(pt);
|
||||
@@ -226,7 +227,6 @@ Rtcm_Printer::~Rtcm_Printer()
|
||||
void Rtcm_Printer::Print_Rtcm_Messages(const Rtklib_Solver* pvt_solver,
|
||||
const std::map<int, Gnss_Synchro>& gnss_observables_map,
|
||||
double rx_time,
|
||||
uint32_t signal_enabled_flags,
|
||||
bool rtcm_MSM_enabled,
|
||||
bool rtcm_MT1019_enabled,
|
||||
bool rtcm_MT1020_enabled,
|
||||
@@ -242,33 +242,26 @@ void Rtcm_Printer::Print_Rtcm_Messages(const Rtklib_Solver* pvt_solver,
|
||||
{
|
||||
try
|
||||
{
|
||||
const Signal_Enabled_Flags flags(signal_enabled_flags);
|
||||
const auto has_gps = flags.check_any_enabled(GPS_1C, GPS_2S, GPS_L5);
|
||||
const auto has_galileo = flags.check_any_enabled(GAL_1B, GAL_E5a, GAL_E5b, GAL_E6);
|
||||
const auto has_glonass = flags.check_any_enabled(GLO_1G, GLO_2G);
|
||||
const auto has_beidou = flags.check_any_enabled(BDS_B1, BDS_B3);
|
||||
const auto only_galileo = has_galileo && !(has_gps || has_glonass || has_beidou);
|
||||
const auto only_glonass = has_glonass && !(has_gps || has_galileo || has_beidou);
|
||||
const auto print_MT1019 = (!d_rtcm_has_written_once && rtcm_MT1019_enabled) || flag_write_RTCM_1019_output;
|
||||
const auto print_MT1020 = (!d_rtcm_has_written_once && rtcm_MT1020_enabled) || flag_write_RTCM_1020_output;
|
||||
const auto print_MT1045 = (!d_rtcm_has_written_once && rtcm_MT1045_enabled) || flag_write_RTCM_1045_output;
|
||||
const auto print_MSM = (!d_rtcm_has_written_once && rtcm_MSM_enabled) || flag_write_RTCM_MSM_output;
|
||||
|
||||
if (print_MT1019 && flags.check_any_enabled(GPS_1C))
|
||||
if (print_MT1019 && d_flags.check_any_enabled(GPS_1C))
|
||||
{
|
||||
for (const auto& gps_eph_iter : pvt_solver->gps_ephemeris_map)
|
||||
{
|
||||
Print_Rtcm_MT1019(gps_eph_iter.second);
|
||||
}
|
||||
}
|
||||
if (print_MT1020 && has_glonass)
|
||||
if (print_MT1020 && d_flags.has_glonass)
|
||||
{
|
||||
for (const auto& glonass_gnav_eph_iter : pvt_solver->glonass_gnav_ephemeris_map)
|
||||
{
|
||||
Print_Rtcm_MT1020(glonass_gnav_eph_iter.second, pvt_solver->glonass_gnav_utc_model);
|
||||
}
|
||||
}
|
||||
if (print_MT1045 && has_galileo)
|
||||
if (print_MT1045 && d_flags.has_galileo)
|
||||
{
|
||||
for (const auto& gal_eph_iter : pvt_solver->galileo_ephemeris_map)
|
||||
{
|
||||
@@ -277,7 +270,7 @@ void Rtcm_Printer::Print_Rtcm_Messages(const Rtklib_Solver* pvt_solver,
|
||||
}
|
||||
if (print_MSM)
|
||||
{
|
||||
if (rtcm_MT1077_enabled && (flags.check_only_enabled(GPS_1C) || flags.check_only_enabled(GPS_1C, GAL_E6)))
|
||||
if (rtcm_MT1077_enabled && (d_flags.check_only_enabled(GPS_1C) || d_flags.check_only_enabled(GPS_1C, GAL_E6)))
|
||||
{
|
||||
const auto gps_eph_iter = pvt_solver->gps_ephemeris_map.cbegin();
|
||||
if (gps_eph_iter != pvt_solver->gps_ephemeris_map.cend())
|
||||
@@ -285,7 +278,7 @@ void Rtcm_Printer::Print_Rtcm_Messages(const Rtklib_Solver* pvt_solver,
|
||||
Print_Rtcm_MSM(7, gps_eph_iter->second, {}, {}, {}, rx_time, gnss_observables_map, enable_rx_clock_correction, 0, 0, false, false);
|
||||
}
|
||||
}
|
||||
else if (rtcm_MT1077_enabled && (flags.check_only_enabled(GPS_1C, GPS_2S) || flags.check_only_enabled(GPS_1C, GPS_L5)))
|
||||
else if (rtcm_MT1077_enabled && (d_flags.check_only_enabled(GPS_1C, GPS_2S) || d_flags.check_only_enabled(GPS_1C, GPS_L5)))
|
||||
{
|
||||
const auto gps_eph_iter = pvt_solver->gps_ephemeris_map.cbegin();
|
||||
const auto gps_cnav_eph_iter = pvt_solver->gps_cnav_ephemeris_map.cbegin();
|
||||
@@ -294,7 +287,7 @@ void Rtcm_Printer::Print_Rtcm_Messages(const Rtklib_Solver* pvt_solver,
|
||||
Print_Rtcm_MSM(7, gps_eph_iter->second, gps_cnav_eph_iter->second, {}, {}, rx_time, gnss_observables_map, enable_rx_clock_correction, 0, 0, false, false);
|
||||
}
|
||||
}
|
||||
else if (rtcm_MT1097_enabled && only_galileo)
|
||||
else if (rtcm_MT1097_enabled && d_flags.only_galileo)
|
||||
{
|
||||
const auto gal_eph_iter = pvt_solver->galileo_ephemeris_map.cbegin();
|
||||
if (gal_eph_iter != pvt_solver->galileo_ephemeris_map.cend())
|
||||
@@ -302,7 +295,7 @@ void Rtcm_Printer::Print_Rtcm_Messages(const Rtklib_Solver* pvt_solver,
|
||||
Print_Rtcm_MSM(7, {}, {}, gal_eph_iter->second, {}, rx_time, gnss_observables_map, enable_rx_clock_correction, 0, 0, false, false);
|
||||
}
|
||||
}
|
||||
else if (rtcm_MT1087_enabled && only_glonass)
|
||||
else if (rtcm_MT1087_enabled && d_flags.only_glonass)
|
||||
{
|
||||
const auto glo_gnav_ephemeris_iter = pvt_solver->glonass_gnav_ephemeris_map.cbegin();
|
||||
if (glo_gnav_ephemeris_iter != pvt_solver->glonass_gnav_ephemeris_map.cend())
|
||||
@@ -317,10 +310,10 @@ void Rtcm_Printer::Print_Rtcm_Messages(const Rtklib_Solver* pvt_solver,
|
||||
auto gal_eph_iter = pvt_solver->galileo_ephemeris_map.cend();
|
||||
auto glonass_gnav_eph_iter = pvt_solver->glonass_gnav_ephemeris_map.cend();
|
||||
|
||||
bool search_gps_nav = flags.check_any_enabled(GPS_1C);
|
||||
bool search_gps_cnav = !search_gps_nav && flags.check_any_enabled(GPS_2S, GPS_L5);
|
||||
bool search_gal = has_galileo;
|
||||
bool search_glo = has_glonass;
|
||||
bool search_gps_nav = d_flags.check_any_enabled(GPS_1C);
|
||||
bool search_gps_cnav = !search_gps_nav && d_flags.check_any_enabled(GPS_2S, GPS_L5);
|
||||
bool search_gal = d_flags.has_galileo;
|
||||
bool search_glo = d_flags.has_glonass;
|
||||
|
||||
for (const auto& gnss_observables_iter : gnss_observables_map)
|
||||
{
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#ifndef GNSS_SDR_RTCM_PRINTER_H
|
||||
#define GNSS_SDR_RTCM_PRINTER_H
|
||||
|
||||
#include "signal_enabled_flags.h"
|
||||
#include <cstdint> // for int32_t
|
||||
#include <fstream> // for std::ofstream
|
||||
#include <map> // for std::map
|
||||
@@ -58,6 +59,7 @@ public:
|
||||
uint16_t rtcm_tcp_port,
|
||||
uint16_t rtcm_station_id,
|
||||
const std::string& rtcm_dump_devname,
|
||||
uint32_t signal_enabled_flags,
|
||||
bool time_tag_name = true,
|
||||
const std::string& base_path = ".");
|
||||
|
||||
@@ -72,7 +74,6 @@ public:
|
||||
void Print_Rtcm_Messages(const Rtklib_Solver* pvt_solver,
|
||||
const std::map<int, Gnss_Synchro>& gnss_observables_map,
|
||||
double rx_time,
|
||||
uint32_t signal_enabled_flags,
|
||||
bool rtcm_MSM_enabled,
|
||||
bool rtcm_MT1019_enabled,
|
||||
bool rtcm_MT1020_enabled,
|
||||
@@ -201,6 +202,7 @@ private:
|
||||
uint16_t station_id;
|
||||
bool d_rtcm_has_written_once;
|
||||
bool d_rtcm_file_dump;
|
||||
const Signal_Enabled_Flags d_flags;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -54,11 +54,19 @@ uint32_t flags_from_config(const ConfigurationInterface* configuration)
|
||||
} // namespace
|
||||
|
||||
|
||||
Signal_Enabled_Flags::Signal_Enabled_Flags(const ConfigurationInterface* configuration) : flags(flags_from_config(configuration))
|
||||
Signal_Enabled_Flags::Signal_Enabled_Flags(const ConfigurationInterface* configuration) : Signal_Enabled_Flags(flags_from_config(configuration))
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
Signal_Enabled_Flags::Signal_Enabled_Flags(uint32_t flags_) : flags(flags_)
|
||||
Signal_Enabled_Flags::Signal_Enabled_Flags(uint32_t flags_) : flags(flags_),
|
||||
has_gps(check_any_enabled(GPS_1C, GPS_2S, GPS_L5)),
|
||||
has_galileo(check_any_enabled(GAL_1B, GAL_E5a, GAL_E5b, GAL_E6)),
|
||||
has_glonass(check_any_enabled(GLO_1G, GLO_2G)),
|
||||
has_beidou(check_any_enabled(BDS_B1, BDS_B3)),
|
||||
only_gps(has_gps && !(has_galileo || has_glonass || has_beidou)),
|
||||
only_galileo(has_galileo && !(has_gps || has_glonass || has_beidou)),
|
||||
only_glonass(has_glonass && !(has_gps || has_galileo || has_beidou)),
|
||||
only_beidou(has_beidou && !(has_gps || has_galileo || has_glonass))
|
||||
{
|
||||
}
|
||||
|
||||
@@ -67,6 +67,16 @@ public:
|
||||
}
|
||||
|
||||
const uint32_t flags;
|
||||
|
||||
const bool has_gps;
|
||||
const bool has_galileo;
|
||||
const bool has_glonass;
|
||||
const bool has_beidou;
|
||||
|
||||
const bool only_gps;
|
||||
const bool only_galileo;
|
||||
const bool only_glonass;
|
||||
const bool only_beidou;
|
||||
};
|
||||
|
||||
#endif // GNSS_SDR_SIGNAL_ENABLED_FLAGS_H
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include "gnss_sdr_make_unique.h"
|
||||
#include "rtcm_printer.h"
|
||||
#include "signal_enabled_flags.h"
|
||||
#include <string>
|
||||
|
||||
|
||||
@@ -29,7 +30,7 @@ TEST(RtcmPrinterTest, Instantiate)
|
||||
bool rtcm_file_output_enabled = false;
|
||||
unsigned short rtcm_tcp_port = 2101;
|
||||
unsigned short rtcm_station_id = 1234;
|
||||
auto RTCM_printer = std::make_unique<Rtcm_Printer>(filename, rtcm_file_output_enabled, flag_rtcm_server, flag_rtcm_tty_port, rtcm_tcp_port, rtcm_station_id, rtcm_dump_devname);
|
||||
auto RTCM_printer = std::make_unique<Rtcm_Printer>(filename, rtcm_file_output_enabled, flag_rtcm_server, flag_rtcm_tty_port, rtcm_tcp_port, rtcm_station_id, rtcm_dump_devname, GPS_1C);
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +44,7 @@ TEST(RtcmPrinterTest, Run)
|
||||
unsigned short rtcm_tcp_port = 2101;
|
||||
unsigned short rtcm_station_id = 1234;
|
||||
|
||||
auto RTCM_printer = std::make_unique<Rtcm_Printer>(filename, rtcm_file_output_enabled, flag_rtcm_server, flag_rtcm_tty_port, rtcm_tcp_port, rtcm_station_id, rtcm_dump_devname);
|
||||
auto RTCM_printer = std::make_unique<Rtcm_Printer>(filename, rtcm_file_output_enabled, flag_rtcm_server, flag_rtcm_tty_port, rtcm_tcp_port, rtcm_station_id, rtcm_dump_devname, GPS_1C);
|
||||
|
||||
std::string reference_msg = "D300133ED7D30202980EDEEF34B4BD62AC0941986F33360B98";
|
||||
|
||||
|
||||
Reference in New Issue
Block a user