QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
FactGroup.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QLoggingCategory>
4#include <QtCore/QJsonArray>
5#include <QtCore/QMap>
6#include <QtCore/QStringList>
7#include <QtCore/QTimer>
8#include <QtQmlIntegration/QtQmlIntegration>
9
10#include "Fact.h"
11#include "MAVLinkLib.h"
12
13class Vehicle;
14
16
17
18class FactGroup : public QObject
19{
20 Q_OBJECT
21 QML_ELEMENT
22 QML_UNCREATABLE("")
23 Q_PROPERTY(QStringList factNames READ factNames NOTIFY factNamesChanged)
24 Q_PROPERTY(QStringList factGroupNames READ factGroupNames NOTIFY factGroupNamesChanged)
25 Q_PROPERTY(bool telemetryAvailable READ telemetryAvailable NOTIFY telemetryAvailableChanged)
26
27public:
28 explicit FactGroup(int updateRateMsecs, const QString &metaDataFile, QObject *parent = nullptr, bool ignoreCamelCase = false);
29 explicit FactGroup(int updateRateMsecs, QObject *parent = nullptr, bool ignoreCamelCase = false);
30 virtual ~FactGroup();
31
33 Q_INVOKABLE bool factExists(const QString &name) const;
34
37 Q_INVOKABLE Fact *getFact(const QString &name) const;
38
41 Q_INVOKABLE FactGroup *getFactGroup(const QString &name) const;
42
44 Q_INVOKABLE void setLiveUpdates(bool liveUpdates);
45
46 QStringList factNames() const { return _factNames; }
47 QStringList factGroupNames() const { return _nameToFactGroupMap.keys(); }
48 bool telemetryAvailable() const { return _telemetryAvailable; }
49 const QMap<QString, FactGroup*> &factGroups() const { return _nameToFactGroupMap; }
50
52 virtual void handleMessage(Vehicle * /*vehicle*/, const mavlink_message_t & /*message*/) {}
53
54signals:
57 void telemetryAvailableChanged(bool telemetryAvailable);
58
59protected slots:
60 virtual void _updateAllValues();
61
62protected:
63 void _addFact(Fact *fact, const QString &name);
64 void _addFact(Fact *fact) { _addFact(fact, fact->name()); }
65 void _addFactGroup(FactGroup *factGroup, const QString &name);
66 void _addFactGroup(FactGroup *factGroup) { _addFactGroup(factGroup, factGroup->objectName()); }
67 void _loadFromJsonArray(const QJsonArray &jsonArray);
68 void _setTelemetryAvailable(bool telemetryAvailable);
69
70 const int _updateRateMSecs = 0;
71
72 QMap<QString, Fact*> _nameToFactMap;
73 QMap<QString, FactGroup*> _nameToFactGroupMap;
74 QMap<QString, FactMetaData*> _nameToFactMetaDataMap;
75 QStringList _factNames;
76
77private:
78 void _setupTimer();
79 static QString _camelCase(const QString &text);
80
81 QTimer _updateTimer;
82 const bool _ignoreCamelCase = false;
83 bool _telemetryAvailable = false;
84};
Q_DECLARE_LOGGING_CATEGORY(AndroidSerialLog)
struct __mavlink_message mavlink_message_t
Used to group Facts together into an object hierarachy.
Definition FactGroup.h:19
QMap< QString, Fact * > _nameToFactMap
Definition FactGroup.h:72
void telemetryAvailableChanged(bool telemetryAvailable)
QMap< QString, FactMetaData * > _nameToFactMetaDataMap
Definition FactGroup.h:74
virtual void _updateAllValues()
Definition FactGroup.cc:142
void _addFactGroup(FactGroup *factGroup)
Definition FactGroup.h:66
void _setTelemetryAvailable(bool telemetryAvailable)
Definition FactGroup.cc:172
void factGroupNamesChanged()
void _addFactGroup(FactGroup *factGroup, const QString &name)
Definition FactGroup.cc:130
void factNamesChanged()
QMap< QString, FactGroup * > _nameToFactGroupMap
Definition FactGroup.h:73
QStringList _factNames
Definition FactGroup.h:75
void _addFact(Fact *fact, const QString &name)
Definition FactGroup.cc:113
const int _updateRateMSecs
Update rate for Fact::valueChanged signals, 0: immediate update.
Definition FactGroup.h:70
void _addFact(Fact *fact)
Definition FactGroup.h:64
void _loadFromJsonArray(const QJsonArray &jsonArray)
Definition FactGroup.cc:30
A Fact is used to hold a single value within the system.
Definition Fact.h:19