feat(radio): prefer UBX over NMEA when both supported (#4857)

This commit is contained in:
Bastian Springer
2024-04-09 10:22:40 +10:00
committed by GitHub
parent 147bd1d8a2
commit 24bae0df0c
2 changed files with 10 additions and 6 deletions
+9 -2
View File
@@ -106,6 +106,7 @@ static void autodetectProtocol(uint8_t c)
{
static tmr10ms_t time;
static uint8_t state = 0;
static tmr10ms_t firstPacketNMEA = 0;
switch (state) {
case 0: // Init
@@ -113,7 +114,12 @@ static void autodetectProtocol(uint8_t c)
state = 1;
case 1: // Wait for a valid packet
if (gpsNewFrameNMEA(c)) {
gpsProtocol = GPS_PROTOCOL_NMEA;
if (!firstPacketNMEA) {
firstPacketNMEA = time;
} else if (time - firstPacketNMEA > 200) {
// continuous stream of NMEA packets for 2 seconds, but no UBX packets
gpsProtocol = GPS_PROTOCOL_NMEA;
}
state = 0;
return;
}
@@ -125,8 +131,9 @@ static void autodetectProtocol(uint8_t c)
}
uint32_t new_time = get_tmr10ms();
if (new_time - time > 20) {
if (new_time - time > 50) {
// No message received
firstPacketNMEA = 0;
changeBaudrate();
time = new_time;
}
+1 -4
View File
@@ -129,10 +129,7 @@ static void configureGps(bool detect)
{
static int state = 0;
if (detect) {
state = 0;
return;
}
if (detect) state = 0;
auto txCompleted = gpsSerialDrv->txCompleted;
if (txCompleted && !txCompleted(gpsSerialCtx)) return;