From e03fb849c015f6a430bcfbcf853272fa2b0cce3a Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Thu, 24 Mar 2016 17:56:04 -0700 Subject: [PATCH] Allow FirmwarePlugin to drop incoming messages --- src/FirmwarePlugin/FirmwarePlugin.cc | 3 ++- src/FirmwarePlugin/FirmwarePlugin.h | 3 ++- src/Vehicle/Vehicle.cc | 4 +++- 3 files changed, 7 insertions(+), 3 deletions(-) diff --git a/src/FirmwarePlugin/FirmwarePlugin.cc b/src/FirmwarePlugin/FirmwarePlugin.cc index 9b94fb4ee..825a8a717 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.cc +++ b/src/FirmwarePlugin/FirmwarePlugin.cc @@ -93,11 +93,12 @@ int FirmwarePlugin::manualControlReservedButtonCount(void) return -1; } -void FirmwarePlugin::adjustIncomingMavlinkMessage(Vehicle* vehicle, mavlink_message_t* message) +bool FirmwarePlugin::adjustIncomingMavlinkMessage(Vehicle* vehicle, mavlink_message_t* message) { Q_UNUSED(vehicle); Q_UNUSED(message); // Generic plugin does no message adjustment + return true; } void FirmwarePlugin::adjustOutgoingMavlinkMessage(Vehicle* vehicle, mavlink_message_t* message) diff --git a/src/FirmwarePlugin/FirmwarePlugin.h b/src/FirmwarePlugin/FirmwarePlugin.h index 92b4b3c69..995eef73f 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.h +++ b/src/FirmwarePlugin/FirmwarePlugin.h @@ -120,7 +120,8 @@ public: /// spec implementations such that the base code can remain mavlink generic. /// @param vehicle Vehicle message came from /// @param message[in,out] Mavlink message to adjust if needed. - virtual void adjustIncomingMavlinkMessage(Vehicle* vehicle, mavlink_message_t* message); + /// @return false: skip message, true: process message + virtual bool adjustIncomingMavlinkMessage(Vehicle* vehicle, mavlink_message_t* message); /// Called before any mavlink message is sent to the Vehicle so plugin can adjust any message characteristics. /// This is handy to adjust or differences in mavlink spec implementations such that the base code can remain diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index ab953efb3..9c7f03eee 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -377,7 +377,9 @@ void Vehicle::_mavlinkMessageReceived(LinkInterface* link, mavlink_message_t mes } // Give the plugin a change to adjust the message contents - _firmwarePlugin->adjustIncomingMavlinkMessage(this, &message); + if (!_firmwarePlugin->adjustIncomingMavlinkMessage(this, &message)) { + return; + } switch (message.msgid) { case MAVLINK_MSG_ID_HOME_POSITION: -- 2.22.0