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 <QtQmlIntegration/QtQmlIntegration>
7
9
11class Vehicle;
12
13// Supporting Open Drone ID protocol
14class RemoteIDManager : public QObject
15{
16 Q_OBJECT
17 QML_ELEMENT
18 QML_UNCREATABLE("")
19public:
20 RemoteIDManager(Vehicle* vehicle);
21
22 Q_PROPERTY(bool available READ available NOTIFY availableChanged)
24 Q_PROPERTY(QString armStatusError READ armStatusError NOTIFY armStatusErrorChanged)
29
30 // Declare emergency
31 Q_INVOKABLE void setEmergency(bool declare);
32
33 bool available (void) const { return _available; }
34 bool armStatusGoodToArm (void) const { return _armStatusGoodToArm; }
35 QString armStatusError (void) const { return _armStatusError; }
36 bool ridDeviceCommsGood (void) const { return _ridDeviceCommsGood; }
37 bool gcsPositionUsable (void) const { return _gcsPositionUsable; }
38 bool vehicleReportsBasicIDMissing(void) const { return _vehicleReportsBasicIDMissing; }
39 bool emergencyDeclared (void) const { return _emergencyDeclared;}
40
42
48
49signals:
57
58private slots:
59 void _odidTimeout();
60 void _sendMessages();
61
62private:
63 void _handleArmStatus(mavlink_message_t& message);
64
65 // Self ID
66 void _sendSelfIDMsg ();
67 QByteArray _getSelfIDDescription() const;
68
69 // Operator ID
70 void _sendOperatorID ();
71
72 // System
73 void _sendSystem();
74 uint32_t _timestamp2019();
75
76 // Basic ID
77 void _sendBasicID();
78
79 // GCS position status
80 void _updateGcsPositionStatus(bool usable, const QString& error = QString());
81
82 Vehicle* _vehicle;
83 RemoteIDSettings* _settings;
84
85 // Flags ODID
86 bool _available = false;
87 bool _armStatusGoodToArm;
88 QString _armStatusError;
89 bool _ridDeviceCommsGood;
90 bool _gcsPositionUsable;
91 QString _gcsPositionError;
92 bool _gcsAltitudeNotGeodeticReported = false;
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()