@@ -406,6 +406,13 @@ bool GNSS_MOSAIC::configureBase()
406
406
return (false );
407
407
}
408
408
409
+ if (settings.gnssConfiguredBase )
410
+ {
411
+ if (settings.debugGnss )
412
+ systemPrintln (" Skipping mosaic Base configuration" );
413
+ return true ;
414
+ }
415
+
409
416
bool response = true ;
410
417
411
418
response &= setModel (MOSAIC_DYN_MODEL_STATIC);
@@ -421,13 +428,15 @@ bool GNSS_MOSAIC::configureBase()
421
428
setLoggingType (); // Update Standard, PPP, or custom for icon selection
422
429
423
430
// Save the current configuration into non-volatile memory (NVM)
424
- saveConfiguration ();
431
+ response &= saveConfiguration ();
425
432
426
433
if (response == false )
427
434
{
428
435
systemPrintln (" mosaic-X5 Base failed to configure" );
429
436
}
430
437
438
+ settings.gnssConfiguredBase = response;
439
+
431
440
return (response);
432
441
}
433
442
@@ -542,6 +551,12 @@ bool GNSS_MOSAIC::configureOnce()
542
551
RTCMv3 messages are enabled by enableRTCMRover / enableRTCMBase
543
552
*/
544
553
554
+ if (settings.gnssConfiguredOnce )
555
+ {
556
+ systemPrintln (" mosaic configuration maintained" );
557
+ return (true );
558
+ }
559
+
545
560
bool response = true ;
546
561
547
562
// Configure COM1. NMEA and RTCMv3 will be encapsulated in SBF format
@@ -589,11 +604,13 @@ bool GNSS_MOSAIC::configureOnce()
589
604
systemPrintln (" mosaic-X5 configuration updated" );
590
605
591
606
// Save the current configuration into non-volatile memory (NVM)
592
- saveConfiguration ();
607
+ response &= saveConfiguration ();
593
608
}
594
609
else
595
610
online.gnss = false ; // Take it offline
596
611
612
+ settings.gnssConfiguredOnce = response;
613
+
597
614
return (response);
598
615
}
599
616
@@ -635,6 +652,13 @@ bool GNSS_MOSAIC::configureRover()
635
652
return (false );
636
653
}
637
654
655
+ // If our settings haven't changed, trust GNSS's settings
656
+ if (settings.gnssConfiguredRover )
657
+ {
658
+ systemPrintln (" Skipping mosaic Rover configuration" );
659
+ return (true );
660
+ }
661
+
638
662
bool response = true ;
639
663
640
664
response &= sendWithResponse (" spm,Rover,all,auto\n\r " , " PVTMode" );
@@ -652,13 +676,15 @@ bool GNSS_MOSAIC::configureRover()
652
676
setLoggingType (); // Update Standard, PPP, or custom for icon selection
653
677
654
678
// Save the current configuration into non-volatile memory (NVM)
655
- saveConfiguration ();
679
+ response &= saveConfiguration ();
656
680
657
681
if (response == false )
658
682
{
659
683
systemPrintln (" mosaic-X5 Rover failed to configure" );
660
684
}
661
685
686
+ settings.gnssConfiguredRover = response;
687
+
662
688
return (response);
663
689
}
664
690
@@ -1697,6 +1723,9 @@ void GNSS_MOSAIC::menuMessagesNMEA()
1697
1723
printUnknown (incoming);
1698
1724
}
1699
1725
1726
+ settings.gnssConfiguredBase = false ; // Update the GNSS config at the next boot
1727
+ settings.gnssConfiguredRover = false ;
1728
+
1700
1729
clearBuffer (); // Empty buffer of any newline chars
1701
1730
}
1702
1731
@@ -1766,6 +1795,9 @@ void GNSS_MOSAIC::menuMessagesRTCM(bool rover)
1766
1795
printUnknown (incoming);
1767
1796
}
1768
1797
1798
+ settings.gnssConfiguredBase = false ; // Update the GNSS config at the next boot
1799
+ settings.gnssConfiguredRover = false ;
1800
+
1769
1801
clearBuffer (); // Empty buffer of any newline chars
1770
1802
}
1771
1803
0 commit comments