diff --git a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc index 2af431eb32705b13dd5c3253bddf9a8c6b8976ea..eadc6a49c872f80980debe8be34b03bb174eee83 100644 --- a/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc +++ b/src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc @@ -101,7 +101,7 @@ ArduSubFirmwarePlugin::ArduSubFirmwarePlugin(void): _remapParamNameIntialized = true; } - _factGroups.append(&_infoFactGroup); + _nameToFactGroupMap.insert("APMSubInfo", &_infoFactGroup); } int ArduSubFirmwarePlugin::remapParamNameHigestMinorVersionNumber(int majorVersionNumber) const diff --git a/src/FirmwarePlugin/FirmwarePlugin.cc b/src/FirmwarePlugin/FirmwarePlugin.cc index 9e0e5fa604c7d37f72f20a6e8093b4b47731aa1f..a0f6e89de2aa953085d192b50fbca248e75255de 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.cc +++ b/src/FirmwarePlugin/FirmwarePlugin.cc @@ -419,8 +419,8 @@ const QVariantList& FirmwarePlugin::cameraList(const Vehicle* vehicle) return _cameraList; } -QList FirmwarePlugin::factGroups(void) { - return _factGroups; +const QMap& FirmwarePlugin::factGroups(void) { + return _nameToFactGroupMap; } bool FirmwarePlugin::vehicleYawsToNextWaypointInMission(const Vehicle* vehicle) const diff --git a/src/FirmwarePlugin/FirmwarePlugin.h b/src/FirmwarePlugin/FirmwarePlugin.h index 641d38c057aa2ba9cf9ed2beea5a5ccfa2c875cc..cd6e5c94e3ad48106e0ef1523bc071fa3f66e669 100644 --- a/src/FirmwarePlugin/FirmwarePlugin.h +++ b/src/FirmwarePlugin/FirmwarePlugin.h @@ -273,7 +273,7 @@ public: /// Returns a list of CameraMetaData objects for available cameras on the vehicle. virtual const QVariantList& cameraList(const Vehicle* vehicle); - virtual QList factGroups(void); + virtual const QMap& factGroups(void); /// @true: When flying a mission the vehicle is always facing towards the next waypoint virtual bool vehicleYawsToNextWaypointInMission(const Vehicle* vehicle) const; @@ -301,7 +301,7 @@ protected: // Arms the vehicle with validation and retries // @return: true - vehicle armed, false - vehicle failed to arm bool _armVehicleAndValidate(Vehicle* vehicle); - QList _factGroups; + QMap _nameToFactGroupMap; // Sets the vehicle to the specified flight mode with validation and retries // @return: true - vehicle in specified flight mode, false - flight mode change failed diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 0033a10a46ea6911fac1fa6b850f19b76a49e3a0..2dac5d88fbd0e385f2b34664c1b6ae3c878c1269 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -372,10 +372,12 @@ void Vehicle::_commonInit(void) _addFactGroup(&_vibrationFactGroup, _vibrationFactGroupName); _addFactGroup(&_temperatureFactGroup, _temperatureFactGroupName); - // Add firmware-specific fact group, if provided - QList fwFactGroups = _firmwarePlugin->factGroups(); - for (int i = 0; i < fwFactGroups.count(); i++) { - _addFactGroup(fwFactGroups[i], QString("FWPlugin%1").arg(i)); + // Add firmware-specific fact groups, if provided + QMap fwFactGroups = _firmwarePlugin->factGroups(); + QMapIterator i(fwFactGroups); + while(i.hasNext()) { + i.next(); + _addFactGroup(i.value(), i.key()); } _flightDistanceFact.setRawValue(0);