QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
SimulatedPosition.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtPositioning/QGeoPositionInfoSource>
4#include <QtCore/QLoggingCategory>
5
6Q_DECLARE_LOGGING_CATEGORY(SimulatedPositionLog)
7
8class Vehicle;
9class QTimer;
10
11class SimulatedPosition : public QGeoPositionInfoSource
12{
13 Q_OBJECT
14
15public:
16 SimulatedPosition(QObject* parent = nullptr);
18
19 QGeoPositionInfo lastKnownPosition(bool /*fromSatellitePositioningMethodsOnly = false*/) const final { return _lastPosition; }
20
21 PositioningMethods supportedPositioningMethods() const final { return PositioningMethod::AllPositioningMethods; }
22 int minimumUpdateInterval() const final { return kUpdateIntervalMsecs; }
23 Error error() const final { return QGeoPositionInfoSource::NoError; }
24
25public slots:
26 void startUpdates() final;
27 void stopUpdates() final;
28 void requestUpdate(int timeout = 5000) final;
29
30private slots:
31 void _updatePosition();
32 void _vehicleAdded(Vehicle *vehicle);
33 void _vehicleHomePositionChanged(QGeoCoordinate homePosition);
34
35private:
36 QTimer *_updateTimer = nullptr;
37 QGeoPositionInfo _lastPosition;
38 QMetaObject::Connection _homePositionChangedConnection;
39
40 static constexpr int kUpdateIntervalMsecs = 1000;
41 static constexpr qreal kHorizontalVelocityMetersPerSec = 0.5;
42 static constexpr qreal kVerticalVelocityMetersPerSec = 0.1;
43 static constexpr qreal kHeading = 45.;
44};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
int minimumUpdateInterval() const final
Error error() const final
QGeoPositionInfo lastKnownPosition(bool) const final
void requestUpdate(int timeout=5000) final
PositioningMethods supportedPositioningMethods() const final
void startUpdates() final