diff --git a/msg/vehicle_status_flags.msg b/msg/vehicle_status_flags.msg index ee76c13a4e..6b8343ff95 100644 --- a/msg/vehicle_status_flags.msg +++ b/msg/vehicle_status_flags.msg @@ -24,6 +24,7 @@ bool position_reliant_on_optical_flow bool position_reliant_on_vision_position bool dead_reckoning +bool flight_terminated bool circuit_breaker_engaged_power_check bool circuit_breaker_engaged_airspd_check diff --git a/src/modules/commander/Arming/PreFlightCheck/checks/preArmCheck.cpp b/src/modules/commander/Arming/PreFlightCheck/checks/preArmCheck.cpp index 3b3bf25e3b..e6552084e0 100644 --- a/src/modules/commander/Arming/PreFlightCheck/checks/preArmCheck.cpp +++ b/src/modules/commander/Arming/PreFlightCheck/checks/preArmCheck.cpp @@ -79,6 +79,12 @@ bool PreFlightCheck::preArmCheck(orb_advert_t *mavlink_log_pub, const vehicle_st prearm_ok = false; } + if (status_flags.flight_terminated) { + if (report_fail) { mavlink_log_critical(mavlink_log_pub, "Arming denied! Flight termination active"); } + + prearm_ok = false; + } + // USB not connected if (!status_flags.circuit_breaker_engaged_usb_check && status_flags.usb_connected) { if (report_fail) { mavlink_log_critical(mavlink_log_pub, "Arming denied! Flying with USB is not safe"); } diff --git a/src/modules/commander/Commander.cpp b/src/modules/commander/Commander.cpp index 00672c1127..ae7fc227df 100644 --- a/src/modules/commander/Commander.cpp +++ b/src/modules/commander/Commander.cpp @@ -2911,6 +2911,8 @@ Commander::run() checkWindAndWarn(); } + _status_flags.flight_terminated = _armed.force_failsafe || _armed.lockdown || _armed.manual_lockdown; + /* Get current timestamp */ const hrt_abstime now = hrt_absolute_time();