1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-16 12:55:19 +03:00

Merge pull request #5878 from mikeller/enable_bidirectional_nmea_gps

Enabled bidirectional communication with NMEA GPS for all targets.
This commit is contained in:
Michael Keller 2018-05-14 19:08:53 +12:00 committed by GitHub
commit 50ff0ddadb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -279,10 +279,10 @@ void gpsInit(void)
} }
portMode_e mode = MODE_RXTX; portMode_e mode = MODE_RXTX;
// only RX is needed for NMEA-style GPS #if defined(GPS_NMEA_TX_ONLY)
#if !defined(COLIBRI_RACE) || !defined(LUX_RACE) if (gpsConfig()->provider == GPS_NMEA) {
if (gpsConfig()->provider == GPS_NMEA)
mode &= ~MODE_TX; mode &= ~MODE_TX;
}
#endif #endif
// no callback - buffer will be consumed in gpsUpdate() // no callback - buffer will be consumed in gpsUpdate()
@ -299,15 +299,16 @@ void gpsInit(void)
#ifdef USE_GPS_NMEA #ifdef USE_GPS_NMEA
void gpsInitNmea(void) void gpsInitNmea(void)
{ {
#if defined(COLIBRI_RACE) || defined(LUX_RACE) #if !defined(GPS_NMEA_TX_ONLY)
uint32_t now; uint32_t now;
#endif #endif
switch (gpsData.state) { switch (gpsData.state) {
case GPS_INITIALIZING: case GPS_INITIALIZING:
#if defined(COLIBRI_RACE) || defined(LUX_RACE) #if !defined(GPS_NMEA_TX_ONLY)
now = millis(); now = millis();
if (now - gpsData.state_ts < 1000) if (now - gpsData.state_ts < 1000) {
return; return;
}
gpsData.state_ts = now; gpsData.state_ts = now;
if (gpsData.state_position < 1) { if (gpsData.state_position < 1) {
serialSetBaudRate(gpsPort, 4800); serialSetBaudRate(gpsPort, 4800);
@ -323,10 +324,11 @@ void gpsInitNmea(void)
break; break;
#endif #endif
case GPS_CHANGE_BAUD: case GPS_CHANGE_BAUD:
#if defined(COLIBRI_RACE) || defined(LUX_RACE) #if !defined(GPS_NMEA_TX_ONLY)
now = millis(); now = millis();
if (now - gpsData.state_ts < 1000) if (now - gpsData.state_ts < 1000) {
return; return;
}
gpsData.state_ts = now; gpsData.state_ts = now;
if (gpsData.state_position < 1) { if (gpsData.state_position < 1) {
serialSetBaudRate(gpsPort, baudRates[gpsInitData[gpsData.baudrateIndex].baudrateIndex]); serialSetBaudRate(gpsPort, baudRates[gpsInitData[gpsData.baudrateIndex].baudrateIndex]);
@ -334,14 +336,13 @@ void gpsInitNmea(void)
} else if (gpsData.state_position < 2) { } else if (gpsData.state_position < 2) {
serialPrint(gpsPort, "$PSRF103,00,6,00,0*23\r\n"); serialPrint(gpsPort, "$PSRF103,00,6,00,0*23\r\n");
gpsData.state_position++; gpsData.state_position++;
} else { } else
#else #else
serialSetBaudRate(gpsPort, baudRates[gpsInitData[gpsData.baudrateIndex].baudrateIndex]); {
#endif serialSetBaudRate(gpsPort, baudRates[gpsInitData[gpsData.baudrateIndex].baudrateIndex]);
gpsSetState(GPS_RECEIVING_DATA);
#if defined(COLIBRI_RACE) || defined(LUX_RACE)
} }
#endif #endif
gpsSetState(GPS_RECEIVING_DATA);
break; break;
} }
} }