QGroundControl
Ground Control Station for MAVLink Drones
Loading...
Searching...
No Matches
NTRIPHttpTransport.h
Go to the documentation of this file.
1#pragma once
2
3#include <chrono>
4
5#include <QtCore/QPointer>
6#include <QtCore/QString>
7
9#include "NTRIPTransport.h"
10#include "RTCMFramer.h"
11#include "ScheduledTask.h"
12
15
17{
18 Q_OBJECT
20
21public:
22 static constexpr std::chrono::milliseconds CONNECT_TIMEOUT{10000};
23 static constexpr std::chrono::milliseconds DATA_WATCHDOG{30000};
24
25 NTRIPHttpTransport(const NTRIPConnectionConfig& config, const QVector<int>& rtcmWhitelist,
26 QObject* parent = nullptr, RuntimeScheduler* scheduler = nullptr);
27 ~NTRIPHttpTransport() override;
28
29 void start() override;
30 void stop() override;
31 void sendNMEA(const QByteArray& nmea) override;
32
33 void setRtcmWhitelist(const QVector<int>& messageIds) override { _rtcmDecoder.setWhitelist(messageIds); }
34
35private:
37 NTRIPHttpSession* _attachSession(NTRIPHttpSession* session);
38 qint64 _nowMs() const;
39 void _startConnectTimeout();
40 void _startDataWatchdog(std::chrono::milliseconds delay);
41 void _fail(const NTRIPFailure& failure);
42 void _retireSession();
44 bool _isCurrent(const NTRIPHttpSession* session) const;
45 void _stopTimers();
46 void _onResponseStarted();
47 void _parseRtcm(const QByteArray& buffer, qint64 receivedAtMs);
48
50
51 QPointer<NTRIPHttpSession> _session;
52 RuntimeScheduler* const _scheduler;
53 ScheduledTask _connectTimeoutTask;
54 ScheduledTask _dataWatchdogTask;
55
56 RTCMFrameDecoder _rtcmDecoder;
57 qint64 _lastValidFrameMs = 0;
58 bool _dataSinceValidFrame = false;
59 bool _stopped = false;
60};
Config config
void sendNMEA(const QByteArray &nmea) override
friend class NTRIPHttpTransportTest
static constexpr std::chrono::milliseconds CONNECT_TIMEOUT
static constexpr std::chrono::milliseconds DATA_WATCHDOG
void setRtcmWhitelist(const QVector< int > &messageIds) override
Live-apply the RTCM whitelist without tearing down the connection.
Frames RTCM bytes while retaining the first fragment's monotonic receipt time.
Definition RTCMFramer.h:102
void setWhitelist(const QVector< int > &ids)
Definition RTCMFramer.h:127