From 9866ff89591a0b9c93688964f8994b28473ce6be Mon Sep 17 00:00:00 2001 From: Lorenz Meier Date: Sat, 20 Aug 2016 18:10:01 +0200 Subject: [PATCH] Allow sending a param with a different component ID --- src/modules/mavlink/mavlink_parameters.cpp | 14 ++++++++++++-- src/modules/mavlink/mavlink_parameters.h | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/modules/mavlink/mavlink_parameters.cpp b/src/modules/mavlink/mavlink_parameters.cpp index 0393e0b453..dfdc8bb8bd 100644 --- a/src/modules/mavlink/mavlink_parameters.cpp +++ b/src/modules/mavlink/mavlink_parameters.cpp @@ -407,7 +407,7 @@ MavlinkParametersManager::send(const hrt_abstime t) } int -MavlinkParametersManager::send_param(param_t param) +MavlinkParametersManager::send_param(param_t param, int component_id) { if (param == PARAM_INVALID) { return 1; @@ -446,7 +446,17 @@ MavlinkParametersManager::send_param(param_t param) msg.param_type = MAVLINK_TYPE_FLOAT; } - mavlink_msg_param_value_send_struct(_mavlink->get_channel(), &msg); + /* default component ID */ + if (component_id < 0) { + mavlink_msg_param_value_send_struct(_mavlink->get_channel(), &msg); + + } else { + + // Re-pack the message with a different component ID + mavlink_message_t mavlink_packet; + mavlink_msg_param_value_encode_chan(mavlink_system.sysid, component_id, _mavlink->get_channel(), &mavlink_packet, &msg); + _mavlink_resend_uart(_mavlink->get_channel(), &mavlink_packet); + } return 0; } diff --git a/src/modules/mavlink/mavlink_parameters.h b/src/modules/mavlink/mavlink_parameters.h index c2820a3e09..ce1d56363f 100644 --- a/src/modules/mavlink/mavlink_parameters.h +++ b/src/modules/mavlink/mavlink_parameters.h @@ -90,7 +90,7 @@ protected: void send(const hrt_abstime t); - int send_param(param_t param); + int send_param(param_t param, int component_id=-1); orb_advert_t _rc_param_map_pub; struct rc_parameter_map_s _rc_param_map;