@@ -8,7 +8,7 @@ GNSS_LG290P.ino
8
8
9
9
#ifdef COMPILE_LG290P
10
10
11
- uint8_t lg290pFirmwareVersion = 0 ;
11
+ uint8_t lg290pFirmwareVersion = 0 ; // 0 = Unknown
12
12
13
13
// ----------------------------------------
14
14
// If we have decryption keys, configure module
@@ -111,7 +111,7 @@ void GNSS_LG290P::begin()
111
111
{
112
112
spot += strlen (" LG290P03AANR01A" );
113
113
if (sscanf (spot, " %d" , &lg290pFirmwareVersion) != 1 )
114
- lg290pFirmwareVersion = 99 ;
114
+ lg290pFirmwareVersion = 0 ; // Unknown
115
115
}
116
116
117
117
if (lg290pFirmwareVersion < 4 )
@@ -675,11 +675,25 @@ bool GNSS_LG290P::enableNMEA()
675
675
if (pointPerfectIsEnabled ())
676
676
{
677
677
// Force on any messages that are needed for PPL
678
- if (gpggaEnabled == false )
679
- response &= _lg290p->setMessageRate (" GGA" , 1 );
678
+ // If firmware is 4 or higher, use setMessageRateOnPort, otherwise setMessageRate
679
+ if (lg290pFirmwareVersion >= 4 )
680
+ {
681
+ // Enable GGA / ZDA on port 2 (ESP32) only
682
+ if (gpggaEnabled == false )
683
+ response &= _lg290p->setMessageRateOnPort (" GGA" , 1 , 2 );
684
+
685
+ // if (gpggaEnabled == false)
686
+ // response &= _lg290p->setMessageRateOnPort("GGA", 1, 1);
687
+ }
688
+ else
689
+ {
690
+ // Enable GGA / ZDA on all ports. It's the best we can do.
691
+ if (gpggaEnabled == false )
692
+ response &= _lg290p->setMessageRate (" GGA" , 1 );
680
693
681
- // if (gpzdaEnabled == false)
682
- // response &= _lg290p->setMessageRate("ZDA", 1);
694
+ // if (gpzdaEnabled == false)
695
+ // response &= _lg290p->setMessageRate("ZDA", 1);
696
+ }
683
697
}
684
698
685
699
return (response);
0 commit comments