1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-16 21:05:35 +03:00

Merge pull request #6662 from awolf78/master

GPS over MSP related fixes
This commit is contained in:
Michael Keller 2018-09-03 10:12:24 +12:00 committed by GitHub
commit a8b92ea920
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 26 additions and 6 deletions

View file

@ -48,6 +48,7 @@
#include "io/beeper.h" #include "io/beeper.h"
#include "io/ledstrip.h" #include "io/ledstrip.h"
#include "io/serial.h" #include "io/serial.h"
#include "io/gps.h"
#include "pg/beeper.h" #include "pg/beeper.h"
#include "pg/beeper_dev.h" #include "pg/beeper_dev.h"
@ -163,9 +164,15 @@ static void validateAndFixConfig(void)
pgResetFn_serialConfig(serialConfigMutable()); pgResetFn_serialConfig(serialConfigMutable());
} }
#if defined(USE_GPS)
serialPortConfig_t *gpsSerial = findSerialPortConfig(FUNCTION_GPS);
if (gpsConfig()->provider == GPS_MSP && gpsSerial) {
serialRemovePort(gpsSerial->identifier);
}
#endif
if ( if (
#if defined(USE_GPS) #if defined(USE_GPS)
!findSerialPortConfig(FUNCTION_GPS) && gpsConfig()->provider != GPS_MSP && !gpsSerial &&
#endif #endif
true) { true) {
featureDisable(FEATURE_GPS); featureDisable(FEATURE_GPS);

View file

@ -166,7 +166,7 @@ static const char * const lookupTableGyro[] = {
#ifdef USE_GPS #ifdef USE_GPS
static const char * const lookupTableGPSProvider[] = { static const char * const lookupTableGPSProvider[] = {
"NMEA", "UBLOX" "NMEA", "UBLOX", "MSP"
}; };
static const char * const lookupTableGPSSBASMode[] = { static const char * const lookupTableGPSSBASMode[] = {

View file

@ -224,6 +224,7 @@ static const uint8_t ubloxGalileoInit[] = {
typedef enum { typedef enum {
GPS_UNKNOWN, GPS_UNKNOWN,
GPS_INITIALIZING, GPS_INITIALIZING,
GPS_INITIALIZED,
GPS_CHANGE_BAUD, GPS_CHANGE_BAUD,
GPS_CONFIGURE, GPS_CONFIGURE,
GPS_RECEIVING_DATA, GPS_RECEIVING_DATA,
@ -281,6 +282,11 @@ void gpsInit(void)
gpsData.lastMessage = millis(); gpsData.lastMessage = millis();
if (gpsConfig()->provider == GPS_MSP) { // no serial ports used when GPS_MSP is configured
gpsSetState(GPS_INITIALIZED);
return;
}
serialPortConfig_t *gpsPortConfig = findSerialPortConfig(FUNCTION_GPS); serialPortConfig_t *gpsPortConfig = findSerialPortConfig(FUNCTION_GPS);
if (!gpsPortConfig) { if (!gpsPortConfig) {
return; return;
@ -474,6 +480,8 @@ void gpsInitHardware(void)
gpsInitUblox(); gpsInitUblox();
#endif #endif
break; break;
default:
break;
} }
} }
@ -502,6 +510,7 @@ void gpsUpdate(timeUs_t currentTimeUs)
switch (gpsData.state) { switch (gpsData.state) {
case GPS_UNKNOWN: case GPS_UNKNOWN:
case GPS_INITIALIZED:
break; break;
case GPS_INITIALIZING: case GPS_INITIALIZING:
@ -575,6 +584,8 @@ bool gpsNewFrame(uint8_t c)
return gpsNewFrameUBLOX(c); return gpsNewFrameUBLOX(c);
#endif #endif
break; break;
default:
break;
} }
return false; return false;
} }

View file

@ -34,7 +34,8 @@
typedef enum { typedef enum {
GPS_NMEA = 0, GPS_NMEA = 0,
GPS_UBLOX GPS_UBLOX,
GPS_MSP
} gpsProvider_e; } gpsProvider_e;
typedef enum { typedef enum {

View file

@ -449,11 +449,12 @@ void initCrsfTelemetry(void)
crsfSchedule[index++] = BV(CRSF_FRAME_BATTERY_SENSOR_INDEX); crsfSchedule[index++] = BV(CRSF_FRAME_BATTERY_SENSOR_INDEX);
} }
crsfSchedule[index++] = BV(CRSF_FRAME_FLIGHT_MODE_INDEX); crsfSchedule[index++] = BV(CRSF_FRAME_FLIGHT_MODE_INDEX);
#ifdef USE_GPS
if (featureIsEnabled(FEATURE_GPS)) { if (featureIsEnabled(FEATURE_GPS)) {
crsfSchedule[index++] = BV(CRSF_FRAME_GPS_INDEX); crsfSchedule[index++] = BV(CRSF_FRAME_GPS_INDEX);
} }
#endif
crsfScheduleCount = (uint8_t)index; crsfScheduleCount = (uint8_t)index;
} }
bool checkCrsfTelemetryState(void) bool checkCrsfTelemetryState(void)