Skip to content

Commit 2e4ad66

Browse files
Merge pull request #1341 from iNavFlight/home-reset-once
Only allow HOME_RESET to reset home position once
2 parents a519669 + 5fbeff2 commit 2e4ad66

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

src/main/navigation/navigation.c

+10-6
Original file line numberDiff line numberDiff line change
@@ -1891,15 +1891,19 @@ void updateHomePosition(void)
18911891
}
18921892
}
18931893
else {
1894+
static bool isHomeResetAllowed = false;
1895+
18941896
// If pilot so desires he may reset home position to current position
1895-
if (IS_RC_MODE_ACTIVE(BOXHOMERESET) && !FLIGHT_MODE(NAV_RTH_MODE) && !FLIGHT_MODE(NAV_WP_MODE) && posControl.flags.hasValidPositionSensor) {
1896-
if (STATE(GPS_FIX_HOME)) {
1897-
setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, NAV_POS_UPDATE_XY | NAV_POS_UPDATE_HEADING);
1898-
}
1899-
else {
1900-
setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, NAV_POS_UPDATE_XY | NAV_POS_UPDATE_Z | NAV_POS_UPDATE_HEADING);
1897+
if (IS_RC_MODE_ACTIVE(BOXHOMERESET)) {
1898+
if (isHomeResetAllowed && !FLIGHT_MODE(NAV_RTH_MODE) && !FLIGHT_MODE(NAV_WP_MODE) && posControl.flags.hasValidPositionSensor) {
1899+
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);
1900+
setHomePosition(&posControl.actualState.pos, posControl.actualState.yaw, homeUpdateFlags);
1901+
isHomeResetAllowed = false;
19011902
}
19021903
}
1904+
else {
1905+
isHomeResetAllowed = true;
1906+
}
19031907

19041908
// Update distance and direction to home if armed (home is not updated when armed)
19051909
if (STATE(GPS_FIX_HOME)) {

0 commit comments

Comments
 (0)