@@ -545,6 +545,7 @@ bool GNSS_LG290P::enableNMEA()
545545bool GNSS_LG290P::enableRTCMBase ()
546546{
547547 bool response = true ;
548+ bool enableMSM = false ; // Goes true if we need to enable MSM output reporting
548549
549550 for (int messageNumber = 0 ; messageNumber < MAX_LG290P_RTCM_MSG; messageNumber++)
550551 {
@@ -574,6 +575,17 @@ bool GNSS_LG290P::enableRTCMBase()
574575 response &= false ; // If any one of the commands fails, report failure overall
575576 }
576577 }
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)
577589 }
578590
579591 return (response);
@@ -589,6 +601,7 @@ bool GNSS_LG290P::enableRTCMRover()
589601 bool rtcm1020Enabled = false ;
590602 bool rtcm1042Enabled = false ;
591603 bool rtcm1046Enabled = false ;
604+ bool enableMSM = false ; // Goes true if we need to enable MSM output reporting
592605
593606 for (int messageNumber = 0 ; messageNumber < MAX_LG290P_RTCM_MSG; messageNumber++)
594607 {
@@ -619,6 +632,10 @@ bool GNSS_LG290P::enableRTCMRover()
619632 }
620633 }
621634
635+ // If any message is enabled, enable MSM output
636+ if (lgMessagesRTCM[messageNumber].msgTextName , settings.lg290pMessageRatesRTCMRover [messageNumber] == true )
637+ enableMSM = true ;
638+
622639 // If we are using IP based corrections, we need to send local data to the PPL
623640 // The PPL requires being fed GPGGA/ZDA, and RTCM1019/1020/1042/1046
624641 if (settings.enablePointPerfectCorrections )
@@ -632,6 +649,7 @@ bool GNSS_LG290P::enableRTCMRover()
632649 rtcm1042Enabled = true ;
633650 if (strcmp (lgMessagesNMEA[messageNumber].msgTextName , " RTCM3-1046" ) == 0 )
634651 rtcm1046Enabled = true ;
652+ enableMSM = true ; // Force enable MSM output
635653 }
636654 }
637655
@@ -648,6 +666,13 @@ bool GNSS_LG290P::enableRTCMRover()
648666 response &= _lg290p->setMessageRate (" RTCM3-1046" , 1 );
649667 }
650668
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+
651676 return (response);
652677}
653678
0 commit comments