QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
ADSBVehicleManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4
5#include "ADSB.h"
7
8class ADSBTCPLink;
9class ADSBVehicle;
11class QThread;
12class QTimer;
14
15class ADSBVehicleManager : public QObject
16{
17 Q_OBJECT
18 Q_MOC_INCLUDE("QmlObjectListModel.h")
19
20 Q_PROPERTY(const QmlObjectListModel *adsbVehicles READ adsbVehicles CONSTANT)
21
22public:
23 explicit ADSBVehicleManager(ADSBVehicleManagerSettings *settings, QObject *parent = nullptr);
25
27
28 const QmlObjectListModel *adsbVehicles() const { return _adsbVehicles; }
29
30 void mavlinkMessageReceived(const mavlink_message_t &message);
31
32public slots:
33 void adsbVehicleUpdate(const ADSB::VehicleInfo_t &vehicleInfo);
34
35private slots:
36 void _cleanupStaleVehicles();
37 void _linkError(const QString &errorMsg, bool stopped = false);
38
39private:
40 void _start(const QString &hostAddress, quint16 port);
41 void _stop();
42 void _handleADSBVehicle(const mavlink_message_t &message);
43
44 ADSBVehicleManagerSettings *_adsbSettings = nullptr;
45 QTimer *_adsbVehicleCleanupTimer = nullptr;
46 QmlObjectListModel *_adsbVehicles = nullptr;
47
48 QMap<uint32_t, ADSBVehicle*> _adsbICAOMap;
49 ADSBTCPLink *_adsbTcpLink = nullptr;
50 QThread *_adsbTcpLinkThread = nullptr;
51
52 static constexpr uint8_t kMaxTimeSinceLastSeen = 15;
53 static constexpr unsigned long kThreadStopTimeoutMs = 5000;
54};
struct __mavlink_message mavlink_message_t
void adsbVehicleUpdate(const ADSB::VehicleInfo_t &vehicleInfo)
const QmlObjectListModel * adsbVehicles() const
void mavlinkMessageReceived(const mavlink_message_t &message)
static ADSBVehicleManager * instance()