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.