From c64457ec1897c794c79e001a52f5f597dfddbc40 Mon Sep 17 00:00:00 2001
From: Don Gagne <don@thegagnes.com>
Date: Fri, 25 Sep 2015 19:33:16 -0700
Subject: [PATCH] Add COMMAND_LONG arm/disarm support

---
 src/comm/MockLink.cc | 20 ++++++++++++++++++++
 src/comm/MockLink.h  |  1 +
 2 files changed, 21 insertions(+)

diff --git a/src/comm/MockLink.cc b/src/comm/MockLink.cc
index ed7494e0da..ac4c069f8a 100644
--- a/src/comm/MockLink.cc
+++ b/src/comm/MockLink.cc
@@ -346,6 +346,10 @@ void MockLink::_handleIncomingMavlinkBytes(const uint8_t* bytes, int cBytes)
             case MAVLINK_MSG_ID_FILE_TRANSFER_PROTOCOL:
                 _handleFTP(msg);
                 break;
+                
+            case MAVLINK_MSG_ID_COMMAND_LONG:
+                _handleCommandLong(msg);
+                break;
 
             default:
                 qDebug() << "MockLink: Unhandled mavlink message, id:" << msg.msgid;
@@ -724,3 +728,19 @@ void MockLink::_handleFTP(const mavlink_message_t& msg)
     Q_ASSERT(_fileServer);
     _fileServer->handleFTPMessage(msg);
 }
+
+void MockLink::_handleCommandLong(const mavlink_message_t& msg)
+{
+    mavlink_command_long_t request;
+    
+    mavlink_msg_command_long_decode(&msg, &request);
+
+    if (request.command == MAV_CMD_COMPONENT_ARM_DISARM) {
+        if (request.param1 == 0.0f) {
+            _mavBaseMode &= ~MAV_MODE_FLAG_SAFETY_ARMED;
+        } else {
+            _mavBaseMode |= MAV_MODE_FLAG_SAFETY_ARMED;
+        }
+    }
+}
+
diff --git a/src/comm/MockLink.h b/src/comm/MockLink.h
index f55a2e2164..7ca8f179d7 100644
--- a/src/comm/MockLink.h
+++ b/src/comm/MockLink.h
@@ -124,6 +124,7 @@ private:
     void _handleMissionRequest(const mavlink_message_t& msg);
     void _handleMissionItem(const mavlink_message_t& msg);
     void _handleFTP(const mavlink_message_t& msg);
+    void _handleCommandLong(const mavlink_message_t& msg);
     float _floatUnionForParam(int componentId, const QString& paramName);
     void _setParamFloatUnionIntoMap(int componentId, const QString& paramName, float paramFloat);
 
-- 
GitLab