@@ -1148,44 +1148,47 @@ void beginLBand()
1148
1148
theGNSS.checkCallbacks (); // Process any callbacks: ie, eventTriggerReceived
1149
1149
}
1150
1150
1151
+ uint32_t LBandFreq;
1151
1152
// If we have a fix, check which frequency to use
1152
1153
if (fixType == 2 || fixType == 3 || fixType == 4 || fixType == 5 ) // 2D, 3D, 3D+DR, or Time
1153
1154
{
1154
- if ((longitude > -125 && longitude < -67 ) && (latitude > -90 && latitude < 90 ))
1155
+ int r = 0 ; // Step through each geographic region
1156
+ for (; r < numRegionalAreas; r++)
1155
1157
{
1156
- if (settings.debugLBand == true )
1157
- systemPrintln (" Setting L-Band to US" );
1158
- settings.LBandFreq = 1556290000 ; // We are in US band
1159
- }
1160
- else if ((longitude > -25 && longitude < 70 ) && (latitude > -90 && latitude < 90 ))
1161
- {
1162
- if (settings.debugLBand == true )
1163
- systemPrintln (" Setting L-Band to EU" );
1164
- settings.LBandFreq = 1545260000 ; // We are in EU band
1158
+ if ((longitude >= Regional_Information_Table[r].area .lonWest )
1159
+ && (longitude <= Regional_Information_Table[r].area .lonEast )
1160
+ && (latitude >= Regional_Information_Table[r].area .latSouth )
1161
+ && (latitude <= Regional_Information_Table[r].area .latNorth ))
1162
+ {
1163
+ LBandFreq = Regional_Information_Table[r].frequency ;
1164
+ if (settings.debugLBand == true )
1165
+ systemPrintf (" Setting L-Band frequency to %s (%dHz)\r\n " , Regional_Information_Table[r].name , LBandFreq);
1166
+ break ;
1167
+ }
1165
1168
}
1166
- else
1169
+ if (r == numRegionalAreas) // Geographic region not found
1167
1170
{
1168
- systemPrintln ( " Error: Unknown band area. Defaulting to US band. " ) ;
1169
- settings. LBandFreq = 1556290000 ; // Default to US
1171
+ LBandFreq = Regional_Information_Table[settings. geographicRegion ]. frequency ;
1172
+ systemPrintf ( " Error: Unknown L-Band geographic region. Using %s (%dHz) \r\n " , Regional_Information_Table[settings. geographicRegion ]. name , LBandFreq);
1170
1173
}
1171
- recordSystemSettings ();
1172
1174
}
1173
1175
else
1174
1176
{
1177
+ LBandFreq = Regional_Information_Table[settings.geographicRegion ].frequency ;
1175
1178
if (settings.debugLBand == true )
1176
- systemPrintln (" No fix available for L-Band frequency determination" );
1179
+ systemPrintf (" No fix available for L-Band geographic region determination. Using %s (%dHz) \r\n " , Regional_Information_Table[settings. geographicRegion ]. name , LBandFreq );
1177
1180
}
1178
1181
1179
1182
bool response = true ;
1180
1183
response &= i2cLBand.newCfgValset ();
1181
- response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_CENTER_FREQUENCY, settings. LBandFreq ); // Default 1539812500 Hz
1182
- response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_SEARCH_WINDOW, 2200 ); // Default 2200 Hz
1183
- response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_USE_SERVICE_ID, 0 ); // Default 1
1184
- response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_SERVICE_ID, 21845 ); // Default 50821
1185
- response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_DATA_RATE, 2400 ); // Default 2400 bps
1186
- response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_USE_DESCRAMBLER, 1 ); // Default 1
1187
- response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_DESCRAMBLER_INIT, 26969 ); // Default 23560
1188
- response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_USE_PRESCRAMBLING, 0 ); // Default 0
1184
+ response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_CENTER_FREQUENCY, LBandFreq); // Default 1539812500 Hz
1185
+ response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_SEARCH_WINDOW, 2200 ); // Default 2200 Hz
1186
+ response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_USE_SERVICE_ID, 0 ); // Default 1
1187
+ response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_SERVICE_ID, 21845 ); // Default 50821
1188
+ response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_DATA_RATE, 2400 ); // Default 2400 bps
1189
+ response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_USE_DESCRAMBLER, 1 ); // Default 1
1190
+ response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_DESCRAMBLER_INIT, 26969 ); // Default 23560
1191
+ response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_USE_PRESCRAMBLING, 0 ); // Default 0
1189
1192
response &= i2cLBand.addCfgValset (UBLOX_CFG_PMP_UNIQUE_WORD, 16238547128276412563ull );
1190
1193
response &=
1191
1194
i2cLBand.addCfgValset (UBLOX_CFG_MSGOUT_UBX_RXM_PMP_UART1, 0 ); // Diasable UBX-RXM-PMP on UART1. Not used.
@@ -1268,6 +1271,9 @@ void menuPointPerfect()
1268
1271
1269
1272
systemPrintln (" k) Manual Key Entry" );
1270
1273
1274
+ systemPrint (" g) Geographic Region: " );
1275
+ systemPrintln (Regional_Information_Table[settings.geographicRegion ].name );
1276
+
1271
1277
systemPrintln (" x) Exit" );
1272
1278
1273
1279
byte incoming = getCharacterNumber ();
@@ -1346,6 +1352,12 @@ void menuPointPerfect()
1346
1352
{
1347
1353
menuPointPerfectKeys ();
1348
1354
}
1355
+ else if (incoming == ' g' )
1356
+ {
1357
+ settings.geographicRegion ++;
1358
+ if (settings.geographicRegion >= numRegionalAreas)
1359
+ settings.geographicRegion = 0 ;
1360
+ }
1349
1361
else if (incoming == ' x' )
1350
1362
break ;
1351
1363
else if (incoming == INPUT_RESPONSE_GETCHARACTERNUMBER_EMPTY)
0 commit comments