1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-06-17 18:49:57 +00:00

Implement support of new GEO BeiDou satellites

Update tracking blocks to support PRN59...PRN63
Update telemetry decoder block to support PRN59...PRN63
Update RTKLIB to support PRN59...PRN63

Signed-off-by: Vladisslav P <vladisslav2011@gmail.com>
This commit is contained in:
Vladisslav P 2022-07-06 03:15:23 +03:00 committed by Vlad P
parent bcad6db988
commit 1153544fca
6 changed files with 12 additions and 12 deletions

View File

@ -284,7 +284,7 @@ void eph2pos(gtime_t time, const eph_t *eph, double *rs, double *dts,
cosi = cos(i);
/* beidou geo satellite (ref [9]) */
if (sys == SYS_BDS && prn <= 5)
if (sys == SYS_BDS && (prn <= 5 || prn > 58))
{
O = eph->OMG0 + eph->OMGd * tk - omge * eph->toes;
sinO = sin(O);

View File

@ -264,7 +264,7 @@ void beidou_b1i_telemetry_decoder_gs::decode_subframe(float *frame_symbols)
d_nav_msg_packet.nav_message = data_bits;
}
if (d_satellite.get_PRN() > 0 && d_satellite.get_PRN() < 6)
if ((d_satellite.get_PRN() > 0 && d_satellite.get_PRN() < 6) || d_satellite.get_PRN() > 58)
{
d_nav.d2_subframe_decoder(data_bits);
}
@ -339,7 +339,7 @@ void beidou_b1i_telemetry_decoder_gs::set_satellite(const Gnss_Satellite &satell
d_nav.set_signal_type(1); // BDS: data source (0:unknown,1:B1I,2:B1Q,3:B2I,4:B2Q,5:B3I,6:B3Q)
// Update tel dec parameters for D2 NAV Messages
if (sat_prn > 0 && sat_prn < 6)
if ((sat_prn > 0 && sat_prn < 6) || sat_prn > 58)
{
d_symbols_per_preamble = BEIDOU_DNAV_PREAMBLE_LENGTH_SYMBOLS;
d_samples_per_preamble = BEIDOU_DNAV_PREAMBLE_LENGTH_SYMBOLS;

View File

@ -356,7 +356,7 @@ void beidou_b3i_telemetry_decoder_gs::set_satellite(
d_nav.set_signal_type(5); // BDS: data source (0:unknown,1:B1I,2:B1Q,3:B2I,4:B2Q,5:B3I,6:B3Q)
// Update tel dec parameters for D2 NAV Messages
if (sat_prn > 0 && sat_prn < 6)
if ((sat_prn > 0 && sat_prn < 6) || sat_prn > 58)
{
d_symbols_per_preamble = BEIDOU_DNAV_PREAMBLE_LENGTH_SYMBOLS;
d_samples_per_preamble = BEIDOU_DNAV_PREAMBLE_LENGTH_SYMBOLS;

View File

@ -757,7 +757,7 @@ void dll_pll_veml_tracking::start_tracking()
{
beidou_b1i_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN, 0);
// GEO Satellites use different secondary code
if (d_acquisition_gnss_synchro->PRN > 0 and d_acquisition_gnss_synchro->PRN < 6)
if ((d_acquisition_gnss_synchro->PRN > 0 and d_acquisition_gnss_synchro->PRN < 6) or (d_acquisition_gnss_synchro->PRN > 58))
{
d_symbols_per_bit = BEIDOU_B1I_GEO_TELEMETRY_SYMBOLS_PER_BIT; // todo: enable after fixing beidou symbol synchronization
d_correlation_length_ms = 1;
@ -790,7 +790,7 @@ void dll_pll_veml_tracking::start_tracking()
{
beidou_b3i_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN, 0);
// Update secondary code settings for geo satellites
if (d_acquisition_gnss_synchro->PRN > 0 and d_acquisition_gnss_synchro->PRN < 6)
if ((d_acquisition_gnss_synchro->PRN > 0 and d_acquisition_gnss_synchro->PRN < 6) or (d_acquisition_gnss_synchro->PRN > 58))
{
d_symbols_per_bit = BEIDOU_B3I_GEO_TELEMETRY_SYMBOLS_PER_BIT; // todo: enable after fixing beidou symbol synchronization
d_correlation_length_ms = 1;

View File

@ -732,7 +732,7 @@ void kf_vtl_tracking::start_tracking()
{
beidou_b1i_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN, 0);
// GEO Satellites use different secondary code
if (d_acquisition_gnss_synchro->PRN > 0 and d_acquisition_gnss_synchro->PRN < 6)
if ((d_acquisition_gnss_synchro->PRN > 0 and d_acquisition_gnss_synchro->PRN < 6) or d_acquisition_gnss_synchro->PRN > 58)
{
d_symbols_per_bit = BEIDOU_B1I_GEO_TELEMETRY_SYMBOLS_PER_BIT; // todo: enable after fixing beidou symbol synchronization
d_correlation_length_ms = 1;
@ -765,7 +765,7 @@ void kf_vtl_tracking::start_tracking()
{
beidou_b3i_code_gen_float(d_tracking_code, d_acquisition_gnss_synchro->PRN, 0);
// Update secondary code settings for geo satellites
if (d_acquisition_gnss_synchro->PRN > 0 and d_acquisition_gnss_synchro->PRN < 6)
if ((d_acquisition_gnss_synchro->PRN > 0 and d_acquisition_gnss_synchro->PRN < 6) or d_acquisition_gnss_synchro->PRN > 58)
{
d_symbols_per_bit = BEIDOU_B3I_GEO_TELEMETRY_SYMBOLS_PER_BIT; // todo: enable after fixing beidou symbol synchronization
d_correlation_length_ms = 1;

View File

@ -27,11 +27,11 @@ Beidou_Dnav_Navigation_Message::Beidou_Dnav_Navigation_Message()
{
auto gnss_sat = Gnss_Satellite();
const std::string _system("Beidou");
for (uint32_t i = 1; i < 36; i++)
for (uint32_t i = 1; i < 64; i++)
{
satelliteBlock[i] = gnss_sat.what_block(_system, i);
}
for (uint32_t i = 1; i < 36; i++)
for (uint32_t i = 1; i < 64; i++)
{
almanacHealth[i] = 0;
}
@ -647,7 +647,7 @@ Beidou_Dnav_Ephemeris Beidou_Dnav_Navigation_Message::get_ephemeris() const
{
Beidou_Dnav_Ephemeris eph;
if (i_satellite_PRN > 0 and i_satellite_PRN < 6)
if ((i_satellite_PRN > 0 and i_satellite_PRN < 6) or i_satellite_PRN > 58)
{
std::bitset<BEIDOU_DNAV_SUBFRAME_DATA_BITS> subframe_bits;
@ -785,7 +785,7 @@ Beidou_Dnav_Utc_Model Beidou_Dnav_Navigation_Message::get_utc_model()
bool Beidou_Dnav_Navigation_Message::have_new_ephemeris() // Check if we have a new ephemeris stored in the galileo navigation class
{
if (i_satellite_PRN > 0 and i_satellite_PRN < 6)
if ((i_satellite_PRN > 0 and i_satellite_PRN < 6) or i_satellite_PRN > 58)
{
if ((flag_sf1_p1 == true) and (flag_sf1_p2 == true) and (flag_sf1_p3 == true) and
(flag_sf1_p4 == true) and (flag_sf1_p5 == true) and (flag_sf1_p6 == true) and