From fcaca4e04a5d7d4f0b1deeaa8e72eb0ec967bd87 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niccol=C3=B2=20Betto?= <niccolo.betto@skywarder.eu>
Date: Wed, 16 Apr 2025 19:13:56 +0200
Subject: [PATCH] [RIGv2] Implement RAW_EVENT_TC radio telecommand

---
 src/RIGv2/Radio/Radio.cpp | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

diff --git a/src/RIGv2/Radio/Radio.cpp b/src/RIGv2/Radio/Radio.cpp
index 296f7f538..d590862f4 100644
--- a/src/RIGv2/Radio/Radio.cpp
+++ b/src/RIGv2/Radio/Radio.cpp
@@ -297,6 +297,21 @@ void Radio::handleMessage(const mavlink_message_t& msg)
             break;
         }
 
+        case MAVLINK_MSG_ID_RAW_EVENT_TC:
+        {
+            uint8_t topicId = mavlink_msg_raw_event_tc_get_topic_id(&msg);
+            uint8_t eventId = mavlink_msg_raw_event_tc_get_event_id(&msg);
+
+            bool disarmed = getModule<GroundModeManager>()->getState() ==
+                            GroundModeManagerState::DISARMED;
+            // Raw events are allowed in the disarmed state
+            if (!disarmed)
+                return enqueueNack(msg, 0);
+
+            EventBroker::getInstance().post(eventId, topicId);
+            return enqueueAck(msg);
+        }
+
         default:
         {
             // Unrecognized packet
-- 
GitLab