1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-09-06 04:47:59 +00:00

Merge branch 'refactor/cleanup-receiver-type' of https://github.com/MathieuFavreau/gnss-sdr into MathieuFavreau-refactor/cleanup-receiver-type

This commit is contained in:
Carles Fernandez
2025-05-11 10:02:59 +02:00
4 changed files with 429 additions and 330 deletions

View File

@@ -10,12 +10,14 @@ if(USE_CMAKE_TARGET_SOURCES)
target_sources(pvt_adapters
PRIVATE
rtklib_pvt.cc
receiver_type.cc
PUBLIC
rtklib_pvt.h
receiver_type.h
)
else()
source_group(Headers FILES rtklib_pvt.h)
add_library(pvt_adapters rtklib_pvt.cc rtklib_pvt.h)
source_group(Headers FILES rtklib_pvt.h receiver_type.h)
add_library(pvt_adapters rtklib_pvt.cc rtklib_pvt.h receiver_type.h receiver_type.cc)
endif()
target_link_libraries(pvt_adapters

View File

@@ -0,0 +1,274 @@
/*!
* \file receiver_type.cc
* \brief Helper function to get the receiver type
* \author Mathieu Favreau, 2025. favreau.mathieu(at)hotmail.com
*
* -----------------------------------------------------------------------------
*
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR.
*
* Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later
*
* -----------------------------------------------------------------------------
*/
#include "receiver_type.h"
#include "configuration_interface.h" // for ConfigurationInterface
#include <vector> // for vector
Signal_Enabled_Flags::Signal_Enabled_Flags(const ConfigurationInterface* configuration) : flags_(0)
{
const std::vector<std::pair<uint32_t, std::string>> signal_flag_to_prop = {
{GPS_1C, "Channels_1C.count"},
{GPS_2S, "Channels_2S.count"},
{GPS_L5, "Channels_L5.count"},
{GAL_1B, "Channels_1B.count"},
{GAL_E5a, "Channels_5X.count"},
{GAL_E5b, "Channels_7X.count"},
{GAL_E6, "Channels_E6.count"},
{GLO_1G, "Channels_1G.count"},
{GLO_2G, "Channels_2G.count"},
{BDS_B1, "Channels_B1.count"},
{BDS_B3, "Channels_B3.count"}};
for (const auto& [flag, prop] : signal_flag_to_prop)
{
const auto enabled = configuration->property(prop, 0) > 0;
if (enabled)
{
flags_ |= flag;
}
}
}
uint32_t get_type_of_receiver(const Signal_Enabled_Flags& signal_enabled_flags)
{
if (signal_enabled_flags.check_only_enabled(GPS_1C))
{
return 1; // GPS L1 C/A
}
if (signal_enabled_flags.check_only_enabled(GPS_2S))
{
return 2; // GPS L2C
}
if (signal_enabled_flags.check_only_enabled(GPS_L5))
{
return 3; // L5
}
if (signal_enabled_flags.check_only_enabled(GAL_1B))
{
return 4; // E1
}
if (signal_enabled_flags.check_only_enabled(GAL_E5a))
{
return 5; // E5a
}
if (signal_enabled_flags.check_only_enabled(GAL_E5b))
{
return 6; // E5b
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GPS_2S))
{
return 7; // GPS L1 C/A + GPS L2C
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GPS_L5))
{
return 8; // L1+L5
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_1B))
{
return 9; // L1+E1
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_E5a))
{
return 10; // GPS L1 C/A + Galileo E5a
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_E5b))
{
return 11; // GPS L1 C/A + Galileo E5b
}
if (signal_enabled_flags.check_only_enabled(GPS_2S, GAL_1B))
{
return 12; // Galileo E1B + GPS L2C
}
if (signal_enabled_flags.check_only_enabled(GPS_L5, GAL_E5a))
{
return 13; // L5+E5a
}
if (signal_enabled_flags.check_only_enabled(GAL_1B, GAL_E5a))
{
return 14; // Galileo E1B + Galileo E5a
}
if (signal_enabled_flags.check_only_enabled(GAL_1B, GAL_E5b))
{
return 15; // Galileo E1B + Galileo E5b
}
if (signal_enabled_flags.check_only_enabled(GPS_2S, GPS_L5))
{
return 16; // GPS L2C + GPS L5
}
if (signal_enabled_flags.check_only_enabled(GPS_2S, GAL_E5a))
{
return 17; // GPS L2C + Galileo E5a
}
if (signal_enabled_flags.check_only_enabled(GPS_2S, GAL_E5b))
{
return 18; // GPS L2C + Galileo E5b
}
if (signal_enabled_flags.check_only_enabled(GAL_E5a, GAL_E5b))
{
return 19; // Galileo E5a + Galileo E5b
}
if (signal_enabled_flags.check_only_enabled(GPS_L5, GAL_E5b))
{
return 20; // GPS L5 + Galileo E5b
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_2S))
{
return 21; // GPS L1 C/A + Galileo E1B + GPS L2C
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5))
{
return 22; // GPS L1 C/A + Galileo E1B + GPS L5
}
if (signal_enabled_flags.check_only_enabled(GLO_1G))
{
return 23; // GLONASS L1 C/A
}
if (signal_enabled_flags.check_only_enabled(GLO_2G))
{
return 24; // GLONASS L2 C/A
}
if (signal_enabled_flags.check_only_enabled(GLO_1G, GLO_2G))
{
return 25; // GLONASS L1 C/A + GLONASS L2 C/A
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GLO_1G))
{
return 26; // GPS L1 C/A + GLONASS L1 C/A
}
if (signal_enabled_flags.check_only_enabled(GAL_1B, GLO_1G))
{
return 27; // Galileo E1B + GLONASS L1 C/A
}
if (signal_enabled_flags.check_only_enabled(GPS_2S, GLO_1G))
{
return 28; // GPS L2C + GLONASS L1 C/A
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GLO_2G))
{
return 29; // GPS L1 C/A + GLONASS L2 C/A
}
if (signal_enabled_flags.check_only_enabled(GAL_1B, GLO_2G))
{
return 30; // Galileo E1B + GLONASS L2 C/A
}
if (signal_enabled_flags.check_only_enabled(GPS_2S, GLO_2G))
{
return 31; // GPS L2C + GLONASS L2 C/A
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a))
{
return 32; // L1+E1+L5+E5a
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E5a))
{
return 33; // L1+E1+E5a
}
// Galileo E6
if (signal_enabled_flags.check_only_enabled(GAL_E6))
{
return 100; // Galileo E6B
}
if (signal_enabled_flags.check_only_enabled(GAL_1B, GAL_E6))
{
return 101; // Galileo E1B + Galileo E6B
}
if (signal_enabled_flags.check_only_enabled(GAL_E5a, GAL_E6))
{
return 102; // Galileo E5a + Galileo E6B
}
if (signal_enabled_flags.check_only_enabled(GAL_E5b, GAL_E6))
{
return 103; // Galileo E5b + Galileo E6B
}
if (signal_enabled_flags.check_only_enabled(GAL_1B, GAL_E5a, GAL_E6))
{
return 104; // Galileo E1B + Galileo E5a + Galileo E6B
}
if (signal_enabled_flags.check_only_enabled(GAL_1B, GAL_E5b, GAL_E6))
{
return 105; // Galileo E1B + Galileo E5b + Galileo E6B
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_1B, GAL_E6))
{
return 106; // GPS L1 C/A + Galileo E1B + Galileo E6B
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_E6))
{
return 107; // GPS L1 C/A + Galileo E6B
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_L5, GAL_E5a, GAL_E6))
{
return 108; // GPS L1 C/A + Galileo E1B + GPS L5 + Galileo E5a + Galileo E6B
}
// BeiDou B1I Receiver
if (signal_enabled_flags.check_only_enabled(BDS_B1))
{
return 500; // Beidou B1I
}
if (signal_enabled_flags.check_only_enabled(BDS_B1, GPS_1C))
{
return 501; // Beidou B1I + GPS L1 C/A
}
if (signal_enabled_flags.check_only_enabled(BDS_B1, GAL_1B))
{
return 502; // Beidou B1I + Galileo E1B
}
if (signal_enabled_flags.check_only_enabled(BDS_B1, GLO_1G))
{
return 503; // Beidou B1I + GLONASS L1 C/A
}
if (signal_enabled_flags.check_only_enabled(BDS_B1, GPS_1C, GAL_1B))
{
return 504; // Beidou B1I + GPS L1 C/A + Galileo E1B
}
if (signal_enabled_flags.check_only_enabled(BDS_B1, GPS_1C, GLO_1G, GAL_1B))
{
return 505; // Beidou B1I + GPS L1 C/A + GLONASS L1 C/A + Galileo E1B
}
if (signal_enabled_flags.check_only_enabled(BDS_B1, BDS_B3))
{
return 506; // Beidou B1I + Beidou B3I
}
// BeiDou B3I Receiver
if (signal_enabled_flags.check_only_enabled(BDS_B3))
{
return 600; // Beidou B3I
}
if (signal_enabled_flags.check_only_enabled(BDS_B3, GPS_2S))
{
return 601; // Beidou B3I + GPS L2C
}
if (signal_enabled_flags.check_only_enabled(BDS_B3, GLO_2G))
{
return 602; // Beidou B3I + GLONASS L2 C/A
}
if (signal_enabled_flags.check_only_enabled(BDS_B3, GPS_2S, GLO_2G))
{
return 603; // Beidou B3I + GPS L2C + GLONASS L2 C/A
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GPS_2S, GPS_L5))
{
return 1000; // GPS L1 + GPS L2C + GPS L5
}
if (signal_enabled_flags.check_only_enabled(GPS_1C, GAL_1B, GPS_2S, GPS_L5, GAL_E5a))
{
return 1001; // GPS L1 + Galileo E1B + GPS L2C + GPS L5 + Galileo E5a
}
return 0;
}

