mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-14 20:20:35 +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:
parent
bcad6db988
commit
1153544fca
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user