From 9cb1a89da5baf28042acbd1d05081c3a044c15d5 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Sun, 12 Nov 2017 15:33:28 -0500 Subject: [PATCH] Plumbing Hobbs Meter through Vehicle FactGroup --- src/Vehicle/Vehicle.cc | 21 +++++++++++++++++++++ src/Vehicle/Vehicle.h | 6 ++++++ src/Vehicle/VehicleFact.json | 5 +++++ 3 files changed, 32 insertions(+) diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 548d7fac6..7ecdc8335 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -57,6 +57,7 @@ const char* Vehicle::_altitudeAMSLFactName = "altitudeAMSL"; const char* Vehicle::_flightDistanceFactName = "flightDistance"; const char* Vehicle::_flightTimeFactName = "flightTime"; const char* Vehicle::_distanceToHomeFactName = "distanceToHome"; +const char* Vehicle::_hobbsFactName = "hobbs"; const char* Vehicle::_gpsFactGroupName = "gps"; const char* Vehicle::_batteryFactGroupName = "battery"; @@ -165,6 +166,7 @@ Vehicle::Vehicle(LinkInterface* link, , _flightDistanceFact (0, _flightDistanceFactName, FactMetaData::valueTypeDouble) , _flightTimeFact (0, _flightTimeFactName, FactMetaData::valueTypeElapsedTimeInSeconds) , _distanceToHomeFact (0, _distanceToHomeFactName, FactMetaData::valueTypeDouble) + , _hobbsFact (0, _hobbsFactName, FactMetaData::valueTypeString) , _gpsFactGroup(this) , _batteryFactGroup(this) , _windFactGroup(this) @@ -183,6 +185,8 @@ Vehicle::Vehicle(LinkInterface* link, connect(this, &Vehicle::flightModeChanged, this, &Vehicle::_handleFlightModeChanged); connect(this, &Vehicle::armedChanged, this, &Vehicle::_announceArmedChanged); + connect(_toolbox->multiVehicleManager(), &MultiVehicleManager::parameterReadyVehicleAvailableChanged, this, &Vehicle::_vehicleParamLoaded); + _uas = new UAS(_mavlink, this, _firmwarePluginManager); connect(_uas, &UAS::imageReady, this, &Vehicle::_imageReady); @@ -337,6 +341,7 @@ Vehicle::Vehicle(MAV_AUTOPILOT firmwareType, , _flightDistanceFact (0, _flightDistanceFactName, FactMetaData::valueTypeDouble) , _flightTimeFact (0, _flightTimeFactName, FactMetaData::valueTypeElapsedTimeInSeconds) , _distanceToHomeFact (0, _distanceToHomeFactName, FactMetaData::valueTypeDouble) + , _hobbsFact (0, _hobbsFactName, FactMetaData::valueTypeString) , _gpsFactGroup(this) , _batteryFactGroup(this) , _windFactGroup(this) @@ -352,6 +357,7 @@ void Vehicle::_commonInit(void) connect(this, &Vehicle::coordinateChanged, this, &Vehicle::_updateDistanceToHome); connect(this, &Vehicle::homePositionChanged, this, &Vehicle::_updateDistanceToHome); + connect(this, &Vehicle::hobbsMeterChanged, this, &Vehicle::_updateHobbsMeter); _missionManager = new MissionManager(this); connect(_missionManager, &MissionManager::error, this, &Vehicle::_missionManagerError); @@ -392,6 +398,7 @@ void Vehicle::_commonInit(void) _addFact(&_flightDistanceFact, _flightDistanceFactName); _addFact(&_flightTimeFact, _flightTimeFactName); _addFact(&_distanceToHomeFact, _distanceToHomeFactName); + _addFact(&_hobbsFact, _hobbsFactName); _addFactGroup(&_gpsFactGroup, _gpsFactGroupName); _addFactGroup(&_batteryFactGroup, _batteryFactGroupName); @@ -2862,6 +2869,11 @@ void Vehicle::_updateDistanceToHome(void) } } +void Vehicle::_updateHobbsMeter(void) +{ + _hobbsFact.setRawValue(hobbsMeter()); +} + void Vehicle::forceInitialPlanRequestComplete(void) { _initialPlanRequestComplete = true; @@ -2894,6 +2906,15 @@ QString Vehicle::hobbsMeter() return QString("0000:00:00"); } +void Vehicle::_vehicleParamLoaded(bool ready) +{ + //-- TODO: This seems silly but can you think of a better + // way to update this? + if(ready) { + emit hobbsMeterChanged(); + } +} + //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index 9f0bb8fce..e1ff02c72 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -344,6 +344,7 @@ public: Q_PROPERTY(Fact* altitudeAMSL READ altitudeAMSL CONSTANT) Q_PROPERTY(Fact* flightDistance READ flightDistance CONSTANT) Q_PROPERTY(Fact* distanceToHome READ distanceToHome CONSTANT) + Q_PROPERTY(Fact* hobbs READ hobbs CONSTANT) Q_PROPERTY(FactGroup* gps READ gpsFactGroup CONSTANT) Q_PROPERTY(FactGroup* battery READ batteryFactGroup CONSTANT) @@ -614,6 +615,7 @@ public: Fact* altitudeAMSL (void) { return &_altitudeAMSLFact; } Fact* flightDistance (void) { return &_flightDistanceFact; } Fact* distanceToHome (void) { return &_distanceToHomeFact; } + Fact* hobbs (void) { return &_hobbsFact; } FactGroup* gpsFactGroup (void) { return &_gpsFactGroup; } FactGroup* batteryFactGroup (void) { return &_batteryFactGroup; } @@ -838,6 +840,8 @@ private slots: void _clearTrajectoryPoints(void); void _clearCameraTriggerPoints(void); void _updateDistanceToHome(void); + void _updateHobbsMeter(void); + void _vehicleParamLoaded(bool ready); private: bool _containsLink(LinkInterface* link); @@ -1059,6 +1063,7 @@ private: Fact _flightDistanceFact; Fact _flightTimeFact; Fact _distanceToHomeFact; + Fact _hobbsFact; VehicleGPSFactGroup _gpsFactGroup; VehicleBatteryFactGroup _batteryFactGroup; @@ -1077,6 +1082,7 @@ private: static const char* _flightDistanceFactName; static const char* _flightTimeFactName; static const char* _distanceToHomeFactName; + static const char* _hobbsFactName; static const char* _gpsFactGroupName; static const char* _batteryFactGroupName; diff --git a/src/Vehicle/VehicleFact.json b/src/Vehicle/VehicleFact.json index f50f0d860..ae6d59c50 100644 --- a/src/Vehicle/VehicleFact.json +++ b/src/Vehicle/VehicleFact.json @@ -74,5 +74,10 @@ "shortDescription": "Flight Time", "type": "elapsedSeconds", "decimalPlaces": 1 +}, +{ + "name": "hobbs", + "shortDescription": "Hobbs Meter", + "type": "string" } ] -- 2.22.0