View File

@@ -0,0 +1,128 @@
/*!
* \file receiver_type.h
* \brief Helper function to get the receiver type
* \author Mathieu Favreau, 2025. favreau.mathieu(at)hotmail.com
*
* -----------------------------------------------------------------------------
*
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
* This file is part of GNSS-SDR.
*
* Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
* SPDX-License-Identifier: GPL-3.0-or-later
*
* -----------------------------------------------------------------------------
*/
#ifndef GNSS_SDR_RECEIVER_TYPE_H
#define GNSS_SDR_RECEIVER_TYPE_H
#include <cstdint>
class ConfigurationInterface;
enum signal_flag : uint32_t
{
GPS_1C = 0x1 << 0,
GPS_2S = 0x1 << 1,
GPS_L5 = 0x1 << 2,
GAL_1B = 0x1 << 3,
GAL_E5a = 0x1 << 4,
GAL_E5b = 0x1 << 5,
GAL_E6 = 0x1 << 6,
GLO_1G = 0x1 << 7,
GLO_2G = 0x1 << 8,
BDS_B1 = 0x1 << 9,
BDS_B3 = 0x1 << 10
};
class Signal_Enabled_Flags
{
public:
explicit Signal_Enabled_Flags(const ConfigurationInterface* configuration);
template <typename... Args>
bool check_only_enabled(const Args&... args) const
{
return (flags_ ^ (args | ...)) == 0;
}
template <typename... Args>
bool check_any_enabled(const Args&... args) const
{
return (flags_ & (args | ...)) > 0;
}
private:
uint32_t flags_;
};
// Infer the type of receiver
/*
* TYPE | RECEIVER
* 0 | Unknown
* 1 | GPS L1 C/A
* 2 | GPS L2C
* 3 | GPS L5
* 4 | Galileo E1B
* 5 | Galileo E5a
* 6 | Galileo E5b
* 7 | GPS L1 C/A + GPS L2C
* 8 | GPS L1 C/A + GPS L5
* 9 | GPS L1 C/A + Galileo E1B
* 10 | GPS L1 C/A + Galileo E5a
* 11 | GPS L1 C/A + Galileo E5b
* 12 | Galileo E1B + GPS L2C
* 13 | Galileo E5a + GPS L5
* 14 | Galileo E1B + Galileo E5a
* 15 | Galileo E1B + Galileo E5b
* 16 | GPS L2C + GPS L5
* 17 | GPS L2C + Galileo E5a
* 18 | GPS L2C + Galileo E5b
* 19 | Galileo E5a + Galileo E5b
* 20 | GPS L5 + Galileo E5b
* 21 | GPS L1 C/A + Galileo E1B + GPS L2C
* 22 | GPS L1 C/A + Galileo E1B + GPS L5
* 23 | GLONASS L1 C/A
* 24 | GLONASS L2 C/A
* 25 | GLONASS L1 C/A + GLONASS L2 C/A
* 26 | GPS L1 C/A + GLONASS L1 C/A
* 27 | Galileo E1B + GLONASS L1 C/A
* 28 | GPS L2C + GLONASS L1 C/A
* 29 | GPS L1 C/A + GLONASS L2 C/A
* 30 | Galileo E1B + GLONASS L2 C/A
* 31 | GPS L2C + GLONASS L2 C/A
* 32 | GPS L1 C/A + Galileo E1B + GPS L5 + Galileo E5a
* 33 | GPS L1 C/A + Galileo E1B + Galileo E5a
*
* Skipped previous values to avoid overlapping
* 100 | Galileo E6B
* 101 | Galileo E1B + Galileo E6B
* 102 | Galileo E5a + Galileo E6B
* 103 | Galileo E5b + Galileo E6B
* 104 | Galileo E1B + Galileo E5a + Galileo E6B
* 105 | Galileo E1B + Galileo E5b + Galileo E6B
* 106 | GPS L1 C/A + Galileo E1B + Galileo E6B
* 107 | GPS L1 C/A + Galileo E6B
* 108 | GPS L1 C/A + Galileo E1B + GPS L5 + Galileo E5a + Galileo E6B
* Skipped previous values to avoid overlapping
* 500 | BeiDou B1I
* 501 | BeiDou B1I + GPS L1 C/A
* 502 | BeiDou B1I + Galileo E1B
* 503 | BeiDou B1I + GLONASS L1 C/A
* 504 | BeiDou B1I + GPS L1 C/A + Galileo E1B
* 505 | BeiDou B1I + GPS L1 C/A + GLONASS L1 C/A + Galileo E1B
* 506 | BeiDou B1I + Beidou B3I
* Skipped previous values to avoid overlapping
* 600 | BeiDou B3I
* 601 | BeiDou B3I + GPS L2C
* 602 | BeiDou B3I + GLONASS L2 C/A
* 603 | BeiDou B3I + GPS L2C + GLONASS L2 C/A
*
* 1000 | GPS L1 C/A + GPS L2C + GPS L5
* 1001 | GPS L1 C/A + Galileo E1B + GPS L2C + GPS L5 + Galileo E5a
*/
uint32_t get_type_of_receiver(const Signal_Enabled_Flags& signal_enabled_flags);
#endif // GNSS_SDR_RECEIVER_TYPE_H

