QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
ADSBVehicle.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QElapsedTimer>
4#include <QtCore/QtNumeric>
5#include <QtCore/QObject>
6#include <QtPositioning/QGeoCoordinate>
7#include <QtQmlIntegration/QtQmlIntegration>
8
9#include "ADSB.h"
10
11class ADSBVehicle : public QObject
12{
13 Q_OBJECT
14 // QML_ELEMENT
15
16 friend class ADSBTest;
17
18 Q_PROPERTY(uint icaoAddress READ icaoAddress CONSTANT)
19 Q_PROPERTY(QString callsign READ callsign NOTIFY callsignChanged)
20 Q_PROPERTY(QGeoCoordinate coordinate READ coordinate NOTIFY coordinateChanged)
21 Q_PROPERTY(double altitude READ altitude NOTIFY altitudeChanged)
22 Q_PROPERTY(double heading READ heading NOTIFY headingChanged)
23 Q_PROPERTY(double velocity READ velocity NOTIFY velocityChanged)
24 Q_PROPERTY(double verticalVel READ verticalVel NOTIFY verticalVelChanged)
25 Q_PROPERTY(uint16_t squawk READ squawk NOTIFY squawkChanged)
26 Q_PROPERTY(bool alert READ alert NOTIFY alertChanged)
27
28public:
29 explicit ADSBVehicle(const ADSB::VehicleInfo_t &vehicleInfo, QObject *parent = nullptr);
31
32 uint32_t icaoAddress() const { return _info.icaoAddress; }
33 QString callsign() const { return _info.callsign; }
34 QGeoCoordinate coordinate() const { return _info.location; }
35 double altitude() const { return _info.location.altitude(); }
36 double heading() const { return _info.heading; }
37 double velocity() const { return _info.velocity; }
38 double verticalVel() const { return _info.verticalVel; }
39 uint16_t squawk() const { return _info.squawk; }
40 bool alert() const { return _info.alert; }
41 bool expired() const { return !_lastUpdateTimer.isValid() || _lastUpdateTimer.hasExpired(_expirationTimeoutMs); }
42 void update(const ADSB::VehicleInfo_t &vehicleInfo);
43
44signals:
53
54private:
55 ADSB::VehicleInfo_t _info{};
56 QElapsedTimer _lastUpdateTimer;
57 QElapsedTimer _lastPropertyUpdateTimer;
58
59 static constexpr qint64 _expirationTimeoutMs = 120000;
60 static constexpr qint64 _propertyUpdateMinIntervalMs = 1000;
61};
void coordinateChanged()
double altitude() const
Definition ADSBVehicle.h:35
double velocity() const
Definition ADSBVehicle.h:37
void headingChanged()
void squawkChanged()
double heading() const
Definition ADSBVehicle.h:36
bool alert() const
Definition ADSBVehicle.h:40
QString callsign() const
Definition ADSBVehicle.h:33
void callsignChanged()
uint16_t squawk() const
Definition ADSBVehicle.h:39
QGeoCoordinate coordinate() const
Definition ADSBVehicle.h:34
void update(const ADSB::VehicleInfo_t &vehicleInfo)
void altitudeChanged()
friend class ADSBTest
Definition ADSBVehicle.h:16
double verticalVel() const
Definition ADSBVehicle.h:38
void alertChanged()
bool expired() const
Definition ADSBVehicle.h:41
void velocityChanged()
uint32_t icaoAddress() const
Definition ADSBVehicle.h:32
void verticalVelChanged()
uint32_t icaoAddress
Definition ADSB.h:49
double velocity
Definition ADSB.h:54
double verticalVel
Definition ADSB.h:55
double heading
Definition ADSB.h:52
QString callsign
Definition ADSB.h:50
QGeoCoordinate location
Definition ADSB.h:51
uint16_t squawk
Definition ADSB.h:53