From d4ac61cb054094cb5e0e1ad3af53dbc731d9d6ac Mon Sep 17 00:00:00 2001 From: Willian Galvani Date: Thu, 24 Jan 2019 11:35:25 -0200 Subject: [PATCH] Allow FirmwarePlugin to adjust fact meta data --- src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc | 14 ++++++++++++++ src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h | 2 ++ src/FirmwarePlugin/FirmwarePlugin.h | 5 +++++ src/Vehicle/Vehicle.cc | 3 +++ 4 files changed, 24 insertions(+) diff --git a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc index eb0fe9378..137e90b63 100644 --- a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc +++ b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc @@ -124,6 +124,9 @@ ArduSubFirmwarePlugin::ArduSubFirmwarePlugin(void): } _nameToFactGroupMap.insert("APMSubInfo", &_infoFactGroup); + + _factRenameMap[QStringLiteral("altitudeRelative")] = QStringLiteral("Depth"); + _factRenameMap[QStringLiteral("flightTime")] = QStringLiteral("Dive Time"); } QList ArduSubFirmwarePlugin::supportedMissionCommands(void) @@ -310,3 +313,14 @@ QString ArduSubFirmwarePlugin::vehicleImageOutline(const Vehicle* vehicle) const { return vehicleImageOpaque(vehicle); } + +void ArduSubFirmwarePlugin::adjustMetaData(MAV_TYPE vehicleType, FactMetaData* metaData) +{ + Q_UNUSED(vehicleType); + if (!metaData) { + return; + } + if (_factRenameMap.contains(metaData->name())) { + metaData->setShortDescription(QString(_factRenameMap[metaData->name()])); + } +} diff --git a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h index 6a356059a..b826c1e0c 100644 --- a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h +++ b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h @@ -137,11 +137,13 @@ public: const QVariantList& toolBarIndicators(const Vehicle* vehicle) final; bool adjustIncomingMavlinkMessage(Vehicle* vehicle, mavlink_message_t* message) final; virtual QMap* factGroups(void) final; + void adjustMetaData(MAV_TYPE vehicleType, FactMetaData* metaData) override final; private: QVariantList _toolBarIndicators; static bool _remapParamNameIntialized; + QMap _factRenameMap; static FirmwarePlugin::remapParamNameMajorVersionMap_t _remapParamName; void _handleNamedValueFloat(mavlink_message_t* message); void _handleMavlinkMessage(mavlink_message_t* message); diff --git a/src/FirmwarePlugin/FirmwarePlugin.h b/src/FirmwarePlugin/FirmwarePlugin.h index bcae4c08b..57006f568 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.h +++ b/src/FirmwarePlugin/FirmwarePlugin.h @@ -309,6 +309,11 @@ public: int versionCompare(Vehicle* vehicle, QString& compare); int versionCompare(Vehicle* vehicle, int major, int minor, int patch); + /// Allows the Firmware plugin to override the facts meta data. + /// @param vehicleType - Type of current vehicle + /// @param metaData - MetaData for fact + virtual void adjustMetaData(MAV_TYPE vehicleType, FactMetaData* metaData) {Q_UNUSED(vehicleType); Q_UNUSED(metaData);}; + // FIXME: Hack workaround for non pluginize FollowMe support static const QString px4FollowMeFlightMode; diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 487052565..c7c0ce2d1 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -278,6 +278,9 @@ Vehicle::Vehicle(LinkInterface* link, } _firmwarePlugin->initializeVehicle(this); + for(auto& factName: factNames()) { + _firmwarePlugin->adjustMetaData(vehicleType, getFact(factName)->metaData()); + } _sendMultipleTimer.start(_sendMessageMultipleIntraMessageDelay); connect(&_sendMultipleTimer, &QTimer::timeout, this, &Vehicle::_sendMessageMultipleNext); -- 2.22.0