21 #include <QLocalSocket>
29 qRegisterMetaType< QList<QGeoSatelliteInfo> >(
"QList<QGeoSatelliteInfo>" );
31 startSatelliteMonitor();
43 if ( locationDataSource )
59 if ( locationDataSource )
63 if ( mInfo.isValid() )
91 QgsDebugMsg( QStringLiteral(
"Valid QGeoPositionInfo, positionUpdated" ) );
97 const QList<QGeoSatelliteInfo> &satellites )
101 for (
int i = 0; i < satellites.size(); ++i )
103 QGeoSatelliteInfo currentSatellite = satellites.at( i );
105 satelliteInfo.
azimuth = currentSatellite.attribute( QGeoSatelliteInfo::Azimuth );
106 satelliteInfo.
elevation = currentSatellite.attribute( QGeoSatelliteInfo::Elevation );
107 #if defined(HAVE_QT_MOBILITY_LOCATION )
108 satelliteInfo.
id = currentSatellite.prnNumber();
110 satelliteInfo.
id = currentSatellite.satelliteIdentifier();
112 satelliteInfo.
signal = currentSatellite.signalStrength();
117 QgsDebugMsg( QStringLiteral(
"satellitesInViewUpdated" ) );
121 const QList<QGeoSatelliteInfo> &satellites )
127 for (
const QGeoSatelliteInfo ¤tSatellite : satellites )
130 #if defined(HAVE_QT_MOBILITY_LOCATION )
139 #if defined(HAVE_QT_MOBILITY_LOCATION )
140 if ( satInView.
id == currentSatellite.prnNumber() )
142 if ( satInView.
id == currentSatellite.satelliteIdentifier() )
145 satInView.
inUse =
true;
152 QgsDebugMsg( QStringLiteral(
"satellitesInUseUpdated" ) );
155 void QgsQtLocationConnection::startGPS()
157 QgsDebugMsg( QStringLiteral(
"Starting GPS QtLocation connection" ) );
159 if ( !locationDataSource )
161 locationDataSource = QGeoPositionInfoSource::createDefaultSource(
this );
162 if ( locationDataSource )
164 locationDataSource->setPreferredPositioningMethods( QGeoPositionInfoSource::SatellitePositioningMethods );
165 locationDataSource->setUpdateInterval( 1000 );
168 QObject::connect( locationDataSource.data(),
169 &QGeoPositionInfoSource::positionUpdated,
173 locationDataSource->startUpdates();
178 QgsDebugMsg( QStringLiteral(
"No QtLocation Position Source" ) );
184 locationDataSource->startUpdates();
188 void QgsQtLocationConnection::startSatelliteMonitor()
190 QgsDebugMsg( QStringLiteral(
"Starting GPS QtLocation satellite monitor" ) );
192 if ( !satelliteInfoSource )
194 satelliteInfoSource = QGeoSatelliteInfoSource::createDefaultSource(
this );
195 if ( satelliteInfoSource )
197 QgsDebugMsg( QStringLiteral(
"satelliteMonitor started" ) );
201 QObject::connect( satelliteInfoSource.data(),
202 &QGeoSatelliteInfoSource::satellitesInUseUpdated,
209 QObject::connect( satelliteInfoSource.data(),
210 &QGeoSatelliteInfoSource::satellitesInViewUpdated,
215 satelliteInfoSource->startUpdates();
220 QgsDebugMsg( QStringLiteral(
"No QtLocation Satellite Source" ) );
226 satelliteInfoSource->startUpdates();
Abstract base class for connection to a GPS device.
QgsGpsInformation mLastGPSInformation
Last state of the gps related variables (e.g. position, time, ...)
Status mStatus
Connection status.
void stateChanged(const QgsGpsInformation &info)
void satellitesInViewUpdated(const QList< QGeoSatelliteInfo > &satellites)
Called when the number of satellites in view is updated.
void broadcastConnectionAvailable()
Needed to make QtLocation detected.
QgsQtLocationConnection()
void positionUpdated(const QGeoPositionInfo &info)
Called when the position updated.
void satellitesInUseUpdated(const QList< QGeoSatelliteInfo > &satellites)
Called when the number of satellites in use is updated.
void parseData() override
Parse available data source content.
Encapsulates information relating to a GPS satellite.
double elevation
Elevation of the satellite, in degrees.
bool inUse
true if satellite was used in obtaining the position fix.
int signal
Signal strength (0-99dB), or -1 if not available.
int id
Contains the satellite identifier number.
double azimuth
The azimuth of the satellite to true north, in degrees.