mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-10-08 00:31:50 +00:00
Update to new BeiDou PRN assignments
See http://www.beidou.gov.cn/yw/xwzx/202603/t20260320_29266.html
This commit is contained in:
@@ -1,7 +1,8 @@
|
||||
; BeiDou B2a (5D) file-input example: 8-bit signed real IF.
|
||||
; Tracks B2a_I (data) at 1 ms primary-code epochs; telemetry combines five
|
||||
; epochs per symbol and applies 64-ary LDPC(96,48) decoding and CRC-24Q.
|
||||
; GEO / BDS-2 (PRN 1-18 and 59-63) are not assigned B2a channels.
|
||||
; GEO PRNs 1-5 and 59-63 are excluded: GEO B2a decoding/PVT is not supported.
|
||||
; The 2026 reassignment places BDS-3 IGSO/MEO satellites at PRNs 6-8 and 11-14.
|
||||
;
|
||||
; PVT policy (B2a-only SPP):
|
||||
; - RTKLIB slot 0 holds 5D; satwavelen BDS frq2 stays B3, lam[0] is c/FREQ5.
|
||||
|
||||
@@ -2517,16 +2517,17 @@ void GNSSFlowgraph::set_signals_list()
|
||||
{
|
||||
if (signal_str == "1D")
|
||||
{
|
||||
if ((prn >= 1U && prn <= 5U) || (prn >= 59U && prn <= 63U))
|
||||
// The 2026-03-20 CSNO allocation adds B1C on GEO PRNs 1-4.
|
||||
if (prn == 5U || (prn >= 59U && prn <= 63U))
|
||||
{
|
||||
continue; // GEO satellites do not broadcast B1C (ICD section 3.1)
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (signal_str == "5D")
|
||||
{
|
||||
if ((prn >= 1U && prn <= 5U) || (prn >= 59U && prn <= 63U))
|
||||
{
|
||||
continue; // GEO satellites do not broadcast B2a RNSS (ICD §2)
|
||||
continue; // GEO B2a decoding/PVT is not supported.
|
||||
}
|
||||
}
|
||||
if (signal_str == "J5" && prn > QZSS_L5_MAX_PRN)
|
||||
|
||||
@@ -611,148 +611,125 @@ std::string Gnss_Satellite::what_block(const std::string& system_, uint32_t PRN_
|
||||
}
|
||||
if (system_ == "Beidou")
|
||||
{
|
||||
// Check https://en.wikipedia.org/wiki/List_of_BeiDou_satellites
|
||||
// Post-upgrade allocation announced by CSNO on 2026-03-20:
|
||||
// http://www.beidou.gov.cn/yw/xwzx/202603/t20260320_29266.html
|
||||
// These display labels describe that allocation, not historical recordings.
|
||||
// Signal processing must not infer orbit type or signal availability from them.
|
||||
switch (PRN_)
|
||||
{
|
||||
case 1:
|
||||
block_ = std::string("BeiDou-2 GEO01*"); // GEO 140.0°E; launched 2010/01/16 (Retired)
|
||||
block_ = std::string("BeiDou-3 GEO04"); // Former PRN 62; GEO 140.0 E
|
||||
break;
|
||||
case 2:
|
||||
block_ = std::string("BeiDou-2 GEO06"); // GEO 80°E; launched 2012/10/25
|
||||
block_ = std::string("BeiDou-3 GEO02"); // Former PRN 60; GEO 80 E
|
||||
break;
|
||||
case 3:
|
||||
block_ = std::string("BeiDou-2 GEO07"); // GEO 110.5°E; launched 2016/06/12
|
||||
block_ = std::string("BeiDou-3 GEO03"); // Former PRN 61; GEO 110.5 E
|
||||
break;
|
||||
case 4:
|
||||
block_ = std::string("BeiDou-2 GEO04"); // GEO 160.0°E; launched 2010/10/31
|
||||
break;
|
||||
case 5:
|
||||
block_ = std::string("BeiDou-2 GEO05"); // GEO 58.75°E; launched 2012/02/24
|
||||
block_ = std::string("BeiDou-3 GEO01"); // Former PRN 59; GEO 160 E
|
||||
break;
|
||||
case 6:
|
||||
block_ = std::string("BeiDou-2 IGSO01"); // 55° inclination IGSO 118°E; launched 2010/07/31
|
||||
block_ = std::string("BeiDou-3 IGSO01"); // Former PRN 38
|
||||
break;
|
||||
case 7:
|
||||
block_ = std::string("BeiDou-2 IGSO02"); // 55° inclination IGSO 118°E; launched 2010/12/17
|
||||
block_ = std::string("BeiDou-3 IGSO02"); // Former PRN 39
|
||||
break;
|
||||
case 8:
|
||||
block_ = std::string("BeiDou-2 IGSO03"); // 55° inclination IGSO 118°E; launched 2011/04/09
|
||||
block_ = std::string("BeiDou-3 IGSO03"); // Former PRN 40
|
||||
break;
|
||||
case 9:
|
||||
block_ = std::string("BeiDou-2 IGSO04"); // 55° inclination IGSO 95°E; launched 2011/07/27
|
||||
block_ = std::string("BeiDou-2 IGSO06"); // Former PRN 13
|
||||
break;
|
||||
case 10:
|
||||
block_ = std::string("BeiDou-2 IGSO05"); // 55° inclination IGSO 118°E; launched 2011/12/01
|
||||
block_ = std::string("BeiDou-2 IGSO07"); // Former PRN 16
|
||||
break;
|
||||
case 11:
|
||||
block_ = std::string("BeiDou-2 MEO03*"); // Slot A07; launched 2012/04/29 (Retired)
|
||||
block_ = std::string("BeiDou-3 MEO25"); // Former PRN 47
|
||||
break;
|
||||
case 12:
|
||||
block_ = std::string("BeiDou-2 MEO04*"); // Slot A08; launched 2012/04/29 (Retired)
|
||||
block_ = std::string("BeiDou-3 MEO26"); // Former PRN 48
|
||||
break;
|
||||
case 13:
|
||||
block_ = std::string("BeiDou-2 IGSO06"); // launched 2016/03/30
|
||||
block_ = std::string("BeiDou-3 MEO27"); // Former PRN 49; PRN 13 now identifies a MEO satellite
|
||||
break;
|
||||
case 14:
|
||||
block_ = std::string("BeiDou-2 MEO06*"); // launched 2012/09/19 (Retired)
|
||||
break;
|
||||
case 16:
|
||||
block_ = std::string("BeiDou-2 IGSO07"); // launched 2018/07/10
|
||||
break;
|
||||
case 18:
|
||||
block_ = std::string("BeiDou-3 GEOG8"); // launched 2019/05/17
|
||||
block_ = std::string("BeiDou-3 MEO28"); // Former PRN 50
|
||||
break;
|
||||
case 19:
|
||||
block_ = std::string("BeiDou-3 MEO01"); // Slot B07; launched 2017/11/05
|
||||
block_ = std::string("BeiDou-3 MEO01");
|
||||
break;
|
||||
case 20:
|
||||
block_ = std::string("BeiDou-3 MEO02"); // Slot B05; launched 2017/11/05
|
||||
block_ = std::string("BeiDou-3 MEO02");
|
||||
break;
|
||||
case 21:
|
||||
block_ = std::string("BeiDou-3 MEO03"); // Slot B0?; launched 2018/02/12
|
||||
block_ = std::string("BeiDou-3 MEO03");
|
||||
break;
|
||||
case 22:
|
||||
block_ = std::string("BeiDou-3 MEO04"); // Slot B06; launched 2018/02/12
|
||||
block_ = std::string("BeiDou-3 MEO04");
|
||||
break;
|
||||
case 23:
|
||||
block_ = std::string("BeiDou-3 MEO05"); // Slot C07; launched 2018/07/29
|
||||
block_ = std::string("BeiDou-3 MEO05");
|
||||
break;
|
||||
case 24:
|
||||
block_ = std::string("BeiDou-3 MEO06"); // Slot C01; launched 2018/07/29
|
||||
block_ = std::string("BeiDou-3 MEO06");
|
||||
break;
|
||||
case 25:
|
||||
block_ = std::string("BeiDou-3 MEO11"); // Slot C08; launched 2018/08/24
|
||||
block_ = std::string("BeiDou-3 MEO11");
|
||||
break;
|
||||
case 26:
|
||||
block_ = std::string("BeiDou-3 MEO12"); // Slot C02; launched 2018/08/24
|
||||
block_ = std::string("BeiDou-3 MEO12");
|
||||
break;
|
||||
case 27:
|
||||
block_ = std::string("BeiDou-3 3M3"); // Slot A04; launched 2018/01/11
|
||||
block_ = std::string("BeiDou-3 MEO07");
|
||||
break;
|
||||
case 28:
|
||||
block_ = std::string("BeiDou-3 3M4"); // Slot A05; launched 2018/01/11
|
||||
block_ = std::string("BeiDou-3 MEO08");
|
||||
break;
|
||||
case 29:
|
||||
block_ = std::string("BeiDou-3 3M7"); // Slot A02; launched 2018/03/29
|
||||
block_ = std::string("BeiDou-3 MEO09");
|
||||
break;
|
||||
case 30:
|
||||
block_ = std::string("BeiDou-3 3M8"); // Slot A03; launched 2018/03/29
|
||||
block_ = std::string("BeiDou-3 MEO10");
|
||||
break;
|
||||
case 31:
|
||||
block_ = std::string("BeiDou-3 MEO22"); // Former PRN 44
|
||||
break;
|
||||
case 32:
|
||||
block_ = std::string("BeiDou-3 MEO13"); // Slot B01; launched 2018/09/19
|
||||
block_ = std::string("BeiDou-3 MEO13");
|
||||
break;
|
||||
case 33:
|
||||
block_ = std::string("BeiDou-3 MEO14"); // Slot B03; launched 2018/09/19
|
||||
block_ = std::string("BeiDou-3 MEO14");
|
||||
break;
|
||||
case 34:
|
||||
block_ = std::string("BeiDou-3 MEO15"); // Slot B03; launched 2018/10/15
|
||||
block_ = std::string("BeiDou-3 MEO15");
|
||||
break;
|
||||
case 35:
|
||||
block_ = std::string("BeiDou-3 MEO16"); // Slot B03; launched 2018/10/15
|
||||
block_ = std::string("BeiDou-3 MEO16");
|
||||
break;
|
||||
case 36:
|
||||
block_ = std::string("BeiDou-3 MEO17"); // Slot B03; launched 2018/11/18
|
||||
block_ = std::string("BeiDou-3 MEO17");
|
||||
break;
|
||||
case 37:
|
||||
block_ = std::string("BeiDou-3 MEO18"); // Slot B03; launched 2018/11/18
|
||||
block_ = std::string("BeiDou-3 MEO18");
|
||||
break;
|
||||
case 38:
|
||||
block_ = std::string("BeiDou-3 IGSOI1"); // launched 2019/04/20
|
||||
block_ = std::string("BeiDou-3 MEO21"); // Former PRN 43
|
||||
break;
|
||||
case 39:
|
||||
block_ = std::string("BeiDou-3 IGSOI2"); // launched 2019/04/20
|
||||
block_ = std::string("BeiDou-3 MEO23"); // Former PRN 45
|
||||
break;
|
||||
case 40:
|
||||
block_ = std::string("BeiDou-3 IGSOI3"); // launched 2019/11/04
|
||||
block_ = std::string("BeiDou-3 MEO24"); // Former PRN 46
|
||||
break;
|
||||
case 41:
|
||||
block_ = std::string("BeiDou-3 MEO19"); // Slot B02, launched 2019/12/16
|
||||
block_ = std::string("BeiDou-3 MEO19");
|
||||
break;
|
||||
case 42:
|
||||
block_ = std::string("BeiDou-3 MEO20"); // Slot B04, launched 2019/12/16
|
||||
break;
|
||||
case 43:
|
||||
block_ = std::string("BeiDou-3 MEO21"); // Slot A06, launched 2019/11/23
|
||||
break;
|
||||
case 44:
|
||||
block_ = std::string("BeiDou-3 MEO22"); // Slot A08, launched 2019/11/23
|
||||
break;
|
||||
case 45:
|
||||
block_ = std::string("BeiDou-3 MEO23"); // Slot C03, launched 2019/09/22
|
||||
break;
|
||||
case 46:
|
||||
block_ = std::string("BeiDou-3 MEO24"); // Slot C05, launched 2019/09/22
|
||||
break;
|
||||
case 59:
|
||||
block_ = std::string("BeiDou-3 GEOG1"); // launched 2018/11/01
|
||||
break;
|
||||
case 60:
|
||||
block_ = std::string("BeiDou-3 GEOG2"); // launched 2020/03/20
|
||||
break;
|
||||
case 61:
|
||||
block_ = std::string("BeiDou-3 GEOG3"); // launched 2020/06/2023
|
||||
block_ = std::string("BeiDou-3 MEO20");
|
||||
break;
|
||||
default:
|
||||
// PRNs 5 and 15-18 are reserved; 43-63 are not in this allocation.
|
||||
block_ = std::string("Unknown");
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user