QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
MAVLinkMessage.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QObject>
4#include <QtCore/QString>
5#include <QtCore/QList>
6#include <QtQmlIntegration/QtQmlIntegration>
7
9
11
12class QGCMAVLinkMessage : public QObject
13{
14 Q_OBJECT
15 // QML_ELEMENT
16 Q_MOC_INCLUDE("QmlObjectListModel.h")
17 Q_PROPERTY(quint32 id READ id CONSTANT)
18 Q_PROPERTY(quint32 sysId READ sysId CONSTANT)
19 Q_PROPERTY(quint32 compId READ compId CONSTANT)
20 Q_PROPERTY(QString name READ name CONSTANT)
21 Q_PROPERTY(QString instanceValue READ instanceValue CONSTANT)
22 Q_PROPERTY(qreal actualRateHz READ actualRateHz NOTIFY actualRateHzChanged)
23 Q_PROPERTY(int32_t targetRateHz READ targetRateHz NOTIFY targetRateHzChanged)
24 Q_PROPERTY(quint64 count READ count NOTIFY countChanged)
25 Q_PROPERTY(QmlObjectListModel *fields READ fields CONSTANT)
26 Q_PROPERTY(bool fieldSelected READ fieldSelected NOTIFY fieldSelectedChanged)
27 Q_PROPERTY(bool selected READ selected NOTIFY selectedChanged)
28
29public:
30 explicit QGCMAVLinkMessage(const mavlink_message_t &message, const QString &instanceValue = QString(), QObject *parent = nullptr);
32
34 static QString extractInstanceValue(const mavlink_message_t &message);
35
36 quint32 id() const { return _message.msgid; }
37 quint8 sysId() const { return _message.sysid; }
38 quint8 compId() const { return _message.compid; }
39 QString name() const { return _name; }
40 QString instanceValue() const { return _instanceValue; }
41 qreal actualRateHz() const { return _actualRateHz; }
42 int32_t targetRateHz() const { return _targetRateHz; }
43 quint64 count() const { return _count; }
44 quint64 lastCount() const { return _lastCount; }
45 QmlObjectListModel *fields() const { return _fields; }
46 bool fieldSelected() const { return _fieldSelected; }
47 bool selected() const { return _selected; }
48
50 void update(const mavlink_message_t &message);
51 void updateFreq();
52 void setSelected(bool sel);
53 void setTargetRateHz(int32_t rate);
54
55signals:
61
62private:
63 void _updateFields();
64 static QString _extractDebugInstanceValue(const mavlink_message_t &message);
65
67 struct FieldMapping {
68 unsigned int fieldIndex = 0;
69 int arrayElement = -1;
70 };
71
72 mavlink_message_t _message{};
73 QmlObjectListModel *_fields = nullptr;
74 QList<FieldMapping> _fieldMappings;
75 QString _name;
76 QString _instanceValue;
77 qreal _actualRateHz = 0.0;
78 int32_t _targetRateHz = 0;
79 uint64_t _count = 1;
80 uint64_t _lastCount = 0;
81 bool _fieldSelected = false;
82 bool _selected = false;
83};
struct __mavlink_message mavlink_message_t
void setTargetRateHz(int32_t rate)
void targetRateHzChanged()
quint8 sysId() const
void setSelected(bool sel)
quint8 compId() const
void update(const mavlink_message_t &message)
QString instanceValue() const
void actualRateHzChanged()
void fieldSelectedChanged()
int32_t targetRateHz() const
qreal actualRateHz() const
quint64 lastCount() const
bool fieldSelected() const
QString name() const
static QString extractInstanceValue(const mavlink_message_t &message)
Extract the instance field value from a raw mavlink message, or empty string if none.
QmlObjectListModel * fields() const
quint64 count() const
bool selected() const
quint32 id() const