commander arm_auth check last

This commit is contained in:
Daniel Agar
2018-04-16 20:43:33 -04:00
parent a2bc0bd947
commit f2104217d4
+19 -13
View File
@@ -970,7 +970,7 @@ bool prearm_check(orb_advert_t *mavlink_log_pub, const vehicle_status_flags_s &s
} }
// Arm Requirements: mission // Arm Requirements: mission
if (prearm_ok && (arm_requirements & ARM_REQ_MISSION_BIT)) { if (arm_requirements & ARM_REQ_MISSION_BIT) {
if (!status_flags.condition_auto_mission_available) { if (!status_flags.condition_auto_mission_available) {
if (prearm_ok && reportFailures) { if (prearm_ok && reportFailures) {
@@ -990,24 +990,21 @@ bool prearm_check(orb_advert_t *mavlink_log_pub, const vehicle_status_flags_s &s
} }
// Arm Requirements: global position // Arm Requirements: global position
if ((arm_requirements & ARM_REQ_GPS_BIT) && (!status_flags.condition_global_position_valid)) { if (arm_requirements & ARM_REQ_GPS_BIT) {
if (prearm_ok && reportFailures) {
mavlink_log_critical(mavlink_log_pub, "ARMING DENIED: global position required");
}
prearm_ok = false; if (!status_flags.condition_global_position_valid) {
} if (prearm_ok && reportFailures) {
mavlink_log_critical(mavlink_log_pub, "ARMING DENIED: global position required");
}
// Arm Requirements: authorization
if (arm_requirements & ARM_REQ_ARM_AUTH_BIT) {
if (arm_auth_check() != vehicle_command_ack_s::VEHICLE_RESULT_ACCEPTED) {
// feedback provided in arm_auth_check
prearm_ok = false; prearm_ok = false;
} }
} }
// safety button (check last) // safety button
if (prearm_ok && safety.safety_switch_available && !safety.safety_off) { if (safety.safety_switch_available && !safety.safety_off) {
// Fail transition if we need safety switch press // Fail transition if we need safety switch press
if (prearm_ok && reportFailures) { if (prearm_ok && reportFailures) {
mavlink_log_critical(mavlink_log_pub, "ARMING DENIED: Press safety switch first"); mavlink_log_critical(mavlink_log_pub, "ARMING DENIED: Press safety switch first");
@@ -1016,5 +1013,14 @@ bool prearm_check(orb_advert_t *mavlink_log_pub, const vehicle_status_flags_s &s
prearm_ok = false; prearm_ok = false;
} }
// Arm Requirements: authorization
// check last, and only if everything else has passed
if ((arm_requirements & ARM_REQ_ARM_AUTH_BIT) && prearm_ok) {
if (arm_auth_check() != vehicle_command_ack_s::VEHICLE_RESULT_ACCEPTED) {
// feedback provided in arm_auth_check
prearm_ok = false;
}
}
return prearm_ok; return prearm_ok;
} }