From b857d2c1af433d454bdb42f7513dd6d391c595d7 Mon Sep 17 00:00:00 2001 From: Peter Barker Date: Fri, 3 May 2019 21:26:03 +1000 Subject: [PATCH] GCS_MAVLink: handle MAV_CMD_COMPONENT_ARM_DISARM --- libraries/GCS_MAVLink/GCS_Common.cpp | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libraries/GCS_MAVLink/GCS_Common.cpp b/libraries/GCS_MAVLink/GCS_Common.cpp index 4b699605f6..d283c47516 100644 --- a/libraries/GCS_MAVLink/GCS_Common.cpp +++ b/libraries/GCS_MAVLink/GCS_Common.cpp @@ -16,6 +16,7 @@ */ #include #include +#include #include #include #include @@ -3961,6 +3962,24 @@ MAV_RESULT GCS_MAVLINK::handle_command_long_packet(const mavlink_command_long_t result = handle_flight_termination(packet); break; + case MAV_CMD_COMPONENT_ARM_DISARM: + if (is_equal(packet.param1,1.0f)) { + // run pre_arm_checks and arm_checks and display failures + const bool do_arming_checks = !is_equal(packet.param2,magic_force_arm_value); + if (AP::arming().arm(AP_Arming::Method::MAVLINK, do_arming_checks)) { + return MAV_RESULT_ACCEPTED; + } + return MAV_RESULT_FAILED; + } + if (is_zero(packet.param1)) { + if (AP::arming().disarm()) { + return MAV_RESULT_ACCEPTED; + } + return MAV_RESULT_FAILED; + } + + return MAV_RESULT_UNSUPPORTED; + default: result = MAV_RESULT_UNSUPPORTED; break;