View File

@@ -16,18 +16,17 @@
#include "rtklib_pvt.h"
#include "MATH_CONSTANTS.h" // for D2R
#include "configuration_interface.h" // for ConfigurationInterface
#include "galileo_almanac.h" // for Galileo_Almanac
#include "galileo_ephemeris.h" // for Galileo_Ephemeris
#include "gnss_sdr_flags.h" // for FLAGS_RINEX_version
#include "gnss_sdr_string_literals.h" // for std::string_literals
#include "gps_almanac.h" // for Gps_Almanac
#include "gps_ephemeris.h" // for Gps_Ephemeris
#include "pvt_conf.h" // for Pvt_Conf
#include "rtklib_rtkpos.h" // for rtkfree, rtkinit
#include <iostream> // for std::cout
#include <utility> // for std::move
#include "MATH_CONSTANTS.h" // for D2R
#include "configuration_interface.h" // for ConfigurationInterface
#include "galileo_almanac.h" // for Galileo_Almanac
#include "galileo_ephemeris.h" // for Galileo_Ephemeris
#include "gnss_sdr_flags.h" // for FLAGS_RINEX_version
#include "gps_almanac.h" // for Gps_Almanac
#include "gps_ephemeris.h" // for Gps_Ephemeris
#include "pvt_conf.h" // for Pvt_Conf
#include "receiver_type.h" // for get_type_of_receiver
#include "rtklib_rtkpos.h" // for rtkfree, rtkinit
#include <iostream> // for std::cout
#if USE_GLOG_AND_GFLAGS
#include <glog/logging.h>
#else
@@ -186,312 +185,8 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
pvt_output_parameters.nmea_rate_ms = bc::lcm(configuration->property(role + ".nmea_rate_ms", pvt_output_parameters.nmea_rate_ms), pvt_output_parameters.output_rate_ms);
pvt_output_parameters.an_rate_ms = configuration->property(role + ".an_rate_ms", pvt_output_parameters.an_rate_ms);
// Infer the type of receiver
/*
* TYPE | RECEIVER
* 0 | Unknown
* 1 | GPS L1 C/A
* 2 | GPS L2C
* 3 | GPS L5
* 4 | Galileo E1B
* 5 | Galileo E5a
* 6 | Galileo E5b
* 7 | GPS L1 C/A + GPS L2C
* 8 | GPS L1 C/A + GPS L5
* 9 | GPS L1 C/A + Galileo E1B
* 10 | GPS L1 C/A + Galileo E5a
* 11 | GPS L1 C/A + Galileo E5b
* 12 | Galileo E1B + GPS L2C
* 13 | Galileo E5a + GPS L5
* 14 | Galileo E1B + Galileo E5a
* 15 | Galileo E1B + Galileo E5b
* 16 | GPS L2C + GPS L5
* 17 | GPS L2C + Galileo E5a
* 18 | GPS L2C + Galileo E5b
* 19 | Galileo E5a + Galileo E5b
* 20 | GPS L5 + Galileo E5b
* 21 | GPS L1 C/A + Galileo E1B + GPS L2C
* 22 | GPS L1 C/A + Galileo E1B + GPS L5
* 23 | GLONASS L1 C/A
* 24 | GLONASS L2 C/A
* 25 | GLONASS L1 C/A + GLONASS L2 C/A
* 26 | GPS L1 C/A + GLONASS L1 C/A
* 27 | Galileo E1B + GLONASS L1 C/A
* 28 | GPS L2C + GLONASS L1 C/A
* 29 | GPS L1 C/A + GLONASS L2 C/A
* 30 | Galileo E1B + GLONASS L2 C/A
* 31 | GPS L2C + GLONASS L2 C/A
* 32 | GPS L1 C/A + Galileo E1B + GPS L5 + Galileo E5a
* 33 | GPS L1 C/A + Galileo E1B + Galileo E5a
*
* Skipped previous values to avoid overlapping
* 100 | Galileo E6B
* 101 | Galileo E1B + Galileo E6B
* 102 | Galileo E5a + Galileo E6B
* 103 | Galileo E5b + Galileo E6B
* 104 | Galileo E1B + Galileo E5a + Galileo E6B
* 105 | Galileo E1B + Galileo E5b + Galileo E6B
* 106 | GPS L1 C/A + Galileo E1B + Galileo E6B
* 107 | GPS L1 C/A + Galileo E6B
* Skipped previous values to avoid overlapping
* 500 | BeiDou B1I
* 501 | BeiDou B1I + GPS L1 C/A
* 502 | BeiDou B1I + Galileo E1B
* 503 | BeiDou B1I + GLONASS L1 C/A
* 504 | BeiDou B1I + GPS L1 C/A + Galileo E1B
* 505 | BeiDou B1I + GPS L1 C/A + GLONASS L1 C/A + Galileo E1B
* 506 | BeiDou B1I + Beidou B3I
* Skipped previous values to avoid overlapping
* 600 | BeiDou B3I
* 601 | BeiDou B3I + GPS L2C
* 602 | BeiDou B3I + GLONASS L2 C/A
* 603 | BeiDou B3I + GPS L2C + GLONASS L2 C/A
* 604 | BeiDou B3I + GPS L1 C/A
* 605 | BeiDou B3I + Galileo E1B
* 606 | BeiDou B3I + GLONASS L1 C/A
* 607 | BeiDou B3I + GPS L1 C/A + Galileo E1B
* 608 | BeiDou B3I + GPS L1 C/A + Galileo E1B + BeiDou B1I
* 609 | BeiDou B3I + GPS L1 C/A + Galileo E1B + GLONASS L1 C/A
* 610 | BeiDou B3I + GPS L1 C/A + Galileo E1B + GLONASS L1 C/A + BeiDou B1I
*
* 1000 | GPS L1 C/A + GPS L2C + GPS L5
* 1001 | GPS L1 C/A + Galileo E1B + GPS L2C + GPS L5 + Galileo E5a
*/
const int gps_1C_count = configuration->property("Channels_1C.count", 0);
const int gps_2S_count = configuration->property("Channels_2S.count", 0);
const int gps_L5_count = configuration->property("Channels_L5.count", 0);
const int gal_1B_count = configuration->property("Channels_1B.count", 0);
const int gal_E5a_count = configuration->property("Channels_5X.count", 0);
const int gal_E5b_count = configuration->property("Channels_7X.count", 0);
const int gal_E6_count = configuration->property("Channels_E6.count", 0);
const int glo_1G_count = configuration->property("Channels_1G.count", 0);
const int glo_2G_count = configuration->property("Channels_2G.count", 0);
const int bds_B1_count = configuration->property("Channels_B1.count", 0);
const int bds_B3_count = configuration->property("Channels_B3.count", 0);
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 1; // L1
}
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 2; // GPS L2C
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 3; // L5
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 4; // E1
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 5; // E5a
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 6;
}
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 7; // GPS L1 C/A + GPS L2C
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 8; // L1+L5
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 9; // L1+E1
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 10; // GPS L1 C/A + Galileo E5a
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 11;
}
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 12; // Galileo E1B + GPS L2C
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 13; // L5+E5a
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 14; // Galileo E1B + Galileo E5a
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 15;
}
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 16; // GPS L2C + GPS L5
}
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 17; // GPS L2C + Galileo E5a
}
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 18; // GPS L2C + Galileo E5b
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count != 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 19; // Galileo E5a + Galileo E5b
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 20; // GPS L5 + Galileo E5b
}
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 21; // GPS L1 C/A + Galileo E1B + GPS L2C
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 22; // GPS L1 C/A + Galileo E1B + GPS L5
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count != 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 23; // GLONASS L1 C/A
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 24; // GLONASS L2 C/A
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count != 0) && (glo_2G_count != 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 25; // GLONASS L1 C/A + GLONASS L2 C/A
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 26; // GPS L1 C/A + GLONASS L1 C/A
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 27; // Galileo E1B + GLONASS L1 C/A
}
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 28; // GPS L2C + GLONASS L1 C/A
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 29; // GPS L1 C/A + GLONASS L2 C/A
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 30; // Galileo E1B + GLONASS L2 C/A
}
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 31; // GPS L2C + GLONASS L2 C/A
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 32; // L1+E1+L5+E5a
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 33; // L1+E1+E5a
}
// Galileo E6
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 100; // Galileo E6B
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 101; // Galileo E1B + Galileo E6B
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 102; // Galileo E5a + Galileo E6B
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 103; // Galileo E5b + Galileo E6B
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 104; // Galileo E1B + Galileo E5a + Galileo E6B
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count != 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 105; // Galileo E1B + Galileo E5b + Galileo E6B
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 106; // GPS L1 C/A + Galileo E1B + Galileo E6B
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 107; // GPS L1 C/A + Galileo E6B
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count != 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count != 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 108; // GPS L1 C/A + Galileo E1B + GPS L5 + Galileo E5a + Galileo E6B
}
// BeiDou B1I Receiver
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 500; // Beidou B1I
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 501; // Beidou B1I + GPS L1 C/A
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 502; // Beidou B1I + Galileo E1B
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count != 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 503; // Beidou B1I + GLONASS L1 C/A
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 504; // Beidou B1I + GPS L1 C/A + Galileo E1B
}
if ((gps_1C_count != 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count != 0) && (glo_2G_count == 0) && (bds_B1_count != 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 505; // Beidou B1I + GPS L1 C/A + GLONASS L1 C/A + Galileo E1B
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count != 0) && (bds_B3_count != 0))
{
pvt_output_parameters.type_of_receiver = 506; // Beidou B1I + Beidou B3I
}
// BeiDou B3I Receiver
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count != 0))
{
pvt_output_parameters.type_of_receiver = 600; // Beidou B3I
}
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count != 0))
{
pvt_output_parameters.type_of_receiver = 601; // Beidou B3I + GPS L2C
}
if ((gps_1C_count == 0) && (gps_2S_count == 0) && (gps_L5_count == 0) && (gal_1B_count != 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count != 0) && (bds_B1_count == 0) && (bds_B3_count != 0))
{
pvt_output_parameters.type_of_receiver = 602; // Beidou B3I + GLONASS L2 C/A
}
if ((gps_1C_count == 0) && (gps_2S_count != 0) && (gps_L5_count == 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count != 0) && (glo_2G_count != 0) && (bds_B1_count == 0) && (bds_B3_count != 0))
{
pvt_output_parameters.type_of_receiver = 603; // Beidou B3I + GPS L2C + GLONASS L2 C/A
}
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count != 0) && (gal_1B_count == 0) && (gal_E5a_count == 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 1000; // GPS L1 + GPS L2C + GPS L5
}
if ((gps_1C_count != 0) && (gps_2S_count != 0) && (gps_L5_count != 0) && (gal_1B_count != 0) && (gal_E5a_count != 0) && (gal_E5b_count == 0) && (gal_E6_count == 0) && (glo_1G_count == 0) && (glo_2G_count == 0) && (bds_B1_count == 0) && (bds_B3_count == 0))
{
pvt_output_parameters.type_of_receiver = 1001; // GPS L1 + Galileo E1B + GPS L2C + GPS L5 + Galileo E5a
}
const Signal_Enabled_Flags signal_enabled_flags(configuration);
pvt_output_parameters.type_of_receiver = get_type_of_receiver(signal_enabled_flags);
// RTKLIB PVT solver options
// Settings 1
@@ -532,23 +227,23 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
int num_bands = 0;
if ((gps_1C_count > 0) || (gal_1B_count > 0) || (glo_1G_count > 0) || (bds_B1_count > 0))
if (signal_enabled_flags.check_any_enabled(GPS_1C, GAL_1B, GLO_1G, BDS_B1))
{
num_bands += 1;
}
if ((gps_2S_count > 0) || (glo_2G_count > 0) || (bds_B3_count > 0))
if (signal_enabled_flags.check_any_enabled(GPS_2S, GLO_2G, BDS_B3))
{
num_bands += 1;
}
if (gal_E6_count > 0)
if (signal_enabled_flags.check_any_enabled(GAL_E6))
{
num_bands += 1;
}
if ((gal_E5a_count > 0) || (gps_L5_count > 0))
if (signal_enabled_flags.check_any_enabled(GAL_E5a, GPS_L5))
{
num_bands += 1;
}
if (gal_E5b_count > 0)
if (signal_enabled_flags.check_any_enabled(GAL_E5b))
{
num_bands += 1;
}
@@ -672,19 +367,19 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
const int earth_tide = configuration->property(role + ".earth_tide", 0);
int nsys = 0;
if ((gps_1C_count > 0) || (gps_2S_count > 0) || (gps_L5_count > 0))
if (signal_enabled_flags.check_any_enabled(GPS_1C, GPS_2S, GPS_L5))
{
nsys += SYS_GPS;
}
if ((gal_1B_count > 0) || (gal_E5a_count > 0) || (gal_E5b_count > 0) || (gal_E6_count > 0))
if (signal_enabled_flags.check_any_enabled(GAL_1B, GAL_E5a, GAL_E5b, GAL_E6))
{
nsys += SYS_GAL;
}
if ((glo_1G_count > 0) || (glo_2G_count > 0))
if (signal_enabled_flags.check_any_enabled(GLO_1G, GLO_2G))
{
nsys += SYS_GLO;
}
if ((bds_B1_count > 0) || (bds_B3_count > 0))
if (signal_enabled_flags.check_any_enabled(BDS_B1, BDS_B3))
{
nsys += SYS_BDS;
}
@@ -921,7 +616,7 @@ Rtklib_Pvt::Rtklib_Pvt(const ConfigurationInterface* configuration,
pvt_output_parameters.use_unhealthy_sats = configuration->property(role + ".use_unhealthy_sats", pvt_output_parameters.use_unhealthy_sats);
// OSNMA
if (gal_1B_count > 0)
if (signal_enabled_flags.check_any_enabled(GAL_1B) > 0)
{
std::string osnma_mode = configuration->property("GNSS-SDR.osnma_mode", std::string(""));
bool enable_osnma = configuration->property("GNSS-SDR.osnma_enable", true);