diff --git a/src/modules/commander/Arming/ArmStateMachine/ArmStateMachine.cpp b/src/modules/commander/Arming/ArmStateMachine/ArmStateMachine.cpp index 5d6bf330e1..8b7fe3cf91 100644 --- a/src/modules/commander/Arming/ArmStateMachine/ArmStateMachine.cpp +++ b/src/modules/commander/Arming/ArmStateMachine/ArmStateMachine.cpp @@ -53,55 +53,30 @@ transition_result_t ArmStateMachine::arming_state_transition(vehicle_status_s &s transition_result_t ret = TRANSITION_DENIED; bool feedback_provided = false; - const bool hil_enabled = (status.hil_state == vehicle_status_s::HIL_STATE_ON); - /* only check transition if the new state is actually different from the current one */ if (new_arming_state == _arm_state) { ret = TRANSITION_NOT_CHANGED; } else { - bool preflight_check_ret = true; - - /* only perform the pre-arm check if we have to */ - if (fRunPreArmChecks && (new_arming_state == vehicle_status_s::ARMING_STATE_ARMED) - && !hil_enabled) { - - preflight_check_ret = - PreFlightCheck::preflightCheck(mavlink_log_pub, status, status_flags, control_mode, true, true, time_since_boot); - - feedback_provided = true; - } - // Check that we have a valid state transition bool valid_transition = arming_transitions[new_arming_state][_arm_state]; - if (valid_transition) { - // We have a good transition. Now perform any secondary validation. - if (new_arming_state == vehicle_status_s::ARMING_STATE_ARMED) { - - // Do not perform pre-arm checks if coming from in air restore - // Allow if vehicle_status_s::HIL_STATE_ON - if (_arm_state != vehicle_status_s::ARMING_STATE_IN_AIR_RESTORE) { - - bool prearm_check_ret = true; - - if (fRunPreArmChecks && preflight_check_ret) { - // only bother running prearm if preflight was successful - prearm_check_ret = PreFlightCheck::preArmCheck(mavlink_log_pub, status_flags, control_mode, - safety_button_available, safety_off, - arm_requirements, status); - } - - if (!preflight_check_ret || !prearm_check_ret) { - // the prearm and preflight checks already print the rejection reason - feedback_provided = true; - valid_transition = false; - } - } + // Preflight check + if (valid_transition + && (new_arming_state == vehicle_status_s::ARMING_STATE_ARMED) + && fRunPreArmChecks + && !(status.hil_state == vehicle_status_s::HIL_STATE_ON) + && (_arm_state != vehicle_status_s::ARMING_STATE_IN_AIR_RESTORE)) { + + if (!PreFlightCheck::preflightCheck(mavlink_log_pub, status, status_flags, control_mode, true, true, time_since_boot) + || !PreFlightCheck::preArmCheck(mavlink_log_pub, status_flags, control_mode, safety_button_available, safety_off, + arm_requirements, status)) { + feedback_provided = true; // Preflight checks report error messages + valid_transition = false; } } - if (hil_enabled) { + if (status.hil_state == vehicle_status_s::HIL_STATE_ON) { /* enforce lockdown in HIL */ armed.lockdown = true;