25 Q_MOC_INCLUDE(
"QmlObjectListModel.h")
35 Q_PROPERTY(
double dataRateBytesPerSec READ dataRateBytesPerSec NOTIFY
dataRateChanged)
38 enum class ConnectionStatus {
45 Q_ENUM(ConnectionStatus)
47 enum class CasterStatus { CasterConnected, CasterNoLocation, CasterError };
50 enum class MountpointFetchStatus {
56 Q_ENUM(MountpointFetchStatus)
58 static constexpr int kMinReconnectMs = 1000;
59 static constexpr int kMaxReconnectMs = 30000;
60 static constexpr int kMaxReconnectAttempts = 100;
61 static constexpr int kSourceTableCacheTtlMs = 60000;
68 ConnectionStatus connectionStatus()
const {
return _connectionStatus; }
69 QString statusMessage()
const {
return _statusMessage; }
70 CasterStatus casterStatus()
const {
return _casterStatus; }
71 QString ggaSource()
const {
return _ggaSource; }
73 MountpointFetchStatus mountpointFetchStatus()
const {
return _mountpointFetchStatus; }
74 QString mountpointFetchError()
const {
return _mountpointFetchError; }
75 quint64 bytesReceived()
const {
return _bytesReceived; }
76 quint32 messagesReceived()
const {
return _messagesReceived; }
77 double dataRateBytesPerSec()
const {
return _dataRateBytesPerSec; }
79 Q_INVOKABLE
void fetchMountpoints();
80 Q_INVOKABLE
void selectMountpoint(
const QString& mountpoint);
85 static QByteArray makeGGA(
const QGeoCoordinate& coord,
double altitude_msl);
100 void _tcpError(
const QString& errorMsg);
101 void _rtcmDataReceived(
const QByteArray& data);
102 void _onSettingChanged();
104 void _scheduleReconnect();
105 void _setStatus(ConnectionStatus status,
const QString& msg = {});
108 QPair<QGeoCoordinate, QString> _getBestPosition()
const;
110 QTimer* _ggaTimer =
nullptr;
112 ConnectionStatus _connectionStatus = ConnectionStatus::Disconnected;
113 QString _statusMessage;
118 QTimer* _reconnectTimer =
nullptr;
119 int _reconnectAttempts = 0;
120 bool _startStopBusy =
false;
122 CasterStatus _casterStatus = CasterStatus::CasterError;
124 QUdpSocket* _udpSocket =
nullptr;
125 QHostAddress _udpTargetAddress;
126 quint16 _udpTargetPort = 0;
127 bool _udpForwardEnabled =
false;
130 bool _runningUdpForward =
false;
131 QString _runningUdpAddr;
132 quint16 _runningUdpPort = 0;
136 MountpointFetchStatus _mountpointFetchStatus = MountpointFetchStatus::FetchIdle;
137 QString _mountpointFetchError;
139 quint64 _bytesReceived = 0;
140 quint32 _messagesReceived = 0;
141 double _dataRateBytesPerSec = 0.0;
142 quint64 _dataRatePrevBytes = 0;
143 QTimer* _dataRateTimer =
nullptr;
145 qint64 _sourceTableFetchedAtMs = 0;