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:
commit
50ff0ddadb
1 changed files with 14 additions and 13 deletions
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue