Skip to content

Commit cc8e3cf

Browse files
committed
LG290P: add gnssConfiguredOnce/Base/Rover
1 parent 56c24d6 commit cc8e3cf

File tree

1 file changed

+36
-6
lines changed

1 file changed

+36
-6
lines changed

Firmware/RTK_Everywhere/GNSS_LG290P.ino

Lines changed: 36 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -211,6 +211,12 @@ bool GNSS_LG290P::configureOnce()
211211
Enable selected RTCM messages on COM2
212212
*/
213213

214+
if (settings.gnssConfiguredOnce)
215+
{
216+
systemPrintln("LG290P configuration maintained");
217+
return (true);
218+
}
219+
214220
if (settings.debugGnss)
215221
debuggingEnable(); // Print all debug to Serial
216222

@@ -248,11 +254,13 @@ bool GNSS_LG290P::configureOnce()
248254
systemPrintln("LG290P configuration updated");
249255

250256
// Save the current configuration into non-volatile memory (NVM)
251-
saveConfiguration();
257+
response &= saveConfiguration();
252258
}
253259
else
254260
online.gnss = false; // Take it offline
255261

262+
settings.gnssConfiguredOnce = response;
263+
256264
return (response);
257265
}
258266

@@ -272,6 +280,13 @@ bool GNSS_LG290P::configureRover()
272280
return (false);
273281
}
274282

283+
// If our settings haven't changed, and this is first config since power on, trust GNSS's settings
284+
if (settings.gnssConfiguredRover)
285+
{
286+
systemPrintln("Skipping LG290P Rover configuration");
287+
return (true);
288+
}
289+
275290
bool response = true;
276291

277292
serialGNSS->flush(); // Remove any incoming characters
@@ -314,15 +329,17 @@ bool GNSS_LG290P::configureRover()
314329
else
315330
{
316331
// Save the current configuration into non-volatile memory (NVM)
317-
saveConfiguration();
332+
response &= saveConfiguration();
318333

319334
// For RTCM and MSM messages to take effect (ie, PointPerfect is active) we must save/reset
320335
softwareReset();
321336

322-
if (settings.debugGnss)
337+
if (settings.debugGnss && response)
323338
systemPrintln("LG290P Rover configured");
324339
}
325340

341+
settings.gnssConfiguredRover = response;
342+
326343
return (response);
327344
}
328345

@@ -343,6 +360,13 @@ bool GNSS_LG290P::configureBase()
343360
return (false);
344361
}
345362

363+
if (settings.gnssConfiguredBase)
364+
{
365+
if (settings.debugGnss)
366+
systemPrintln("Skipping LG290P Base configuration");
367+
return true;
368+
}
369+
346370
bool response = true;
347371

348372
serialGNSS->flush(); // Remove any incoming characters
@@ -401,18 +425,20 @@ bool GNSS_LG290P::configureBase()
401425
else
402426
{
403427
// Save the current configuration into non-volatile memory (NVM)
404-
saveConfiguration();
428+
response &= saveConfiguration();
405429

406430
softwareReset();
407431

408432
// When a device is changed from Rover to Base, NMEA messages settings do not survive PQTMSAVEPAR
409433
// Re-enable NMEA post reset
410-
enableNMEA(); // Set NMEA messages
434+
response &= enableNMEA(); // Set NMEA messages
411435

412-
if (settings.debugGnss)
436+
if (settings.debugGnss && response)
413437
systemPrintln("LG290P Base configured");
414438
}
415439

440+
settings.gnssConfiguredBase = response;
441+
416442
return (response);
417443
}
418444

@@ -1741,6 +1767,10 @@ void GNSS_LG290P::menuMessagesSubtype(int *localMessageRate, const char *message
17411767
printUnknown(incoming);
17421768
}
17431769

1770+
settings.gnssConfiguredOnce = false; // Update the GNSS config at the next boot
1771+
settings.gnssConfiguredBase = false;
1772+
settings.gnssConfiguredRover = false;
1773+
17441774
clearBuffer(); // Empty buffer of any newline chars
17451775
}
17461776

0 commit comments

Comments
 (0)