From 91e3ec5884eb8d91a6cebd4e8aedb5bbe43ccb27 Mon Sep 17 00:00:00 2001 From: Kjersti Brynestad Date: Wed, 4 Jan 2023 14:25:56 +0100 Subject: [PATCH] mavlink: Handle NAMED_VALUE_INT --- src/modules/mavlink/mavlink_receiver.cpp | 20 ++++++++++++++++++++ src/modules/mavlink/mavlink_receiver.h | 1 + 2 files changed, 21 insertions(+) diff --git a/src/modules/mavlink/mavlink_receiver.cpp b/src/modules/mavlink/mavlink_receiver.cpp index 4723dbc1be..6030d9b651 100644 --- a/src/modules/mavlink/mavlink_receiver.cpp +++ b/src/modules/mavlink/mavlink_receiver.cpp @@ -290,6 +290,10 @@ MavlinkReceiver::handle_message(mavlink_message_t *msg) handle_message_named_value_float(msg); break; + case MAVLINK_MSG_ID_NAMED_VALUE_INT: + handle_message_named_value_int(msg); + break; + case MAVLINK_MSG_ID_DEBUG: handle_message_debug(msg); break; @@ -2811,6 +2815,22 @@ MavlinkReceiver::handle_message_named_value_float(mavlink_message_t *msg) _debug_key_value_pub.publish(debug_topic); } +void +MavlinkReceiver::handle_message_named_value_int(mavlink_message_t *msg) +{ + mavlink_named_value_int_t debug_msg; + mavlink_msg_named_value_int_decode(msg, &debug_msg); + + debug_key_value_s debug_topic{}; + + debug_topic.timestamp = hrt_absolute_time(); + memcpy(debug_topic.key, debug_msg.name, sizeof(debug_topic.key)); + debug_topic.key[sizeof(debug_topic.key) - 1] = '\0'; // enforce null termination + debug_topic.value = debug_msg.value; + + _debug_key_value_pub.publish(debug_topic); +} + void MavlinkReceiver::handle_message_debug(mavlink_message_t *msg) { diff --git a/src/modules/mavlink/mavlink_receiver.h b/src/modules/mavlink/mavlink_receiver.h index 04aa8ca8ee..e5575b7efb 100644 --- a/src/modules/mavlink/mavlink_receiver.h +++ b/src/modules/mavlink/mavlink_receiver.h @@ -177,6 +177,7 @@ private: void handle_message_landing_target(mavlink_message_t *msg); void handle_message_logging_ack(mavlink_message_t *msg); void handle_message_manual_control(mavlink_message_t *msg); + void handle_message_named_value_int(mavlink_message_t *msg); void handle_message_obstacle_distance(mavlink_message_t *msg); void handle_message_odometry(mavlink_message_t *msg); void handle_message_onboard_computer_status(mavlink_message_t *msg);