From fc56fe64fdf756571b03f072ab687150a3dd2be0 Mon Sep 17 00:00:00 2001 From: Gus Grubba Date: Fri, 10 Nov 2017 10:52:56 -0500 Subject: [PATCH] Adding access to the vehicle hobbs meter --- src/Vehicle/Vehicle.cc | 19 +++++++++++++++++++ src/Vehicle/Vehicle.h | 4 ++++ 2 files changed, 23 insertions(+) diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index e27a0ed76..a8c66952d 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -2873,6 +2873,25 @@ void Vehicle::sendPlan(QString planFile) PlanMasterController::sendPlanToVehicle(this, planFile); } +QString Vehicle::hobbsMeter() +{ + static const char* HOOBS_HI = "LND_FLIGHT_T_HI"; + static const char* HOOBS_LO = "LND_FLIGHT_T_LO"; + //-- TODO: Does this exist on non PX4? + if (_parameterManager->parameterExists(FactSystem::defaultComponentId, HOOBS_HI) && + _parameterManager->parameterExists(FactSystem::defaultComponentId, HOOBS_LO)) { + Fact* factHi = _parameterManager->getParameter(FactSystem::defaultComponentId, HOOBS_HI); + Fact* factLo = _parameterManager->getParameter(FactSystem::defaultComponentId, HOOBS_LO); + uint64_t hobbsTimeSeconds = ((uint64_t)factHi->rawValue().toUInt() << 32 | (uint64_t)factLo->rawValue().toUInt()) / 1000000; + int hours = hobbsTimeSeconds / 3600; + int minutes = (hobbsTimeSeconds % 3600) / 60; + int seconds = hobbsTimeSeconds % 60; + QString timeStr; + timeStr.sprintf("%04d:%02d:%02d", hours, minutes, seconds); + return timeStr; + } + return QString("0000:00:00"); +} //----------------------------------------------------------------------------- //----------------------------------------------------------------------------- diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index ed55428a6..9f0bb8fce 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -319,6 +319,7 @@ public: Q_PROPERTY(bool initialPlanRequestComplete READ initialPlanRequestComplete NOTIFY initialPlanRequestCompleteChanged) Q_PROPERTY(QVariantList staticCameraList READ staticCameraList CONSTANT) Q_PROPERTY(QGCCameraManager* dynamicCameras READ dynamicCameras NOTIFY dynamicCamerasChanged) + Q_PROPERTY(QString hobbsMeter READ hobbsMeter NOTIFY hobbsMeterChanged) // Vehicle state used for guided control Q_PROPERTY(bool flying READ flying NOTIFY flyingChanged) ///< Vehicle is flying @@ -690,7 +691,9 @@ public: bool capabilitiesKnown (void) const { return _vehicleCapabilitiesKnown; } uint64_t capabilityBits (void) const { return _capabilityBits; } // Change signalled by capabilityBitsChanged + QGCCameraManager* dynamicCameras () { return _cameras; } + QString hobbsMeter (); /// @true: When flying a mission the vehicle is always facing towards the next waypoint bool vehicleYawsToNextWaypointInMission(void) const; @@ -736,6 +739,7 @@ signals: void firmwareTypeChanged(void); void vehicleTypeChanged(void); void dynamicCamerasChanged(); + void hobbsMeterChanged(); void capabilitiesKnownChanged(bool capabilitiesKnown); void initialPlanRequestCompleteChanged(bool initialPlanRequestComplete); void capabilityBitsChanged(uint64_t capabilityBits); -- 2.22.0