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
qnmeasatelliteinfosource_p.h
Go to the documentation of this file.
1
// Copyright (C) 2021 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
5
#
ifndef
QNMESATELLITEINFOSOURCE_P_H
6
#
define
QNMESATELLITEINFOSOURCE_P_H
7
8
//
9
// W A R N I N G
10
// -------------
11
//
12
// This file is not part of the Qt API. It exists purely as an
13
// implementation detail. This header file may change from version to
14
// version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
19
#
include
"qnmeasatelliteinfosource.h"
20
#
include
<
QtPositioning
/
qgeosatelliteinfo
.
h
>
21
22
#
include
<
QObject
>
23
#
include
<
QQueue
>
24
#
include
<
QPointer
>
25
#
include
<
QMap
>
26
#
include
<
QtCore
/
qiodevice
.
h
>
27
#
include
<
QtCore
/
qtimer
.
h
>
28
#
include
<
QtCore
/
private
/
qglobal_p
.
h
>
29
30
#
include
<
memory
>
31
32
QT_BEGIN_NAMESPACE
33
34
#
define
USE_SATELLITE_NMEA_PIMPL
1
35
36
struct
SatelliteInfo
37
{
38
QList<QGeoSatelliteInfo> satellitesInView;
39
QList<QGeoSatelliteInfo> satellitesInUse;
40
QList<
int
> inUseIds;
// temp buffer for GSA received before GSV
41
bool
satellitesInUseReceived =
false
;
42
bool
updatingGSV =
false
;
43
bool
validInView =
false
;
44
bool
validInUse =
false
;
45
};
46
47
struct
QNmeaSatelliteInfoUpdate
48
{
49
QMap
<
QGeoSatelliteInfo
::
SatelliteSystem
,
SatelliteInfo
>
m_satellites
;
50
QList
<
QGeoSatelliteInfo
>
m_satellitesInViewParsed
;
51
bool
m_validInView
=
false
;
// global state for all satellite systems
52
bool
m_validInUse
=
false
;
// global state for all satellite systems
53
bool
m_fresh
=
false
;
54
#
if
USE_SATELLITE_NMEA_PIMPL
55
QByteArray
gsa
;
56
QList
<
QByteArray
>
gsv
;
57
#
endif
58
QList
<
QGeoSatelliteInfo
>
allSatellitesInUse
()
const
;
59
QList
<
QGeoSatelliteInfo
>
allSatellitesInView
()
const
;
60
void
setSatellitesInView
(QGeoSatelliteInfo::SatelliteSystem system,
61
const
QList<QGeoSatelliteInfo> &inView);
62
bool
setSatellitesInUse
(QGeoSatelliteInfo::SatelliteSystem system,
const
QList<
int
> &inUse);
63
void
consume
();
64
bool
isFresh
()
const
;
65
void
clear
();
66
bool
isValid
()
const
;
67
bool
calculateValidInUse
()
const
;
68
bool
calculateValidInView
()
const
;
69
};
70
71
class
QNmeaSatelliteReader
;
72
class
QNmeaSatelliteInfoSourcePrivate
:
public
QObject
73
{
74
Q_OBJECT
75
public
:
76
QNmeaSatelliteInfoSourcePrivate
(
QNmeaSatelliteInfoSource
*
parent
,
QNmeaSatelliteInfoSource
::
UpdateMode
updateMode
);
77
~
QNmeaSatelliteInfoSourcePrivate
();
78
79
void
startUpdates
();
80
void
stopUpdates
();
81
void
requestUpdate
(
int
msec);
82
void
notifyNewUpdate
();
83
void
processNmeaData
(
QNmeaSatelliteInfoUpdate
&updateInfo);
84
85
public
slots
:
86
void
readyRead
();
87
void
emitPendingUpdate
();
88
void
sourceDataClosed
();
89
void
updateRequestTimeout
();
90
91
public
:
92
QNmeaSatelliteInfoSource
*
m_source
=
nullptr
;
93
QGeoSatelliteInfoSource
::
Error
m_satelliteError
=
QGeoSatelliteInfoSource
::
NoError
;
94
QPointer
<
QIODevice
>
m_device
;
95
QNmeaSatelliteInfoUpdate
m_pendingUpdate
;
96
QNmeaSatelliteInfoUpdate
m_lastUpdate
;
97
bool
m_invokedStart
=
false
;
98
bool
m_noUpdateLastInterval
=
false
;
99
bool
m_updateTimeoutSent
=
false
;
100
bool
m_connectedReadyRead
=
false
;
101
QBasicTimer
*
m_updateTimer
=
nullptr
;
// the timer used in startUpdates()
102
QTimer
*
m_requestTimer
=
nullptr
;
// the timer used in requestUpdate()
103
std
::
unique_ptr
<
QNmeaSatelliteReader
>
m_nmeaReader
;
104
QNmeaSatelliteInfoSource
::
UpdateMode
m_updateMode
;
105
int
m_simulationUpdateInterval
= 100;
106
107
protected
:
108
bool
openSourceDevice
();
109
bool
initialize
();
110
void
prepareSourceDevice
();
111
bool
emitUpdated
(
QNmeaSatelliteInfoUpdate
&update,
bool
fromRequestUpdate);
112
void
timerEvent
(QTimerEvent *event)
override
;
113
};
114
115
class
QNmeaSatelliteReader
116
{
117
public
:
118
QNmeaSatelliteReader
(
QNmeaSatelliteInfoSourcePrivate
*sourcePrivate);
119
virtual
~
QNmeaSatelliteReader
();
120
121
virtual
void
readAvailableData
() = 0;
122
123
protected
:
124
QNmeaSatelliteInfoSourcePrivate
*
m_proxy
;
125
};
126
127
class
QNmeaSatelliteRealTimeReader
:
public
QNmeaSatelliteReader
128
{
129
public
:
130
QNmeaSatelliteRealTimeReader
(
QNmeaSatelliteInfoSourcePrivate
*sourcePrivate);
131
void
readAvailableData
()
override
;
132
};
133
134
class
QNmeaSatelliteSimulationReader
:
public
QNmeaSatelliteReader
135
{
136
public
:
137
QNmeaSatelliteSimulationReader
(
QNmeaSatelliteInfoSourcePrivate
*sourcePrivate);
138
void
readAvailableData
()
override
;
139
void
setUpdateInterval
(
int
msec);
140
int
updateInterval
()
const
;
141
142
private
:
143
std::unique_ptr<QTimer> m_timer;
144
int
m_updateInterval;
145
};
146
147
QT_END_NAMESPACE
148
149
#
endif
QNmeaSatelliteInfoSourcePrivate
Definition
qnmeasatelliteinfosource_p.h:73
QNmeaSatelliteInfoSourcePrivate::emitUpdated
bool emitUpdated(QNmeaSatelliteInfoUpdate &update, bool fromRequestUpdate)
Definition
qnmeasatelliteinfosource.cpp:298
QNmeaSatelliteInfoSourcePrivate::m_noUpdateLastInterval
bool m_noUpdateLastInterval
Definition
qnmeasatelliteinfosource_p.h:98
QNmeaSatelliteInfoSourcePrivate::prepareSourceDevice
void prepareSourceDevice()
Definition
qnmeasatelliteinfosource.cpp:284
QNmeaSatelliteInfoSourcePrivate::initialize
bool initialize()
Definition
qnmeasatelliteinfosource.cpp:268
QNmeaSatelliteInfoSourcePrivate::m_updateTimeoutSent
bool m_updateTimeoutSent
Definition
qnmeasatelliteinfosource_p.h:99
QNmeaSatelliteInfoSourcePrivate::m_requestTimer
QTimer * m_requestTimer
Definition
qnmeasatelliteinfosource_p.h:102
QNmeaSatelliteInfoSourcePrivate::m_lastUpdate
QNmeaSatelliteInfoUpdate m_lastUpdate
Definition
qnmeasatelliteinfosource_p.h:96
QNmeaSatelliteInfoSourcePrivate::m_pendingUpdate
QNmeaSatelliteInfoUpdate m_pendingUpdate
Definition
qnmeasatelliteinfosource_p.h:95
QNmeaSatelliteInfoSourcePrivate::emitPendingUpdate
void emitPendingUpdate()
Definition
qnmeasatelliteinfosource.cpp:220
QNmeaSatelliteInfoSourcePrivate::~QNmeaSatelliteInfoSourcePrivate
~QNmeaSatelliteInfoSourcePrivate()
Definition
qnmeasatelliteinfosource.cpp:134
QNmeaSatelliteInfoSourcePrivate::m_invokedStart
bool m_invokedStart
Definition
qnmeasatelliteinfosource_p.h:97
QNmeaSatelliteInfoSourcePrivate::m_connectedReadyRead
bool m_connectedReadyRead
Definition
qnmeasatelliteinfosource_p.h:100
QNmeaSatelliteInfoSourcePrivate::m_source
QNmeaSatelliteInfoSource * m_source
Definition
qnmeasatelliteinfosource_p.h:92
QNmeaSatelliteInfoSourcePrivate::openSourceDevice
bool openSourceDevice()
Definition
qnmeasatelliteinfosource.cpp:249
QNmeaSatelliteInfoSourcePrivate::processNmeaData
void processNmeaData(QNmeaSatelliteInfoUpdate &updateInfo)
Definition
qnmeasatelliteinfosource.cpp:75
QNmeaSatelliteInfoSourcePrivate::m_nmeaReader
std::unique_ptr< QNmeaSatelliteReader > m_nmeaReader
Definition
qnmeasatelliteinfosource_p.h:103
QNmeaSatelliteInfoSourcePrivate::requestUpdate
void requestUpdate(int msec)
Definition
qnmeasatelliteinfosource.cpp:187
QNmeaSatelliteInfoSourcePrivate::notifyNewUpdate
void notifyNewUpdate()
Definition
qnmeasatelliteinfosource.cpp:54
QNmeaSatelliteInfoSourcePrivate::sourceDataClosed
void sourceDataClosed()
Definition
qnmeasatelliteinfosource.cpp:237
QNmeaSatelliteInfoSourcePrivate::startUpdates
void startUpdates()
Definition
qnmeasatelliteinfosource.cpp:139
QNmeaSatelliteInfoSourcePrivate::m_updateTimer
QBasicTimer * m_updateTimer
Definition
qnmeasatelliteinfosource_p.h:101
QNmeaSatelliteInfoSourcePrivate::stopUpdates
void stopUpdates()
Definition
qnmeasatelliteinfosource.cpp:178
QNmeaSatelliteInfoSourcePrivate::timerEvent
void timerEvent(QTimerEvent *event) override
This event handler can be reimplemented in a subclass to receive timer events for the object.
Definition
qnmeasatelliteinfosource.cpp:336
QNmeaSatelliteInfoSourcePrivate::updateRequestTimeout
void updateRequestTimeout()
Definition
qnmeasatelliteinfosource.cpp:243
QNmeaSatelliteInfoSourcePrivate::m_simulationUpdateInterval
int m_simulationUpdateInterval
Definition
qnmeasatelliteinfosource_p.h:105
QNmeaSatelliteInfoSourcePrivate::m_device
QPointer< QIODevice > m_device
Definition
qnmeasatelliteinfosource_p.h:94
QNmeaSatelliteInfoSourcePrivate::m_satelliteError
QGeoSatelliteInfoSource::Error m_satelliteError
Definition
qnmeasatelliteinfosource_p.h:93
QNmeaSatelliteReader
Definition
qnmeasatelliteinfosource_p.h:116
QNmeaSatelliteReader::readAvailableData
virtual void readAvailableData()=0
QNmeaSatelliteReader::m_proxy
QNmeaSatelliteInfoSourcePrivate * m_proxy
Definition
qnmeasatelliteinfosource_p.h:124
QNmeaSatelliteReader::QNmeaSatelliteReader
QNmeaSatelliteReader(QNmeaSatelliteInfoSourcePrivate *sourcePrivate)
Definition
qnmeasatelliteinfosource.cpp:829
QNmeaSatelliteReader::~QNmeaSatelliteReader
virtual ~QNmeaSatelliteReader()
Definition
qnmeasatelliteinfosource.cpp:834
QNmeaSatelliteRealTimeReader
Definition
qnmeasatelliteinfosource_p.h:128
QNmeaSatelliteRealTimeReader::QNmeaSatelliteRealTimeReader
QNmeaSatelliteRealTimeReader(QNmeaSatelliteInfoSourcePrivate *sourcePrivate)
Definition
qnmeasatelliteinfosource.cpp:838
QNmeaSatelliteRealTimeReader::readAvailableData
void readAvailableData() override
Definition
qnmeasatelliteinfosource.cpp:843
QNmeaSatelliteSimulationReader
Definition
qnmeasatelliteinfosource_p.h:135
QNmeaSatelliteSimulationReader::setUpdateInterval
void setUpdateInterval(int msec)
Definition
qnmeasatelliteinfosource.cpp:903
QNmeaSatelliteSimulationReader::updateInterval
int updateInterval() const
Definition
qnmeasatelliteinfosource.cpp:911
QNmeaSatelliteSimulationReader::readAvailableData
void readAvailableData() override
Definition
qnmeasatelliteinfosource.cpp:861
QNmeaSatelliteSimulationReader::QNmeaSatelliteSimulationReader
QNmeaSatelliteSimulationReader(QNmeaSatelliteInfoSourcePrivate *sourcePrivate)
Definition
qnmeasatelliteinfosource.cpp:850
USE_SATELLITE_NMEA_PIMPL
#define USE_SATELLITE_NMEA_PIMPL
Definition
qnmeasatelliteinfosource_p.h:34
QNmeaSatelliteInfoUpdate
Definition
qnmeasatelliteinfosource_p.h:48
QNmeaSatelliteInfoUpdate::m_fresh
bool m_fresh
Definition
qnmeasatelliteinfosource_p.h:53
QNmeaSatelliteInfoUpdate::m_satellites
QMap< QGeoSatelliteInfo::SatelliteSystem, SatelliteInfo > m_satellites
Definition
qnmeasatelliteinfosource_p.h:49
QNmeaSatelliteInfoUpdate::setSatellitesInUse
bool setSatellitesInUse(QGeoSatelliteInfo::SatelliteSystem system, const QList< int > &inUse)
Definition
qnmeasatelliteinfosource.cpp:737
QNmeaSatelliteInfoUpdate::allSatellitesInView
QList< QGeoSatelliteInfo > allSatellitesInView() const
Definition
qnmeasatelliteinfosource.cpp:665
QNmeaSatelliteInfoUpdate::calculateValidInView
bool calculateValidInView() const
Definition
qnmeasatelliteinfosource.cpp:820
QNmeaSatelliteInfoUpdate::m_validInView
bool m_validInView
Definition
qnmeasatelliteinfosource_p.h:51
QNmeaSatelliteInfoUpdate::gsv
QList< QByteArray > gsv
Definition
qnmeasatelliteinfosource_p.h:56
QNmeaSatelliteInfoUpdate::clear
void clear()
Definition
qnmeasatelliteinfosource.cpp:792
QNmeaSatelliteInfoUpdate::calculateValidInUse
bool calculateValidInUse() const
Definition
qnmeasatelliteinfosource.cpp:811
QNmeaSatelliteInfoUpdate::isFresh
bool isFresh() const
Definition
qnmeasatelliteinfosource.cpp:787
QNmeaSatelliteInfoUpdate::consume
void consume()
Definition
qnmeasatelliteinfosource.cpp:782
QNmeaSatelliteInfoUpdate::m_validInUse
bool m_validInUse
Definition
qnmeasatelliteinfosource_p.h:52
QNmeaSatelliteInfoUpdate::allSatellitesInUse
QList< QGeoSatelliteInfo > allSatellitesInUse() const
Definition
qnmeasatelliteinfosource.cpp:657
QNmeaSatelliteInfoUpdate::isValid
bool isValid() const
Definition
qnmeasatelliteinfosource.cpp:805
QNmeaSatelliteInfoUpdate::m_satellitesInViewParsed
QList< QGeoSatelliteInfo > m_satellitesInViewParsed
Definition
qnmeasatelliteinfosource_p.h:50
QNmeaSatelliteInfoUpdate::setSatellitesInView
void setSatellitesInView(QGeoSatelliteInfo::SatelliteSystem system, const QList< QGeoSatelliteInfo > &inView)
Definition
qnmeasatelliteinfosource.cpp:673
QNmeaSatelliteInfoUpdate::gsa
QByteArray gsa
Definition
qnmeasatelliteinfosource_p.h:55
qtpositioning
src
positioning
qnmeasatelliteinfosource_p.h
Generated on
for Qt by
1.18.0