QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
RemoteIDManager.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QDateTime>
5#include <QtCore/QTimer>
6#include <QtPositioning/QGeoPositionInfo>
7#include <QtQmlIntegration/QtQmlIntegration>
8
10
12class Vehicle;
13
14// Supporting Open Drone ID protocol
15class RemoteIDManager : public QObject
16{
17 Q_OBJECT
18 QML_ELEMENT
19 QML_UNCREATABLE("")
20public:
21 RemoteIDManager(Vehicle* vehicle);
22
23 Q_PROPERTY(bool available READ available NOTIFY availableChanged)
25 Q_PROPERTY(QString armStatusError READ armStatusError NOTIFY armStatusErrorChanged)
30
31 // Declare emergency
32 Q_INVOKABLE void setEmergency(bool declare);
33
34 bool available (void) const { return _available; }
35 bool armStatusGoodToArm (void) const { return _armStatusGoodToArm; }
36 QString armStatusError (void) const { return _armStatusError; }
37 bool ridDeviceCommsGood (void) const { return _ridDeviceCommsGood; }
38 bool gcsPositionUsable (void) const { return _gcsPositionUsable; }
39 bool vehicleReportsBasicIDMissing(void) const { return _vehicleReportsBasicIDMissing; }
40 bool emergencyDeclared (void) const { return _emergencyDeclared;}
41
43
49
50signals:
58
59private slots:
60 void _odidTimeout();
61 void _sendMessages();
62
63private:
64 void _handleArmStatus(mavlink_message_t& message);
65
66 // Self ID
67 void _sendSelfIDMsg ();
68 QByteArray _getSelfIDDescription() const;
69
70 // Operator ID
71 void _sendOperatorID ();
72
73 // System
74 void _sendSystem();
75 uint32_t _timestamp2019();
76
77 // Basic ID
78 void _sendBasicID();
79
80 // GCS position status
81 void _updateGcsPositionStatus(bool usable, const QString& error = QString());
82
83 Vehicle* _vehicle;
84 RemoteIDSettings* _settings;
85
86 // Flags ODID
87 bool _available = false;
88 bool _armStatusGoodToArm;
89 QString _armStatusError;
90 bool _ridDeviceCommsGood;
91 bool _gcsPositionUsable;
92 QString _gcsPositionError;
93 bool _vehicleReportsBasicIDMissing;
94
95 bool _emergencyDeclared;
96 int _targetSystem;
97 int _targetComponent;
98
99 // After emergency cleared, this makes sure the non emergency selfID message makes it to the vehicle
100 bool _enforceSendingSelfID;
101
102 static const uint8_t* _id_or_mac_unknown;
103
104 // Timers
105 QTimer _odidTimeoutTimer;
106 QTimer _sendMessagesTimer;
107};
Error error
struct __mavlink_message mavlink_message_t
void availableChanged()
bool emergencyDeclared(void) const
void mavlinkMessageReceived(mavlink_message_t &message)
bool vehicleReportsBasicIDMissing(void) const
void vehicleReportsBasicIDMissingChanged()
Q_INVOKABLE void setEmergency(bool declare)
void armStatusErrorChanged()
bool ridDeviceCommsGood(void) const
bool armStatusGoodToArm(void) const
QString armStatusError(void) const
void ridDeviceCommsGoodChanged()
bool gcsPositionUsable(void) const
void armStatusGoodToArmChanged()
void emergencyDeclaredChanged()
bool available(void) const
void gcsPositionUsableChanged()