1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-26 01:35:35 +03:00

Only allow HOME_RESET to reset home position once. Consecutive reset has to be done by turning off HOMERESET switch

This commit is contained in:
Konstantin Sharlaimov (DigitalEntity) 2017-02-28 18:31:25 +10:00
parent a519669392
commit 5fbeff2ee7

View file

@ -1891,15 +1891,19 @@ void updateHomePosition(void)
} }
} }
else { else {
static bool isHomeResetAllowed = false;
// If pilot so desires he may reset home position to current position // If pilot so desires he may reset home position to current position
if (IS_RC_MODE_ACTIVE(BOXHOMERESET) && !FLIGHT_MODE(NAV_RTH_MODE) && !FLIGHT_MODE(NAV_WP_MODE) && posControl.flags.hasValidPositionSensor) { if (IS_RC_MODE_ACTIVE(BOXHOMERESET)) {
if (STATE(GPS_FIX_HOME)) { if (isHomeResetAllowed && !FLIGHT_MODE(NAV_RTH_MODE) && !FLIGHT_MODE(NAV_WP_MODE) && posControl.flags.hasValidPositionSensor) {
setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, NAV_POS_UPDATE_XY | NAV_POS_UPDATE_HEADING); const navSetWaypointFlags_t homeUpdateFlags = STATE(GPS_FIX_HOME) ? (NAV_POS_UPDATE_XY | NAV_POS_UPDATE_HEADING) : (NAV_POS_UPDATE_XY | NAV_POS_UPDATE_Z | NAV_POS_UPDATE_HEADING);
} setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, homeUpdateFlags);
else { isHomeResetAllowed = false;
setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, NAV_POS_UPDATE_XY | NAV_POS_UPDATE_Z | NAV_POS_UPDATE_HEADING);
} }
} }
else {
isHomeResetAllowed = true;
}
// Update distance and direction to home if armed (home is not updated when armed) // Update distance and direction to home if armed (home is not updated when armed)
if (STATE(GPS_FIX_HOME)) { if (STATE(GPS_FIX_HOME)) {