From d33b2f0b2bf93c5668f25762f496593bc713da13 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Mon, 26 Oct 2020 13:37:56 -0700 Subject: [PATCH] Fix loading from parameter cache (#9134) --- src/FactSystem/ParameterManager.cc | 6 ++++-- src/FirmwarePlugin/FirmwarePlugin.h | 5 ----- src/Vehicle/CompInfoParam.cc | 12 ------------ src/Vehicle/CompInfoParam.h | 3 --- 4 files changed, 4 insertions(+), 22 deletions(-) diff --git a/src/FactSystem/ParameterManager.cc b/src/FactSystem/ParameterManager.cc index d28d31c52..7f939c3aa 100644 --- a/src/FactSystem/ParameterManager.cc +++ b/src/FactSystem/ParameterManager.cc @@ -832,11 +832,13 @@ void ParameterManager::_tryCacheHashLoad(int vehicleId, int componentId, QVarian /* compute the crc of the local cache to check against the remote */ for (const QString& name: cacheMap.keys()) { - if (_vehicle->compInfoManager()->compInfoParam(MAV_COMP_ID_AUTOPILOT1)->_isParameterVolatile(name)) { + const ParamTypeVal& paramTypeVal = cacheMap[name]; + const FactMetaData::ValueType_t fact_type = static_cast(paramTypeVal.first); + + if (_vehicle->compInfoManager()->compInfoParam(MAV_COMP_ID_AUTOPILOT1)->factMetaDataForName(name, fact_type)->volatileValue()) { // Does not take part in CRC qCDebug(ParameterManagerLog) << "Volatile parameter" << name; } else { - const ParamTypeVal& paramTypeVal = cacheMap[name]; const void *vdat = paramTypeVal.second.constData(); const FactMetaData::ValueType_t fact_type = static_cast(paramTypeVal.first); crc32_value = QGC::crc32((const uint8_t *)qPrintable(name), name.length(), crc32_value); diff --git a/src/FirmwarePlugin/FirmwarePlugin.h b/src/FirmwarePlugin/FirmwarePlugin.h index 07144c56a..467bdc961 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.h +++ b/src/FirmwarePlugin/FirmwarePlugin.h @@ -229,11 +229,6 @@ public: /// Important: Only CompInfoParam code should use this method virtual FactMetaData* _getMetaDataForFact(QObject* /*parameterMetaData*/, const QString& /*name*/, FactMetaData::ValueType_t /* type */, MAV_TYPE /*vehicleType*/) { return nullptr; } - /// Returns the FactMetaData associated with the parameter name - /// @param opaqueParameterMetaData Opaque pointer returned from loadParameterMetaData - /// Important: Only CompInfoParam code should use this method - virtual bool _isParameterVolatile(QObject* /*parameterMetaData*/, const QString& /*name*/, MAV_TYPE /*vehicleType*/) { return false; } - /// List of supported mission commands. Empty list for all commands supported. virtual QList supportedMissionCommands(QGCMAVLink::VehicleClass_t vehicleClass); diff --git a/src/Vehicle/CompInfoParam.cc b/src/Vehicle/CompInfoParam.cc index e8d1c18f8..7a619ef91 100644 --- a/src/Vehicle/CompInfoParam.cc +++ b/src/Vehicle/CompInfoParam.cc @@ -142,18 +142,6 @@ FactMetaData* CompInfoParam::factMetaDataForName(const QString& name, FactMetaDa return factMetaData; } -bool CompInfoParam::_isParameterVolatile(const QString& name) -{ - if (_noJsonMetadata) { - QObject* opaqueMetaData = _getOpaqueParameterMetaData(); - if (opaqueMetaData) { - return vehicle->firmwarePlugin()->_isParameterVolatile(opaqueMetaData, name, vehicle->vehicleType()); - } - } - - return _nameToMetaDataMap.contains(name) ? _nameToMetaDataMap[name]->volatileValue() : false; -} - FirmwarePlugin* CompInfoParam::_anyVehicleTypeFirmwarePlugin(MAV_AUTOPILOT firmwareType) { FirmwarePluginManager* pluginMgr = qgcApp()->toolbox()->firmwarePluginManager(); diff --git a/src/Vehicle/CompInfoParam.h b/src/Vehicle/CompInfoParam.h index f7f0cc536..0503160b6 100644 --- a/src/Vehicle/CompInfoParam.h +++ b/src/Vehicle/CompInfoParam.h @@ -34,9 +34,6 @@ public: // Overrides from CompInfo void setJson(const QString& metadataJsonFileName, const QString& translationJsonFileName) override; - // The following methods are used to support the old non-COMPONENT_INFORMATION based mechanism to get parameter meta data - bool _isParameterVolatile (const QString& name); - static void _cachePX4MetaDataFile(const QString& metaDataFile); private: -- 2.22.0