@@ -1345,12 +1345,14 @@ bool zedSetConstellations(bool sendCompleteBatch)
1345
1345
if (sendCompleteBatch)
1346
1346
response &= theGNSS->newCfgValset ();
1347
1347
1348
- bool enableMe = settings.ubxConstellations [0 ].enabled ;
1349
- response &= theGNSS->addCfgValset (settings.ubxConstellations [0 ].configKey , enableMe); // GPS
1350
-
1351
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GPS_L1CA_ENA, settings.ubxConstellations [0 ].enabled );
1352
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GPS_L2C_ENA, settings.ubxConstellations [0 ].enabled );
1353
-
1348
+ // GPS
1349
+ int gnssIndex = ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_GPS);
1350
+ bool enableMe = settings.ubxConstellations [gnssIndex].enabled ;
1351
+ response &= theGNSS->addCfgValset (settings.ubxConstellations [gnssIndex].configKey , enableMe);
1352
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GPS_L1CA_ENA, enableMe);
1353
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GPS_L2C_ENA, enableMe);
1354
+
1355
+ // SBAS
1354
1356
// v1.12 ZED-F9P firmware does not allow for SBAS control
1355
1357
// Also, if we can't identify the version (99), skip SBAS enable
1356
1358
if ((gnssFirmwareVersionInt == 112 ) || (gnssFirmwareVersionInt == 99 ))
@@ -1359,34 +1361,45 @@ bool zedSetConstellations(bool sendCompleteBatch)
1359
1361
}
1360
1362
else
1361
1363
{
1362
- response &= theGNSS->addCfgValset (settings.ubxConstellations [1 ].configKey ,
1363
- settings.ubxConstellations [1 ].enabled ); // SBAS
1364
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_SBAS_L1CA_ENA, settings.ubxConstellations [1 ].enabled );
1364
+ gnssIndex = ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_SBAS);
1365
+ enableMe = settings.ubxConstellations [gnssIndex].enabled ;
1366
+ response &= theGNSS->addCfgValset (settings.ubxConstellations [gnssIndex].configKey , enableMe);
1367
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_SBAS_L1CA_ENA, enableMe);
1365
1368
}
1366
1369
1370
+ // GAL
1371
+ gnssIndex = ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_GALILEO);
1372
+ enableMe = settings.ubxConstellations [gnssIndex].enabled ;
1367
1373
response &=
1368
- theGNSS->addCfgValset (settings.ubxConstellations [2 ].configKey , settings. ubxConstellations [ 2 ]. enabled ); // GAL
1369
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GAL_E1_ENA, settings. ubxConstellations [ 2 ]. enabled );
1370
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GAL_E5B_ENA, settings. ubxConstellations [ 2 ]. enabled );
1374
+ theGNSS->addCfgValset (settings.ubxConstellations [gnssIndex ].configKey , enableMe);
1375
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GAL_E1_ENA, enableMe );
1376
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GAL_E5B_ENA, enableMe );
1371
1377
1378
+ // BDS
1379
+ gnssIndex = ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_BEIDOU);
1380
+ enableMe = settings.ubxConstellations [gnssIndex].enabled ;
1372
1381
response &=
1373
- theGNSS->addCfgValset (settings.ubxConstellations [3 ].configKey , settings. ubxConstellations [ 3 ]. enabled ); // BDS
1374
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_BDS_B1_ENA, settings. ubxConstellations [ 3 ]. enabled );
1375
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_BDS_B2_ENA, settings. ubxConstellations [ 3 ]. enabled );
1382
+ theGNSS->addCfgValset (settings.ubxConstellations [gnssIndex ].configKey , enableMe);
1383
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_BDS_B1_ENA, enableMe );
1384
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_BDS_B2_ENA, enableMe );
1376
1385
1386
+ // QZSS
1387
+ gnssIndex = ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_QZSS);
1388
+ enableMe = settings.ubxConstellations [gnssIndex].enabled ;
1377
1389
response &=
1378
- theGNSS->addCfgValset (settings.ubxConstellations [4 ].configKey , settings.ubxConstellations [4 ].enabled ); // QZSS
1379
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_QZSS_L1CA_ENA, settings.ubxConstellations [4 ].enabled );
1380
-
1390
+ theGNSS->addCfgValset (settings.ubxConstellations [gnssIndex].configKey , enableMe);
1391
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_QZSS_L1CA_ENA, enableMe);
1381
1392
// UBLOX_CFG_SIGNAL_QZSS_L1S_ENA not supported on F9R in v1.21 and below
1382
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_QZSS_L1S_ENA, settings.ubxConstellations [4 ].enabled );
1383
-
1384
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_QZSS_L2C_ENA, settings.ubxConstellations [4 ].enabled );
1393
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_QZSS_L1S_ENA, enableMe);
1394
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_QZSS_L2C_ENA, enableMe);
1385
1395
1396
+ // GLO
1397
+ gnssIndex = ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_GLONASS);
1398
+ enableMe = settings.ubxConstellations [gnssIndex].enabled ;
1386
1399
response &=
1387
- theGNSS->addCfgValset (settings.ubxConstellations [5 ].configKey , settings. ubxConstellations [ 5 ]. enabled ); // GLO
1388
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GLO_L1_ENA, settings. ubxConstellations [ 5 ]. enabled );
1389
- response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GLO_L2_ENA, settings. ubxConstellations [ 5 ]. enabled );
1400
+ theGNSS->addCfgValset (settings.ubxConstellations [gnssIndex ].configKey , enableMe);
1401
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GLO_L1_ENA, enableMe );
1402
+ response &= theGNSS->addCfgValset (UBLOX_CFG_SIGNAL_GLO_L2_ENA, enableMe );
1390
1403
1391
1404
if (sendCompleteBatch)
1392
1405
response &= theGNSS->sendCfgValset ();
@@ -1694,6 +1707,17 @@ char *zedGetRtcmLowDataRateString()
1694
1707
return ((char *)" 1074/1084/1094/1124 1Hz & 1005/1230 0.1Hz" );
1695
1708
}
1696
1709
1710
+ int ubxConstellationIDToIndex (int id)
1711
+ {
1712
+ for (int x = 0 ; x < MAX_UBX_CONSTELLATIONS; x++)
1713
+ {
1714
+ if (settings.ubxConstellations [x].gnssID == id)
1715
+ return x;
1716
+ }
1717
+
1718
+ return -1 ; // Should never be reached...!
1719
+ }
1720
+
1697
1721
// Controls the constellations that are used to generate a fix and logged
1698
1722
void zedMenuConstellations ()
1699
1723
{
@@ -1702,7 +1726,7 @@ void zedMenuConstellations()
1702
1726
systemPrintln ();
1703
1727
systemPrintln (" Menu: Constellations" );
1704
1728
1705
- for (int x = 0 ; x < MAX_CONSTELLATIONS ; x++)
1729
+ for (int x = 0 ; x < MAX_UBX_CONSTELLATIONS ; x++)
1706
1730
{
1707
1731
systemPrintf (" %d) Constellation %s: " , x + 1 , settings.ubxConstellations [x].textName );
1708
1732
if (settings.ubxConstellations [x].enabled == true )
@@ -1716,20 +1740,23 @@ void zedMenuConstellations()
1716
1740
1717
1741
int incoming = getUserInputNumber (); // Returns EXIT, TIMEOUT, or long
1718
1742
1719
- if (incoming >= 1 && incoming <= MAX_CONSTELLATIONS )
1743
+ if (incoming >= 1 && incoming <= MAX_UBX_CONSTELLATIONS )
1720
1744
{
1721
1745
incoming--; // Align choice to constellation array of 0 to 5
1722
1746
1723
1747
settings.ubxConstellations [incoming].enabled ^= 1 ;
1724
1748
1725
1749
// 3.10.6: To avoid cross-correlation issues, it is recommended that GPS and QZSS are always both enabled or
1726
1750
// both disabled.
1727
- if (incoming == SFE_UBLOX_GNSS_ID_GPS || incoming == 4 ) // QZSS ID is 5 but array location is 4
1751
+ if (incoming == ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_GPS)) // Match QZSS to GPS
1752
+ {
1753
+ settings.ubxConstellations [ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_QZSS)].enabled =
1754
+ settings.ubxConstellations [incoming].enabled ;
1755
+ }
1756
+ if (incoming == ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_QZSS)) // Match GPS to QZSS
1728
1757
{
1729
- settings.ubxConstellations [SFE_UBLOX_GNSS_ID_GPS].enabled =
1730
- settings.ubxConstellations [incoming].enabled ; // GPS ID is 0 and array location is 0
1731
- settings.ubxConstellations [4 ].enabled =
1732
- settings.ubxConstellations [incoming].enabled ; // QZSS ID is 5 but array location is 4
1758
+ settings.ubxConstellations [ubxConstellationIDToIndex (SFE_UBLOX_GNSS_ID_GPS)].enabled =
1759
+ settings.ubxConstellations [incoming].enabled ;
1733
1760
}
1734
1761
}
1735
1762
else if (incoming == INPUT_RESPONSE_GETNUMBER_EXIT)
0 commit comments