Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qnmeapositioninfosource_p.h
Go to the documentation of this file.
1
// Copyright (C) 2018 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
#
ifndef
QNMEAPOSITIONINFOSOURCE_P_H
5
#
define
QNMEAPOSITIONINFOSOURCE_P_H
6
7
//
8
// W A R N I N G
9
// -------------
10
//
11
// This file is not part of the Qt API. It exists purely as an
12
// implementation detail. This header file may change from version to
13
// version without notice, or even be removed.
14
//
15
// We mean it.
16
//
17
18
#
include
"qnmeapositioninfosource.h"
19
#
include
"qgeopositioninfo.h"
20
21
#
include
<
QObject
>
22
#
include
<
QQueue
>
23
#
include
<
QPointer
>
24
#
include
<
QtCore
/
qtimer
.
h
>
25
#
include
<
QtCore
/
private
/
qglobal_p
.
h
>
26
27
QT_BEGIN_NAMESPACE
28
29
class
QBasicTimer;
30
class
QTimerEvent;
31
class
QTimer;
32
33
class
QNmeaReader
;
34
struct
QPendingGeoPositionInfo
35
{
36
QGeoPositionInfo
info
;
37
bool
hasFix
;
38
};
39
40
41
class
QNmeaPositionInfoSourcePrivate
:
public
QObject
42
{
43
Q_OBJECT
44
public
:
45
QNmeaPositionInfoSourcePrivate
(
QNmeaPositionInfoSource
*
parent
,
QNmeaPositionInfoSource
::
UpdateMode
updateMode
);
46
~
QNmeaPositionInfoSourcePrivate
();
47
48
void
startUpdates
();
49
void
stopUpdates
();
50
void
requestUpdate
(
int
msec);
51
52
bool
parsePosInfoFromNmeaData
(QByteArrayView data,
53
QGeoPositionInfo *posInfo,
54
bool
*hasFix);
55
56
void
notifyNewUpdate
(QGeoPositionInfo *update,
bool
fixStatus);
57
58
QNmeaPositionInfoSource
::
UpdateMode
m_updateMode
;
59
QPointer
<
QIODevice
>
m_device
;
60
QGeoPositionInfo
m_lastUpdate
;
61
bool
m_invokedStart
;
62
QGeoPositionInfoSource
::
Error
m_positionError
;
63
double
m_userEquivalentRangeError
;
64
65
public
Q_SLOTS
:
66
void
readyRead
();
67
68
protected
:
69
void
timerEvent
(QTimerEvent *event)
override
;
70
71
private
Q_SLOTS
:
72
void
emitPendingUpdate
();
73
void
sourceDataClosed();
74
void
updateRequestTimeout();
75
76
private
:
77
bool
openSourceDevice();
78
bool
initialize();
79
void
prepareSourceDevice();
80
void
emitUpdated(
const
QGeoPositionInfo &update);
81
82
QNmeaPositionInfoSource *m_source;
83
QNmeaReader
*m_nmeaReader;
84
QGeoPositionInfo m_pendingUpdate;
85
QDate m_currentDate;
86
QBasicTimer *m_updateTimer;
// the timer used in startUpdates()
87
QTimer *m_requestTimer;
// the timer used in requestUpdate()
88
qreal m_horizontalAccuracy;
89
qreal m_verticalAccuracy;
90
bool
m_noUpdateLastInterval;
91
bool
m_updateTimeoutSent;
92
bool
m_connectedReadyRead;
93
};
94
95
96
class
QNmeaReader
97
{
98
public
:
99
explicit
QNmeaReader
(
QNmeaPositionInfoSourcePrivate
*sourcePrivate)
100
:
m_proxy
(sourcePrivate) {}
101
virtual
~
QNmeaReader
();
102
103
virtual
void
readAvailableData
() = 0;
104
105
protected
:
106
QNmeaPositionInfoSourcePrivate
*
m_proxy
;
107
};
108
109
110
class
QNmeaRealTimeReader
:
public
QNmeaReader
111
{
112
public
:
113
explicit
QNmeaRealTimeReader
(
QNmeaPositionInfoSourcePrivate
*sourcePrivate);
114
~
QNmeaRealTimeReader
()
override
;
115
116
void
readAvailableData
()
override
;
117
void
notifyNewUpdate
();
118
119
// Data members
120
QGeoPositionInfo
m_update
;
121
QDateTime
m_lastPushedTS
;
122
bool
m_updateParsed
=
false
;
123
bool
m_hasFix
=
false
;
124
QTimer
m_timer
;
125
int
m_pushDelay
= -1;
126
};
127
128
129
class
QNmeaSimulatedReader
:
public
QObject
,
public
QNmeaReader
130
{
131
Q_OBJECT
132
public
:
133
explicit
QNmeaSimulatedReader
(
QNmeaPositionInfoSourcePrivate
*
sourcePrivate
);
134
~
QNmeaSimulatedReader
();
135
void
readAvailableData
()
override
;
136
137
protected
:
138
void
timerEvent
(QTimerEvent *event)
override
;
139
140
private
Q_SLOTS
:
141
void
simulatePendingUpdate
();
142
143
private
:
144
bool
setFirstDateTime();
145
void
processNextSentence();
146
147
QQueue<QPendingGeoPositionInfo> m_pendingUpdates;
148
QByteArray m_nextLine;
149
int
m_currTimerId;
150
bool
m_hasValidDateTime;
151
};
152
153
QT_END_NAMESPACE
154
155
#
endif
QByteArray::FromBase64Result
\inmodule QtCore
Definition
qbytearray.h:824
QNmeaPositionInfoSourcePrivate
Definition
qnmeapositioninfosource_p.h:42
QNmeaPositionInfoSourcePrivate::notifyNewUpdate
void notifyNewUpdate(QGeoPositionInfo *update, bool fixStatus)
Definition
qnmeapositioninfosource.cpp:628
QNmeaPositionInfoSourcePrivate::~QNmeaPositionInfoSourcePrivate
~QNmeaPositionInfoSourcePrivate()
Definition
qnmeapositioninfosource.cpp:472
QNmeaPositionInfoSourcePrivate::m_lastUpdate
QGeoPositionInfo m_lastUpdate
Definition
qnmeapositioninfosource_p.h:60
QNmeaPositionInfoSourcePrivate::parsePosInfoFromNmeaData
bool parsePosInfoFromNmeaData(QByteArrayView data, QGeoPositionInfo *posInfo, bool *hasFix)
Definition
qnmeapositioninfosource.cpp:539
QNmeaPositionInfoSourcePrivate::requestUpdate
void requestUpdate(int msec)
Definition
qnmeapositioninfosource.cpp:595
QNmeaPositionInfoSourcePrivate::m_userEquivalentRangeError
double m_userEquivalentRangeError
Definition
qnmeapositioninfosource_p.h:63
QNmeaPositionInfoSourcePrivate::m_device
QPointer< QIODevice > m_device
Definition
qnmeapositioninfosource_p.h:59
QNmeaPositionInfoSourcePrivate::m_positionError
QGeoPositionInfoSource::Error m_positionError
Definition
qnmeapositioninfosource_p.h:62
QNmeaPositionInfoSourcePrivate::timerEvent
void timerEvent(QTimerEvent *event) override
This event handler can be reimplemented in a subclass to receive timer events for the object.
Definition
qnmeapositioninfosource.cpp:677
QNmeaPositionInfoSourcePrivate::startUpdates
void startUpdates()
Definition
qnmeapositioninfosource.cpp:545
QNmeaPositionInfoSourcePrivate::stopUpdates
void stopUpdates()
Definition
qnmeapositioninfosource.cpp:586
QNmeaPositionInfoSourcePrivate::m_invokedStart
bool m_invokedStart
Definition
qnmeapositioninfosource_p.h:61
QNmeaReader
Definition
qnmeapositioninfosource_p.h:97
QNmeaReader::QNmeaReader
QNmeaReader(QNmeaPositionInfoSourcePrivate *sourcePrivate)
Definition
qnmeapositioninfosource_p.h:99
QNmeaReader::m_proxy
QNmeaPositionInfoSourcePrivate * m_proxy
Definition
qnmeapositioninfosource_p.h:106
QNmeaReader::readAvailableData
virtual void readAvailableData()=0
QNmeaReader::~QNmeaReader
virtual ~QNmeaReader()
QNmeaRealTimeReader
Definition
qnmeapositioninfosource_p.h:111
QNmeaRealTimeReader::m_pushDelay
int m_pushDelay
Definition
qnmeapositioninfosource_p.h:125
QNmeaRealTimeReader::readAvailableData
void readAvailableData() override
Definition
qnmeapositioninfosource.cpp:157
QNmeaRealTimeReader::~QNmeaRealTimeReader
~QNmeaRealTimeReader() override
QNmeaRealTimeReader::notifyNewUpdate
void notifyNewUpdate()
Definition
qnmeapositioninfosource.cpp:246
QNmeaRealTimeReader::QNmeaRealTimeReader
QNmeaRealTimeReader(QNmeaPositionInfoSourcePrivate *sourcePrivate)
Definition
qnmeapositioninfosource.cpp:129
QNmeaRealTimeReader::m_timer
QTimer m_timer
Definition
qnmeapositioninfosource_p.h:124
QNmeaRealTimeReader::m_update
QGeoPositionInfo m_update
Definition
qnmeapositioninfosource_p.h:120
QNmeaRealTimeReader::m_updateParsed
bool m_updateParsed
Definition
qnmeapositioninfosource_p.h:122
QNmeaRealTimeReader::m_lastPushedTS
QDateTime m_lastPushedTS
Definition
qnmeapositioninfosource_p.h:121
QNmeaRealTimeReader::m_hasFix
bool m_hasFix
Definition
qnmeapositioninfosource_p.h:123
QNmeaSimulatedReader
Definition
qnmeapositioninfosource_p.h:130
QNmeaSimulatedReader::timerEvent
void timerEvent(QTimerEvent *event) override
This event handler can be reimplemented in a subclass to receive timer events for the object.
Definition
qnmeapositioninfosource.cpp:424
QNmeaSimulatedReader::~QNmeaSimulatedReader
~QNmeaSimulatedReader()
Definition
qnmeapositioninfosource.cpp:269
QNmeaSimulatedReader::readAvailableData
void readAvailableData() override
Definition
qnmeapositioninfosource.cpp:275
USE_POSITION_NMEA_PIMPL
#define USE_POSITION_NMEA_PIMPL
Definition
qnmeapositioninfosource.cpp:23
propagateCoordinate
static bool propagateCoordinate(QGeoPositionInfo &dst, const QGeoPositionInfo &src, bool force=true)
Definition
qnmeapositioninfosource.cpp:43
processSentence
static int processSentence(QGeoPositionInfo &info, QByteArray &m_nextLine, QNmeaPositionInfoSourcePrivate *m_proxy, QQueue< QPendingGeoPositionInfo > &m_pendingUpdates, bool &hasFix)
Definition
qnmeapositioninfosource.cpp:298
propagateAttributes
static bool propagateAttributes(QGeoPositionInfo &dst, const QGeoPositionInfo &src, bool force=true)
Definition
qnmeapositioninfosource.cpp:76
msecsTo
static qint64 msecsTo(const QDateTime &from, const QDateTime &to)
Definition
qnmeapositioninfosource.cpp:115
propagateDate
static bool propagateDate(QGeoPositionInfo &dst, const QGeoPositionInfo &src)
Definition
qnmeapositioninfosource.cpp:67
mergePositions
static bool mergePositions(QGeoPositionInfo &dst, const QGeoPositionInfo &src, QByteArray nmeaSentence)
Definition
qnmeapositioninfosource.cpp:98
QPendingGeoPositionInfo
Definition
qnmeapositioninfosource_p.h:35
QPendingGeoPositionInfo::hasFix
bool hasFix
Definition
qnmeapositioninfosource_p.h:37
QPendingGeoPositionInfo::info
QGeoPositionInfo info
Definition
qnmeapositioninfosource_p.h:36
qtpositioning
src
positioning
qnmeapositioninfosource_p.h
Generated on
for Qt by
1.18.0