From aa5b9ae638f1bf412102de8fabd06740c725abf1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beat=20K=C3=BCng?= Date: Fri, 31 Mar 2023 08:01:06 +0200 Subject: [PATCH] fix failsafe: correctly handle Hold RC loss action Otherwise the additional mode check triggers an RTL which takes precedence over Hold. Introduced in 132e9d243966586d7aaf21d9600d9413993e5cc8 --- src/modules/commander/failsafe/framework.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/commander/failsafe/framework.cpp b/src/modules/commander/failsafe/framework.cpp index 9ef1a232c1..88123548a7 100644 --- a/src/modules/commander/failsafe/framework.cpp +++ b/src/modules/commander/failsafe/framework.cpp @@ -646,6 +646,7 @@ bool FailsafeBase::modeCanRun(const failsafe_flags_s &status_flags, uint8_t mode { uint32_t mode_mask = 1u << mode; // mode_req_wind_and_flight_time_compliance: does not need to be handled here (these are separate failsafe triggers) + // mode_req_manual_control: is handled separately return (!status_flags.angular_velocity_invalid || ((status_flags.mode_req_angular_velocity & mode_mask) == 0)) && (!status_flags.attitude_invalid || ((status_flags.mode_req_attitude & mode_mask) == 0)) && @@ -656,7 +657,6 @@ bool FailsafeBase::modeCanRun(const failsafe_flags_s &status_flags, uint8_t mode (!status_flags.auto_mission_missing || ((status_flags.mode_req_mission & mode_mask) == 0)) && (!status_flags.offboard_control_signal_lost || ((status_flags.mode_req_offboard_signal & mode_mask) == 0)) && (!status_flags.home_position_invalid || ((status_flags.mode_req_home_position & mode_mask) == 0)) && - (!status_flags.manual_control_signal_lost || ((status_flags.mode_req_manual_control & mode_mask) == 0)) && ((status_flags.mode_req_other & mode_mask) == 0); }