QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
QGCSensors.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtPositioning/QGeoPositionInfo>
4#include <QtSensors/QAmbientTemperatureSensor>
5#include <QtSensors/QCompass>
6#include <QtSensors/QPressureSensor>
7
8namespace QGCSensors
9{
10
12
13class QGCAmbientTemperatureFilter : public QAmbientTemperatureFilter
14{
15public:
18
19 bool filter(QAmbientTemperatureReading *reading) final;
20
21private:
22 static constexpr const qreal s_minValidTemperatureC = -40.;
23 static constexpr const qreal s_maxValidTemperatureC = 85.;
24};
25
26class QGCAmbientTemperature : public QObject
27{
28 Q_OBJECT
29
30public:
31 QGCAmbientTemperature(QObject* parent = nullptr);
33
35
36 qreal temperature() const { return _temperatureC; }
37
38 bool init();
39 void quit();
40
41signals:
43
44private:
45 QAmbientTemperatureSensor* _ambientTemperature = nullptr;
46 std::shared_ptr<QGCAmbientTemperatureFilter> _ambientTemperatureFilter = nullptr;
47
48 QMetaObject::Connection _readingChangedConnection;
49
50 qreal _temperatureC = 0;
51};
52
54
55class QGCPressureFilter : public QPressureFilter
56{
57public:
60
61 bool filter(QPressureReading *reading) final;
62
63private:
64 static constexpr const qreal s_minValidPressurePa = 45000.;
65 static constexpr const qreal s_maxValidPressurePa = 110000.;
66
67 static constexpr const qreal s_minValidTemperatureC = -40.;
68 static constexpr const qreal s_maxValidTemperatureC = 85.;
69};
70
71class QGCPressure : public QObject
72{
73 Q_OBJECT
74
75public:
76 QGCPressure(QObject* parent = nullptr);
78
79 static QGCPressure* instance();
80
81 qreal pressure() const { return _pressurePa; }
82 qreal temperature() const { return _temperatureC; }
83
84 bool init();
85 void quit();
86
87signals:
89
90private:
91 QPressureSensor* _pressure = nullptr;
92 std::shared_ptr<QGCPressureFilter> _pressureFilter = nullptr;
93
94 QMetaObject::Connection _readingChangedConnection;
95
96 qreal _temperatureC = 0;
97 qreal _pressurePa = 0;
98};
99
101
102class QGCCompassFilter : public QCompassFilter
103{
104public:
107
108 bool filter(QCompassReading *reading) final;
109
110private:
111 static constexpr qreal s_minCompassCalibrationLevel = 0.65;
112};
113
114class QGCCompass : public QObject
115{
116 Q_OBJECT
117
118public:
119 QGCCompass(QObject *parent = nullptr);
120 ~QGCCompass();
121
122 static QGCCompass* instance();
123
124 bool init();
125 void quit();
126
127signals:
128 void compassUpdated(qreal azimuth);
129 void positionUpdated(QGeoPositionInfo update);
130
131private:
132 QCompass *_compass = nullptr;
133 std::shared_ptr<QGCCompassFilter> _compassFilter = nullptr;
134
135 QMetaObject::Connection _readingChangedConnection;
136
137 qreal _azimuth = 0;
138 qreal _calibrationLevel = 0;
139};
140
142
143} /* namespace QGCSensors */
bool filter(QAmbientTemperatureReading *reading) final
static QGCAmbientTemperature * instance()
Definition QGCSensors.cc:15
void temperatureUpdated(qreal temperature)
bool filter(QCompassReading *reading) final
void positionUpdated(QGeoPositionInfo update)
static QGCCompass * instance()
void compassUpdated(qreal azimuth)
bool filter(QPressureReading *reading) final
qreal pressure() const
Definition QGCSensors.h:81
static QGCPressure * instance()
void pressureUpdated(qreal pressure, qreal temperature)
qreal temperature() const
Definition QGCSensors.h:82