Browse Source

Store firmware-factgroup data in derived classes

QGC4.4
Jacob Walser 8 years ago
parent
commit
7c59a1e206
  1. 4
      src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc
  2. 2
      src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h
  3. 5
      src/FirmwarePlugin/FirmwarePlugin.cc
  4. 4
      src/FirmwarePlugin/FirmwarePlugin.h
  5. 12
      src/Vehicle/Vehicle.cc

4
src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.cc

@ -193,6 +193,10 @@ bool ArduSubFirmwarePlugin::adjustIncomingMavlinkMessage(Vehicle* vehicle, mavli @@ -193,6 +193,10 @@ bool ArduSubFirmwarePlugin::adjustIncomingMavlinkMessage(Vehicle* vehicle, mavli
return APMFirmwarePlugin::adjustIncomingMavlinkMessage(vehicle, message);
}
QMap<QString, FactGroup*>* ArduSubFirmwarePlugin::factGroups(void) {
return &_nameToFactGroupMap;
}
const char* APMSubmarineFactGroup::_camTiltFactName = "camera tilt";
const char* APMSubmarineFactGroup::_tetherTurnsFactName = "tether turns";
const char* APMSubmarineFactGroup::_lightsLevel1FactName = "lights 1";

2
src/FirmwarePlugin/APM/ArduSubFirmwarePlugin.h

@ -123,6 +123,7 @@ public: @@ -123,6 +123,7 @@ public:
int remapParamNameHigestMinorVersionNumber(int majorVersionNumber) const final;
const QVariantList& toolBarIndicators(const Vehicle* vehicle) final;
bool adjustIncomingMavlinkMessage(Vehicle* vehicle, mavlink_message_t* message);
virtual QMap<QString, FactGroup*>* factGroups(void);
private:
@ -132,6 +133,7 @@ private: @@ -132,6 +133,7 @@ private:
void _handleNamedValueFloat(mavlink_message_t* message);
void _handleMavlinkMessage(mavlink_message_t* message);
QMap<QString, FactGroup*> _nameToFactGroupMap;
APMSubmarineFactGroup _infoFactGroup;
};
#endif

5
src/FirmwarePlugin/FirmwarePlugin.cc

@ -419,8 +419,9 @@ const QVariantList& FirmwarePlugin::cameraList(const Vehicle* vehicle) @@ -419,8 +419,9 @@ const QVariantList& FirmwarePlugin::cameraList(const Vehicle* vehicle)
return _cameraList;
}
const QMap<QString, FactGroup*>& FirmwarePlugin::factGroups(void) {
return _nameToFactGroupMap;
QMap<QString, FactGroup*>* FirmwarePlugin::factGroups(void) {
// Generic plugin has no FactGroups
return NULL;
}
bool FirmwarePlugin::vehicleYawsToNextWaypointInMission(const Vehicle* vehicle) const

4
src/FirmwarePlugin/FirmwarePlugin.h

@ -273,7 +273,8 @@ public: @@ -273,7 +273,8 @@ public:
/// Returns a list of CameraMetaData objects for available cameras on the vehicle.
virtual const QVariantList& cameraList(const Vehicle* vehicle);
virtual const QMap<QString, FactGroup*>& factGroups(void);
/// Returns a pointer to a dictionary of firmware-specific FactGroups
virtual QMap<QString, FactGroup*>* 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 +302,6 @@ protected: @@ -301,7 +302,6 @@ protected:
// Arms the vehicle with validation and retries
// @return: true - vehicle armed, false - vehicle failed to arm
bool _armVehicleAndValidate(Vehicle* vehicle);
QMap<QString, FactGroup*> _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

12
src/Vehicle/Vehicle.cc

@ -373,11 +373,13 @@ void Vehicle::_commonInit(void) @@ -373,11 +373,13 @@ void Vehicle::_commonInit(void)
_addFactGroup(&_temperatureFactGroup, _temperatureFactGroupName);
// Add firmware-specific fact groups, if provided
QMap<QString, FactGroup*> fwFactGroups = _firmwarePlugin->factGroups();
QMapIterator<QString, FactGroup*> i(fwFactGroups);
while(i.hasNext()) {
i.next();
_addFactGroup(i.value(), i.key());
QMap<QString, FactGroup*>* fwFactGroups = _firmwarePlugin->factGroups();
if (fwFactGroups) {
QMapIterator<QString, FactGroup*> i(*fwFactGroups);
while(i.hasNext()) {
i.next();
_addFactGroup(i.value(), i.key());
}
}
_flightDistanceFact.setRawValue(0);

Loading…
Cancel
Save