Skip to content

Commit 06f6168

Browse files
authored
Merge pull request #374 from sparkfun/Fix_#354
Fix #354
2 parents 36460b3 + 3984306 commit 06f6168

File tree

3 files changed

+63
-36
lines changed

3 files changed

+63
-36
lines changed

Firmware/RTK_Everywhere/NVM.ino

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ void recordSystemSettingsToFile(File *settingsFile)
346346
// Record constellation settings
347347
for (int x = 0; x < rtkSettingsEntries[i].qualifier; x++)
348348
{
349-
char tempString[50]; // ubxConstellation_BeiDou=1
349+
char tempString[50]; // constellation_BeiDou=1
350350
snprintf(tempString, sizeof(tempString), "%s%s=%d", rtkSettingsEntries[i].name,
351351
settings.ubxConstellations[x].textName, settings.ubxConstellations[x].enabled);
352352
settingsFile->println(tempString);

Firmware/RTK_Everywhere/ZED.ino

Lines changed: 58 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1345,12 +1345,14 @@ bool zedSetConstellations(bool sendCompleteBatch)
13451345
if (sendCompleteBatch)
13461346
response &= theGNSS->newCfgValset();
13471347

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
13541356
// v1.12 ZED-F9P firmware does not allow for SBAS control
13551357
// Also, if we can't identify the version (99), skip SBAS enable
13561358
if ((gnssFirmwareVersionInt == 112) || (gnssFirmwareVersionInt == 99))
@@ -1359,34 +1361,45 @@ bool zedSetConstellations(bool sendCompleteBatch)
13591361
}
13601362
else
13611363
{
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);
13651368
}
13661369

1370+
// GAL
1371+
gnssIndex = ubxConstellationIDToIndex(SFE_UBLOX_GNSS_ID_GALILEO);
1372+
enableMe = settings.ubxConstellations[gnssIndex].enabled;
13671373
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);
13711377

1378+
// BDS
1379+
gnssIndex = ubxConstellationIDToIndex(SFE_UBLOX_GNSS_ID_BEIDOU);
1380+
enableMe = settings.ubxConstellations[gnssIndex].enabled;
13721381
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);
13761385

1386+
// QZSS
1387+
gnssIndex = ubxConstellationIDToIndex(SFE_UBLOX_GNSS_ID_QZSS);
1388+
enableMe = settings.ubxConstellations[gnssIndex].enabled;
13771389
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);
13811392
// 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);
13851395

1396+
// GLO
1397+
gnssIndex = ubxConstellationIDToIndex(SFE_UBLOX_GNSS_ID_GLONASS);
1398+
enableMe = settings.ubxConstellations[gnssIndex].enabled;
13861399
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);
13901403

13911404
if (sendCompleteBatch)
13921405
response &= theGNSS->sendCfgValset();
@@ -1694,6 +1707,17 @@ char *zedGetRtcmLowDataRateString()
16941707
return ((char *)"1074/1084/1094/1124 1Hz & 1005/1230 0.1Hz");
16951708
}
16961709

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+
16971721
// Controls the constellations that are used to generate a fix and logged
16981722
void zedMenuConstellations()
16991723
{
@@ -1702,7 +1726,7 @@ void zedMenuConstellations()
17021726
systemPrintln();
17031727
systemPrintln("Menu: Constellations");
17041728

1705-
for (int x = 0; x < MAX_CONSTELLATIONS; x++)
1729+
for (int x = 0; x < MAX_UBX_CONSTELLATIONS; x++)
17061730
{
17071731
systemPrintf("%d) Constellation %s: ", x + 1, settings.ubxConstellations[x].textName);
17081732
if (settings.ubxConstellations[x].enabled == true)
@@ -1716,20 +1740,23 @@ void zedMenuConstellations()
17161740

17171741
int incoming = getUserInputNumber(); // Returns EXIT, TIMEOUT, or long
17181742

1719-
if (incoming >= 1 && incoming <= MAX_CONSTELLATIONS)
1743+
if (incoming >= 1 && incoming <= MAX_UBX_CONSTELLATIONS)
17201744
{
17211745
incoming--; // Align choice to constellation array of 0 to 5
17221746

17231747
settings.ubxConstellations[incoming].enabled ^= 1;
17241748

17251749
// 3.10.6: To avoid cross-correlation issues, it is recommended that GPS and QZSS are always both enabled or
17261750
// 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
17281757
{
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;
17331760
}
17341761
}
17351762
else if (incoming == INPUT_RESPONSE_GETNUMBER_EXIT)

Firmware/RTK_Everywhere/settings.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ typedef struct
504504

505505
// These are the allowable constellations to receive from and log (if enabled)
506506
// Tested with u-center v21.02
507-
#define MAX_CONSTELLATIONS 6 //(sizeof(ubxConstellations)/sizeof(ubxConstellation))
507+
#define MAX_UBX_CONSTELLATIONS 6 // Should be (sizeof(settings.ubxConstellations)/sizeof(ubxConstellation)). Tricky...
508508

509509
// Print the base coordinates in different formats, depending on the type the user has entered
510510
// These are the different supported types
@@ -1305,8 +1305,8 @@ struct Settings
13051305
int8_t timeZoneSeconds = 0;
13061306

13071307
// UBX (SX1276)
1308-
bool enableUART2UBXIn = false; // UBX Protocol In on UART2
1309-
ubxConstellation ubxConstellations[MAX_CONSTELLATIONS] = { // Constellations monitored/used for fix
1308+
bool enableUART2UBXIn = false; // UBX Protocol In on UART2
1309+
ubxConstellation ubxConstellations[MAX_UBX_CONSTELLATIONS] = { // Constellations monitored/used for fix
13101310
{UBLOX_CFG_SIGNAL_BDS_ENA, SFE_UBLOX_GNSS_ID_BEIDOU, true, "BeiDou"},
13111311
{UBLOX_CFG_SIGNAL_GAL_ENA, SFE_UBLOX_GNSS_ID_GALILEO, true, "Galileo"},
13121312
{UBLOX_CFG_SIGNAL_GLO_ENA, SFE_UBLOX_GNSS_ID_GLONASS, true, "GLONASS"},
@@ -1802,7 +1802,7 @@ const RTK_Settings_Entry rtkSettingsEntries[] =
18021802

18031803
// ublox GNSS Receiver
18041804
{ 0, 1, 1, 0, 1, 1, 0, 0, _bool, 0, & settings.enableUART2UBXIn, "enableUART2UBXIn", },
1805-
{ 1, 1, 1, 1, 1, 1, 0, 0, tUbxConst, MAX_CONSTELLATIONS, & settings.ubxConstellations[0], "constellation_", },
1805+
{ 1, 1, 1, 1, 1, 1, 0, 0, tUbxConst, MAX_UBX_CONSTELLATIONS, & settings.ubxConstellations[0], "constellation_", },
18061806
{ 1, 0, 1, 1, 1, 1, 0, 0, tUbxMsgRt, MAX_UBX_MSG, & settings.ubxMessageRates[0], "ubxMessageRate_", },
18071807
{ 1, 0, 1, 1, 1, 1, 0, 0, tUbMsgRtb, MAX_UBX_MSG_RTCM, & settings.ubxMessageRatesBase[0], "ubxMessageRateBase_", },
18081808

0 commit comments

Comments
 (0)