From be1367059daff32539b9aeca58ac25e597296189 Mon Sep 17 00:00:00 2001 From: Dominic Clifton Date: Thu, 11 Dec 2014 18:01:52 +0000 Subject: [PATCH] GPS - cleanup nagivation reset flag usage. --- src/main/flight/navigation.c | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/src/main/flight/navigation.c b/src/main/flight/navigation.c index f3e532fa7..473ece67f 100644 --- a/src/main/flight/navigation.c +++ b/src/main/flight/navigation.c @@ -657,7 +657,7 @@ void updateGpsStateForHomeAndHoldMode(void) void updateGpsWaypointsAndMode(void) { - static uint8_t GPSNavReset = 1; + static bool resetNavNow = false; if (STATE(GPS_FIX) && GPS_numSat >= 5) { // if both GPS_HOME & GPS_HOLD are checked => GPS_HOME is the priority @@ -665,7 +665,7 @@ void updateGpsWaypointsAndMode(void) if (!FLIGHT_MODE(GPS_HOME_MODE)) { ENABLE_FLIGHT_MODE(GPS_HOME_MODE); DISABLE_FLIGHT_MODE(GPS_HOLD_MODE); - GPSNavReset = 0; + resetNavNow = true; GPS_set_next_wp(&GPS_home[LAT], &GPS_home[LON]); nav_mode = NAV_MODE_WP; } @@ -675,7 +675,7 @@ void updateGpsWaypointsAndMode(void) if (IS_RC_MODE_ACTIVE(BOXGPSHOLD) && areSticksInApModePosition(gpsProfile->ap_mode)) { if (!FLIGHT_MODE(GPS_HOLD_MODE)) { ENABLE_FLIGHT_MODE(GPS_HOLD_MODE); - GPSNavReset = 0; + resetNavNow = true; GPS_hold[LAT] = GPS_coord[LAT]; GPS_hold[LON] = GPS_coord[LON]; GPS_set_next_wp(&GPS_hold[LAT], &GPS_hold[LON]); @@ -683,18 +683,20 @@ void updateGpsWaypointsAndMode(void) } } else { DISABLE_FLIGHT_MODE(GPS_HOLD_MODE); - // both boxes are unselected here, nav is reset if not already done - if (GPSNavReset == 0) { - GPSNavReset = 1; - GPS_reset_nav(); - } } } } else { DISABLE_FLIGHT_MODE(GPS_HOME_MODE); DISABLE_FLIGHT_MODE(GPS_HOLD_MODE); nav_mode = NAV_MODE_NONE; - GPS_reset_nav(); + resetNavNow = true; } + + if (resetNavNow) { + GPS_reset_nav(); + resetNavNow = false; + } + } + #endif