uadc.hh
Go to the documentation of this file.
1 
9 #pragma once
10 
11 
12 // 3rd party
13 #include <QByteArray>
14 #include <QDebug>
15 #include <QObject>
16 // dfti
17 #include "sensor/serialsensor.hh"
18 #include "settings/settings.hh"
19 
20 
21 namespace dfti {
22 
23 
25 const char uadcTerm = '\n';
27 const quint8 uadcPktLen = 56;
29 const quint8 uadcPktCksumPos = 53;
31 const quint8 uadcPktIasPos = 7;
33 const quint8 uadcPktIasLen = 5;
35 const quint8 uadcPktAoAPos = 14;
37 const quint8 uadcPktAoALen = 6;
39 const quint8 uadcPktAoSPos = 22;
41 const quint8 uadcPktAoSLen = 6;
43 const quint8 uadcPktAltPos = 30;
45 const quint8 uadcPktAltLen = 5;
47 const quint8 uadcPktPtPos = 37;
49 const quint8 uadcPktPtLen = 6;
51 const quint8 uadcPktPsPos = 45;
53 const quint8 uadcPktPsLen = 6;
54 
55 
57 
64 bool validateUADCChecksum(QByteArray pkt);
65 
66 
68 struct uADCData
69 {
71  quint32 id = 0;
73 
78  float iasMps = 0;
80 
83  float aoaDeg = 0;
85 
88  float aosDeg = 0;
90  quint16 altM = 0;
92  quint32 ptPa = 0;
94  quint32 psPa = 0;
95 };
96 
97 
99 
115 class uADC : public SerialSensor
116 {
117  Q_OBJECT;
118 
119 public:
121 
125  explicit uADC(Settings *_settings, QObject* _parent = nullptr);
126 
127 public slots:
129  void readData(void);
130 
131 signals:
133  void measurementUpdate(uADCData data);
134 
135 private:
137 
143  QByteArray _buf;
144 
146  uADCData data;
147 };
148 
149 
150 }; // namespace dfti
const quint8 uadcPktIasPos
uADC packet velocity byte start position.
Definition: uadc.hh:31
Serial IO Sensor interface.
const quint8 uadcPktIasLen
uADC packet velocity byte length.
Definition: uadc.hh:33
const quint8 uadcPktAoSPos
uADC packet AoS byte start position.
Definition: uadc.hh:39
Base class for interfacing with sensors over a serial port (UART/RS-232).
Definition: serialsensor.hh:30
Structure to hold uADC data.
Definition: uadc.hh:68
const char uadcTerm
uADC packet terminator.
Definition: uadc.hh:25
const quint8 uadcPktAoSLen
uADC packet AoS byte length.
Definition: uadc.hh:41
const quint8 uadcPktPtLen
uADC packet total pressure byte length.
Definition: uadc.hh:49
const quint8 uadcPktAoAPos
uADC packet AoA byte start position.
Definition: uadc.hh:35
const quint8 uadcPktPtPos
uADC packet total pressure byte start position.
Definition: uadc.hh:47
Definition: autopilot.cc:12
float iasMps
Indicated Airspeed, meters / second.
Definition: uadc.hh:78
Settings manager.
Definition: settings.hh:30
quint16 altM
Pressure altitude, meters.
Definition: uadc.hh:90
float aosDeg
Sideslip Angle, degrees.
Definition: uadc.hh:88
const quint8 uadcPktPsPos
uADC packet static pressure byte start position.
Definition: uadc.hh:51
const quint8 uadcPktLen
uADC packet length.
Definition: uadc.hh:27
quint32 ptPa
Total Pressure, Pa.
Definition: uadc.hh:92
float aoaDeg
Angle-of-Attack, degrees.
Definition: uadc.hh:83
const quint8 uadcPktCksumPos
uADC packet checksum pos.
Definition: uadc.hh:29
const quint8 uadcPktAltPos
uADC packet altitude byte start position.
Definition: uadc.hh:43
DFTI settings manager interface.
const quint8 uadcPktAoALen
uADC packet AoA byte length.
Definition: uadc.hh:37
const quint8 uadcPktPsLen
uADC packet static pressure byte length.
Definition: uadc.hh:53
quint32 psPa
Static Pressure, Pa.
Definition: uadc.hh:94
const quint8 uadcPktAltLen
uADC packet altitude byte length.
Definition: uadc.hh:45
bool validateUADCChecksum(QByteArray pkt)
Validate the uADC packet checksum.
Definition: uadc.cc:109
Serial driver to acquire data from a Micro Air Data Computer.
Definition: uadc.hh:115