/**************************************************************************** * * (c) 2009-2020 QGROUNDCONTROL PROJECT * * QGroundControl is licensed according to the terms in the file * COPYING.md in the root of the source code directory. * ****************************************************************************/ #pragma once #include #include "QGCToolbox.h" #include class Vehicle; class SimulatedPosition : public QGeoPositionInfoSource { Q_OBJECT public: SimulatedPosition(); QGeoPositionInfo lastKnownPosition(bool fromSatellitePositioningMethodsOnly = false) const override; PositioningMethods supportedPositioningMethods (void) const override; int minimumUpdateInterval (void) const override { return _updateIntervalMsecs; } Error error (void) const override; public slots: void startUpdates (void) override; void stopUpdates (void) override; void requestUpdate (int timeout = 5000) override; private slots: void _updatePosition (void); void _vehicleAdded (Vehicle* vehicle); void _vehicleHomePositionChanged (QGeoCoordinate homePosition); private: QTimer _updateTimer; QGeoPositionInfo _lastPosition; static constexpr int _updateIntervalMsecs = 1000; static constexpr double _horizontalVelocityMetersPerSec = 0.5; static constexpr double _verticalVelocityMetersPerSec = 0.1; static constexpr double _heading = 45; };