QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
GPSReceiverFactGroup.h
Go to the documentation of this file.
1#pragma once
2
3#include <initializer_list>
4#include <optional>
5
6#include <QtQmlIntegration/QtQmlIntegration>
7
8#include "FactGroup.h"
9#include "GPSReceiverConfig.h"
10#include "GPSReceiverReports.h"
11
16{
17 Q_OBJECT
18 QML_ELEMENT
19 QML_UNCREATABLE("Provided by GPSReceiver")
20 Q_PROPERTY(Fact* currentDuration READ currentDuration CONSTANT FINAL)
21 Q_PROPERTY(Fact* currentAccuracy READ currentAccuracy CONSTANT FINAL)
22 Q_PROPERTY(Fact* valid READ valid CONSTANT FINAL)
23 Q_PROPERTY(Fact* active READ active CONSTANT FINAL)
24 Q_PROPERTY(Fact* numSatellites READ numSatellites CONSTANT FINAL)
25 Q_PROPERTY(Fact* numSatellitesUsed READ numSatellitesUsed CONSTANT FINAL)
26 Q_PROPERTY(Fact* fixType READ fixType CONSTANT FINAL)
27 Q_PROPERTY(Fact* jammingState READ jammingState CONSTANT FINAL)
28 Q_PROPERTY(Fact* spoofingState READ spoofingState CONSTANT FINAL)
29 Q_PROPERTY(Fact* antennaState READ antennaState CONSTANT FINAL)
33 Q_PROPERTY(bool receiverWarning READ receiverWarning NOTIFY receiverWarningChanged FINAL)
34
35 friend class GPSReceiver;
36 friend class GPSManager;
37
38public:
39 Fact* currentDuration() { return &_currentDurationFact; }
40
41 Fact* currentAccuracy() { return &_currentAccuracyFact; }
42
43 Fact* valid() { return &_validFact; }
44
45 Fact* active() { return &_activeFact; }
46
47 Fact* numSatellites() { return &_numSatellitesFact; }
48
49 Fact* numSatellitesUsed() { return &_numSatellitesUsedFact; }
50
51 Fact* fixType() { return &_fixTypeFact; }
52
53 Fact* jammingState() { return &_jammingStateFact; }
54
55 Fact* spoofingState() { return &_spoofingStateFact; }
56
57 Fact* antennaState() { return &_antennaStateFact; }
58
61 std::optional<GPSBaseStationConfig::Fixed> currentBasePosition() const { return _currentBasePosition; }
62
63 bool canSaveCurrentBasePosition() const { return _currentBasePosition.has_value(); }
64
65 bool currentBasePositionSaved() const { return _currentBasePositionSaved; }
66
68 bool receiverWarning() const { return _receiverWarning; }
69
70signals:
73
74private:
76 explicit GPSReceiverFactGroup(QObject* parent);
77
78 // Written by GPSReceiver.
79 void _setSurvey(const GPSSurveyReport& report);
80 void _setSatellites(int inView, int used);
81 void _setSolution(GPSFixQuality fixType, const GPSIntegrityReport& integrity);
83 void _clearSolution();
85 void _reset();
86
87 void _setConfigured(bool configured) { _setTelemetryAvailable(configured); }
88
89 static void _update(Fact& fact, const QVariant& value);
90 static void _restoreDefaults(std::initializer_list<Fact*> facts);
91 void _setCurrentBasePosition(const std::optional<GPSBaseStationConfig::Fixed>& base);
92 void _setCurrentBasePositionSaved(bool saved);
93 void _updateReceiverWarning();
94
95 std::optional<GPSBaseStationConfig::Fixed> _currentBasePosition;
96 bool _currentBasePositionSaved = false;
97 bool _receiverWarning = false;
98
99 Fact _currentDurationFact = Fact(0, QStringLiteral("currentDuration"), FactMetaData::valueTypeDouble);
100 Fact _currentAccuracyFact = Fact(0, QStringLiteral("currentAccuracy"), FactMetaData::valueTypeDouble);
101 Fact _validFact = Fact(0, QStringLiteral("valid"), FactMetaData::valueTypeBool);
102 Fact _activeFact = Fact(0, QStringLiteral("active"), FactMetaData::valueTypeBool);
103 Fact _numSatellitesFact = Fact(0, QStringLiteral("numSatellites"), FactMetaData::valueTypeInt32);
104 Fact _numSatellitesUsedFact = Fact(0, QStringLiteral("numSatellitesUsed"), FactMetaData::valueTypeInt32);
105 Fact _fixTypeFact = Fact(0, QStringLiteral("fixType"), FactMetaData::valueTypeUint32);
106 Fact _jammingStateFact = Fact(0, QStringLiteral("jammingState"), FactMetaData::valueTypeUint8);
107 Fact _spoofingStateFact = Fact(0, QStringLiteral("spoofingState"), FactMetaData::valueTypeUint8);
108 Fact _antennaStateFact = Fact(0, QStringLiteral("antennaState"), FactMetaData::valueTypeUint8);
109};
Used to group Facts together into an object hierarachy.
Definition FactGroup.h:16
void _setTelemetryAvailable(bool telemetryAvailable)
Definition FactGroup.cc:175
A Fact is used to hold a single value within the system.
Definition Fact.h:15
bool receiverWarning() const
Jamming at Warning or Critical, any spoofing indication, or an open or shorted antenna.
bool canSaveCurrentBasePosition() const
std::optional< GPSBaseStationConfig::Fixed > currentBasePosition() const
bool currentBasePositionSaved() const
void currentBasePositionChanged()