@@ -211,6 +211,12 @@ bool GNSS_LG290P::configureOnce()
211
211
Enable selected RTCM messages on COM2
212
212
*/
213
213
214
+ if (settings.gnssConfiguredOnce )
215
+ {
216
+ systemPrintln (" LG290P configuration maintained" );
217
+ return (true );
218
+ }
219
+
214
220
if (settings.debugGnss )
215
221
debuggingEnable (); // Print all debug to Serial
216
222
@@ -248,11 +254,13 @@ bool GNSS_LG290P::configureOnce()
248
254
systemPrintln (" LG290P configuration updated" );
249
255
250
256
// Save the current configuration into non-volatile memory (NVM)
251
- saveConfiguration ();
257
+ response &= saveConfiguration ();
252
258
}
253
259
else
254
260
online.gnss = false ; // Take it offline
255
261
262
+ settings.gnssConfiguredOnce = response;
263
+
256
264
return (response);
257
265
}
258
266
@@ -272,6 +280,13 @@ bool GNSS_LG290P::configureRover()
272
280
return (false );
273
281
}
274
282
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
+
275
290
bool response = true ;
276
291
277
292
serialGNSS->flush (); // Remove any incoming characters
@@ -314,15 +329,17 @@ bool GNSS_LG290P::configureRover()
314
329
else
315
330
{
316
331
// Save the current configuration into non-volatile memory (NVM)
317
- saveConfiguration ();
332
+ response &= saveConfiguration ();
318
333
319
334
// For RTCM and MSM messages to take effect (ie, PointPerfect is active) we must save/reset
320
335
softwareReset ();
321
336
322
- if (settings.debugGnss )
337
+ if (settings.debugGnss && response )
323
338
systemPrintln (" LG290P Rover configured" );
324
339
}
325
340
341
+ settings.gnssConfiguredRover = response;
342
+
326
343
return (response);
327
344
}
328
345
@@ -343,6 +360,13 @@ bool GNSS_LG290P::configureBase()
343
360
return (false );
344
361
}
345
362
363
+ if (settings.gnssConfiguredBase )
364
+ {
365
+ if (settings.debugGnss )
366
+ systemPrintln (" Skipping LG290P Base configuration" );
367
+ return true ;
368
+ }
369
+
346
370
bool response = true ;
347
371
348
372
serialGNSS->flush (); // Remove any incoming characters
@@ -401,18 +425,20 @@ bool GNSS_LG290P::configureBase()
401
425
else
402
426
{
403
427
// Save the current configuration into non-volatile memory (NVM)
404
- saveConfiguration ();
428
+ response &= saveConfiguration ();
405
429
406
430
softwareReset ();
407
431
408
432
// When a device is changed from Rover to Base, NMEA messages settings do not survive PQTMSAVEPAR
409
433
// Re-enable NMEA post reset
410
- enableNMEA (); // Set NMEA messages
434
+ response &= enableNMEA (); // Set NMEA messages
411
435
412
- if (settings.debugGnss )
436
+ if (settings.debugGnss && response )
413
437
systemPrintln (" LG290P Base configured" );
414
438
}
415
439
440
+ settings.gnssConfiguredBase = response;
441
+
416
442
return (response);
417
443
}
418
444
@@ -1741,6 +1767,10 @@ void GNSS_LG290P::menuMessagesSubtype(int *localMessageRate, const char *message
1741
1767
printUnknown (incoming);
1742
1768
}
1743
1769
1770
+ settings.gnssConfiguredOnce = false ; // Update the GNSS config at the next boot
1771
+ settings.gnssConfiguredBase = false ;
1772
+ settings.gnssConfiguredRover = false ;
1773
+
1744
1774
clearBuffer (); // Empty buffer of any newline chars
1745
1775
}
1746
1776
0 commit comments