diff --git a/src/PositionManager/PositionManager.cpp b/src/PositionManager/PositionManager.cpp index b9517922ad0bf734c1976ceffe586d7709ab37d4..2b11994828c9ad0946dc7fb8c6869097ec21e32b 100644 --- a/src/PositionManager/PositionManager.cpp +++ b/src/PositionManager/PositionManager.cpp @@ -32,6 +32,7 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox) if(!_defaultSource) { //-- Otherwise, create a default one _defaultSource = QGeoPositionInfoSource::createDefaultSource(this); + qDebug() << _defaultSource; } _simulatedSource = new SimulatedPosition(); @@ -43,7 +44,7 @@ void QGCPositionManager::setToolbox(QGCToolbox *toolbox) setPositionSource(QGCPositionSource::GPS); } -void QGCPositionManager::positionUpdated(const QGeoPositionInfo &update) +void QGCPositionManager::_positionUpdated(const QGeoPositionInfo &update) { emit lastPositionUpdated(update.isValid(), QVariant::fromValue(update.coordinate())); emit positionInfoUpdated(update); @@ -58,7 +59,12 @@ void QGCPositionManager::setPositionSource(QGCPositionManager::QGCPositionSource { if (_currentSource != nullptr) { _currentSource->stopUpdates(); - disconnect(_currentSource, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo))); + disconnect(_currentSource); + } + + if (qgcApp()->runningUnitTests()) { + // Units test on travis fail due to lack of position source + return; } switch(source) { @@ -77,8 +83,19 @@ void QGCPositionManager::setPositionSource(QGCPositionManager::QGCPositionSource _updateInterval = _currentSource->minimumUpdateInterval(); _currentSource->setPreferredPositioningMethods(QGeoPositionInfoSource::SatellitePositioningMethods); _currentSource->setUpdateInterval(_updateInterval); - connect(_currentSource, SIGNAL(positionUpdated(QGeoPositionInfo)), this, SLOT(positionUpdated(QGeoPositionInfo))); + connect(_currentSource, &QGeoPositionInfoSource::positionUpdated, this, &QGCPositionManager::_positionUpdated); + connect(_currentSource, &QGeoPositionInfoSource::updateTimeout, this, &QGCPositionManager::_updateTimeout); + connect(_currentSource, SIGNAL(error(QGeoPositionInfoSource::Error)), this, SLOT(_error(QGeoPositionInfoSource::Error))); _currentSource->startUpdates(); } } +void QGCPositionManager::_error(QGeoPositionInfoSource::Error positioningError) +{ + qWarning() << "QGCPositionManager error" << positioningError; +} + +void QGCPositionManager::_updateTimeout(void) +{ + qWarning() << "QGCPositionManager updateTimeout"; +} diff --git a/src/PositionManager/PositionManager.h b/src/PositionManager/PositionManager.h index 59a8c5e5070d1bb67af37aa56b6cf4e094327b5f..be92d4a2433a703ebc0be44b3e49fce48522c10e 100644 --- a/src/PositionManager/PositionManager.h +++ b/src/PositionManager/PositionManager.h @@ -9,7 +9,7 @@ #pragma once -#include +#include #include @@ -37,7 +37,9 @@ public: void setToolbox(QGCToolbox* toolbox); private slots: - void positionUpdated(const QGeoPositionInfo &update); + void _positionUpdated(const QGeoPositionInfo &update); + void _error(QGeoPositionInfoSource::Error positioningError); + void _updateTimeout(void); signals: void lastPositionUpdated(bool valid, QVariant lastPosition);