From db7cdddd621fd2cd5ba3d22a68f393592dd64480 Mon Sep 17 00:00:00 2001 From: DonLakeFlyer Date: Sun, 22 Sep 2019 19:31:18 -0700 Subject: [PATCH] Fix flight timer --- src/Vehicle/Vehicle.cc | 16 +++++++++++++++- src/Vehicle/Vehicle.h | 3 +++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/Vehicle/Vehicle.cc b/src/Vehicle/Vehicle.cc index 1dc3153e1..8eed1b329 100644 --- a/src/Vehicle/Vehicle.cc +++ b/src/Vehicle/Vehicle.cc @@ -449,7 +449,6 @@ void Vehicle::_commonInit(void) connect(this, &Vehicle::homePositionChanged, this, &Vehicle::_updateDistanceHeadingToHome); connect(this, &Vehicle::hobbsMeterChanged, this, &Vehicle::_updateHobbsMeter); - connect(_toolbox->qgcPositionManager(), &QGCPositionManager::gcsPositionChanged, this, &Vehicle::_updateDistanceToGCS); _missionManager = new MissionManager(this); @@ -525,6 +524,9 @@ void Vehicle::_commonInit(void) _flightDistanceFact.setRawValue(0); _flightTimeFact.setRawValue(0); + _flightTimeUpdater.setInterval(1000); + _flightTimeUpdater.setSingleShot(false); + connect(&_flightTimeUpdater, &QTimer::timeout, this, &Vehicle::_updateFlightTime); // Set video stream to udp if running ArduSub and Video is disabled if (sub() && _settingsManager->videoSettings()->videoSource()->rawValue() == VideoSettings::videoDisabled) { @@ -1667,6 +1669,7 @@ void Vehicle::_updateArmed(bool armed) _clearCameraTriggerPoints(); } else { _trajectoryPoints->stop(); + _flightTimerStop(); // Also handle Video Streaming if(qgcApp()->toolbox()->videoManager()->videoReceiver()) { if(_settingsManager->videoSettings()->disableWhenDisarmed()->rawValue().toBool()) { @@ -2560,10 +2563,21 @@ void Vehicle::_clearCameraTriggerPoints(void) void Vehicle::_flightTimerStart(void) { _flightTimer.start(); + _flightTimeUpdater.start(); _flightDistanceFact.setRawValue(0); _flightTimeFact.setRawValue(0); } +void Vehicle::_flightTimerStop(void) +{ + _flightTimeUpdater.stop(); +} + +void Vehicle::_updateFlightTime(void) +{ + _flightTimeFact.setRawValue((double)_flightTimer.elapsed() / 1000.0); +} + void Vehicle::_startPlanRequest(void) { if (_missionManagerInitialRequestSent) { diff --git a/src/Vehicle/Vehicle.h b/src/Vehicle/Vehicle.h index a3d5c7a56..cde8f5812 100644 --- a/src/Vehicle/Vehicle.h +++ b/src/Vehicle/Vehicle.h @@ -1258,6 +1258,7 @@ private slots: void _adsbTimerTimeout (); void _orbitTelemetryTimeout (void); void _protocolVersionTimeOut(void); + void _updateFlightTime (void); private: bool _containsLink (LinkInterface* link); @@ -1331,6 +1332,7 @@ private: void _initializeCsv(); void _writeCsvLine(); void _flightTimerStart(void); + void _flightTimerStop(void); int _id; ///< Mavlink system id int _defaultComponentId; @@ -1461,6 +1463,7 @@ private: int _nextSendMessageMultipleIndex; QTime _flightTimer; + QTimer _flightTimeUpdater; TrajectoryPoints* _trajectoryPoints; QmlObjectListModel _cameraTriggerPoints; QmlObjectListModel _adsbVehicles; -- 2.22.0