QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
RTCMMavlink.h
Go to the documentation of this file.
1#pragma once
2
3#include <QtCore/QByteArray>
4#include <QtCore/QList>
5#include <QtCore/QObject>
6#include <atomic>
7#include <cstdint>
8
9#include "DataRateTracker.h"
10
11typedef struct __mavlink_gps_rtcm_data_t mavlink_gps_rtcm_data_t;
12
16{
17 uint8_t flags = 0;
18 QByteArray data; // 0..kFragmentLen bytes
19};
20
21class RTCMMavlink : public QObject
22{
23 Q_OBJECT
24 Q_PROPERTY(quint64 totalBytesSent READ totalBytesSent NOTIFY bandwidthChanged)
25 Q_PROPERTY(double bandwidthKBps READ bandwidthKBps NOTIFY bandwidthChanged)
26
27public:
29 static constexpr qsizetype kFragmentLen = 180;
31 static constexpr qsizetype kMaxFragments = 4;
33 static constexpr qsizetype kMaxAssembledLen = kFragmentLen * kMaxFragments;
34
35 RTCMMavlink(QObject* parent = nullptr);
37
38 quint64 totalBytesSent() const { return _rateTracker.totalBytes(); }
39
40 double bandwidthKBps() const { return _rateTracker.kBps(); }
41
54 {
55 QList<GpsRtcmPacket> packets;
56 uint8_t nextSequenceId = 0;
57 };
58
59 static PackResult pack(QByteArrayView data, uint8_t sequenceId);
60
61public slots:
62 void RTCMDataUpdate(QByteArrayView data);
63
64public:
67 void sendSimulatedData(const std::atomic_bool& requestStop);
68
69signals:
71
72private:
73 static void _sendMessageOnAllLinks(const mavlink_gps_rtcm_data_t& data);
74 static uint8_t _makeFlags(bool fragmented, uint8_t fragmentId, uint8_t sequenceId);
75
76 uint8_t _sequenceId = 0;
77 DataRateTracker _rateTracker;
78};
double kBps() const
Current data rate in KB/s.
quint64 totalBytes() const
Total bytes recorded since construction or last reset.
uint8_t flags
Definition RTCMMavlink.h:17
QByteArray data
Definition RTCMMavlink.h:18