diff --git a/src/main/flight/pos_hold.c b/src/main/flight/pos_hold.c index cbb77f48fe..c6aa4a024c 100644 --- a/src/main/flight/pos_hold.c +++ b/src/main/flight/pos_hold.c @@ -78,13 +78,10 @@ void posHoldUpdateTargetLocation(void) } } -void posHoldUpdate(timeUs_t currentTimeUs) { - UNUSED(currentTimeUs); - // check for enabling Alt Hold, otherwise do as little as possible while inactive - posHoldProcessTransitions(); +void posHoldNewGpsData(void) { if (posHold.isPosHoldRequested) { posHoldUpdateTargetLocation(); - if (getIsNewDataForPosHold() && posHold.posHoldIsOK) { + if (posHold.posHoldIsOK) { posHold.posHoldIsOK = positionControl(posHold.useStickAdjustment, posHold.deadband); } } else { @@ -93,6 +90,12 @@ void posHoldUpdate(timeUs_t currentTimeUs) { } } +void posHoldUpdate(timeUs_t currentTimeUs) { + UNUSED(currentTimeUs); + // check for enabling Alt Hold, otherwise do as little as possible while inactive + posHoldProcessTransitions(); +} + bool posHoldFailure(void) { return (posHold.isPosHoldRequested && !posHold.posHoldIsOK); } diff --git a/src/main/io/gps.c b/src/main/io/gps.c index 0161391dd4..f62a815fd8 100644 --- a/src/main/io/gps.c +++ b/src/main/io/gps.c @@ -93,7 +93,6 @@ GPS_svinfo_t GPS_svinfo[GPS_SV_MAXSATS_M8N]; static serialPort_t *gpsPort; static float gpsDataIntervalSeconds; -static bool newDataForPosHold = false; typedef struct gpsInitData_s { uint8_t index; @@ -2613,13 +2612,9 @@ void onGpsNewData(void) gpsLapTimerNewGpsData(); #endif // USE_GPS_LAP_TIMER - newDataForPosHold = true; -} - -bool getIsNewDataForPosHold(void) { - bool currentState = newDataForPosHold; // true only when new data arrives - newDataForPosHold = false; // clear flag once new data has been handled - return currentState; +#ifdef USE_POS_HOLD + posHoldNewGpsData(); +#endif } void gpsSetFixState(bool state) diff --git a/src/main/io/gps.h b/src/main/io/gps.h index 94fc4b9de3..f28abc5259 100644 --- a/src/main/io/gps.h +++ b/src/main/io/gps.h @@ -392,6 +392,5 @@ void GPS_distance_cm_bearing(const gpsLocation_t *from, const gpsLocation_t *to, void gpsSetFixState(bool state); float getGpsDataIntervalSeconds(void); // sends GPS Nav Data interval to GPS Rescue -bool getIsNewDataForPosHold(void); baudRate_e getGpsPortActualBaudRateIndex(void);