@@ -545,6 +545,7 @@ bool GNSS_LG290P::enableNMEA()
545
545
bool GNSS_LG290P::enableRTCMBase ()
546
546
{
547
547
bool response = true ;
548
+ bool enableMSM = false ; // Goes true if we need to enable MSM output reporting
548
549
549
550
for (int messageNumber = 0 ; messageNumber < MAX_LG290P_RTCM_MSG; messageNumber++)
550
551
{
@@ -574,6 +575,17 @@ bool GNSS_LG290P::enableRTCMBase()
574
575
response &= false ; // If any one of the commands fails, report failure overall
575
576
}
576
577
}
578
+
579
+ // If any message is enabled, enable MSM output
580
+ if (lgMessagesRTCM[messageNumber].msgTextName , settings.lg290pMessageRatesRTCMRover [messageNumber] == true )
581
+ enableMSM = true ;
582
+ }
583
+
584
+ if (enableMSM == true )
585
+ {
586
+ // PQTMCFGRTCM fails to respond with OK over UART2 of LG290P, so don't look for it
587
+ _lg290p->sendOkCommand (
588
+ " PQTMCFGRTCM,W,7,0,-90,07,06,2,1" ); // Enable MSM7, output regular intervals, interval (seconds)
577
589
}
578
590
579
591
return (response);
@@ -589,6 +601,7 @@ bool GNSS_LG290P::enableRTCMRover()
589
601
bool rtcm1020Enabled = false ;
590
602
bool rtcm1042Enabled = false ;
591
603
bool rtcm1046Enabled = false ;
604
+ bool enableMSM = false ; // Goes true if we need to enable MSM output reporting
592
605
593
606
for (int messageNumber = 0 ; messageNumber < MAX_LG290P_RTCM_MSG; messageNumber++)
594
607
{
@@ -619,6 +632,10 @@ bool GNSS_LG290P::enableRTCMRover()
619
632
}
620
633
}
621
634
635
+ // If any message is enabled, enable MSM output
636
+ if (lgMessagesRTCM[messageNumber].msgTextName , settings.lg290pMessageRatesRTCMRover [messageNumber] == true )
637
+ enableMSM = true ;
638
+
622
639
// If we are using IP based corrections, we need to send local data to the PPL
623
640
// The PPL requires being fed GPGGA/ZDA, and RTCM1019/1020/1042/1046
624
641
if (settings.enablePointPerfectCorrections )
@@ -632,6 +649,7 @@ bool GNSS_LG290P::enableRTCMRover()
632
649
rtcm1042Enabled = true ;
633
650
if (strcmp (lgMessagesNMEA[messageNumber].msgTextName , " RTCM3-1046" ) == 0 )
634
651
rtcm1046Enabled = true ;
652
+ enableMSM = true ; // Force enable MSM output
635
653
}
636
654
}
637
655
@@ -648,6 +666,13 @@ bool GNSS_LG290P::enableRTCMRover()
648
666
response &= _lg290p->setMessageRate (" RTCM3-1046" , 1 );
649
667
}
650
668
669
+ if (enableMSM == true )
670
+ {
671
+ // PQTMCFGRTCM fails to respond with OK over UART2 of LG290P, so don't look for it
672
+ _lg290p->sendOkCommand (
673
+ " PQTMCFGRTCM,W,7,0,-90,07,06,2,1" ); // Enable MSM7, output regular intervals, interval (seconds)
674
+ }
675
+
651
676
return (response);
652
677
}
653
678
0 commit comments