3#include <QtCore/QChronoTimer>
4#include <QtCore/QLoggingCategory>
5#include <QtCore/QObject>
6#include <QtCore/QPointer>
7#include <QtQmlIntegration/QtQmlIntegration>
17Q_DECLARE_LOGGING_CATEGORY(NTRIPManagerLog)
140 bool _dispatch(
Event ev,
const QString& detail = {});
153 void _startTransport();
154 void _teardownTransport();
159 static constexpr int kMinReconnectMs = 1000;
160 static constexpr int kMaxReconnectMs = 30000;
161 static constexpr int kMaxReconnectAttempts = 100;
163 void _scheduleReconnect();
165 void _cancelReconnect() { _reconnectTimer.stop(); }
167 void _resetReconnectAttempts() { _reconnectAttempts = 0; }
169 int _reconnectBackoffMs()
const;
171 bool _reconnectExhausted()
const {
return _reconnectAttempts >= kMaxReconnectAttempts; }
177 void _onTransportError(
NTRIPError code,
const QString& detail);
178 void _onPlaintextCredentialsWarning();
179 void _setSecurityWarning(
const QString& warning);
180 void _rtcmDataReceived(
const QByteArray& data,
int messageId);
181 void _onSettingChanged();
182 bool _isEnabled()
const;
186 void _setupRtcmUdpInput();
193 QString _statusMessage;
194 QString _securityWarning;
197 QPointer<NTRIPTransport> _injectedTransport;
198 QPointer<NTRIPTransport> _transport;
200 QPointer<RTCMMavlink> _rtcmMavlink;
208 static constexpr std::chrono::milliseconds kSettingsDebounceMs{250};
209 QChronoTimer _settingsDebounceTimer{
this};
210 QChronoTimer _reconnectTimer{
this};
211 int _reconnectAttempts = 0;
212 bool _initialized =
false;
QString currentSource() const
void statusMessageChanged()
ConnectionStatus connectionStatus() const
void setRtcmMavlink(RTCMMavlink *mavlink)
void casterStatusChanged(CasterStatus status)
Q_INVOKABLE void selectMountpoint(const QString &mountpoint)
ConnectionStatus
Public connection status. Numeric values are stable — QML binds against them.
void setTransportForTest(NTRIPTransport *transport)
Q_INVOKABLE void fetchMountpoints()
QString securityWarning() const
static NTRIPManager * instance()
NTRIPSourceTableController * sourceTableController()
RTCMMavlink * rtcmMavlink() const
CasterStatus casterStatus() const
void securityWarningChanged()
QString statusMessage() const
@ StartRequested
startNTRIP() called or settings enable went true.
@ ReconnectGaveUp
NTRIPReconnectPolicy fired gaveUp().
@ HotReconfigure
Transport-affecting setting changed while connected; reconnect in place.
@ TransportFatalError
NTRIPTransport emitted a non-retryable error.
@ RTCMBeforeConnected
RTCM data arrived before the connected() signal was processed.
@ ConfigInvalid
NTRIPTransportConfig::isValid() returned false.
@ TransportError
NTRIPTransport emitted a retryable error.
@ TransportConnected
NTRIPTransport emitted connected().
@ StopRequested
stopNTRIP() called or settings enable went false.
@ ReconnectDue
NTRIPReconnectPolicy fired reconnectRequested().
QString ggaSource() const
void connectionStatusChanged()
NTRIPConnectionStats * connectionStats()
friend class NTRIPManagerTest
Q_INVOKABLE void selectMountpoint(const QString &mountpoint)