From b70496c1cccbadaa79886025f0fec8fd421ac3c8 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Mon, 2 Jan 2023 15:30:34 +0000 Subject: [PATCH] Fix crash when no logger implemented. Add additional error reporting for GPS positioning. --- sdrbase/maincore.cpp | 22 +++++++++++++++++++++- sdrbase/maincore.h | 3 +++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/sdrbase/maincore.cpp b/sdrbase/maincore.cpp index 44dc1866f..a5247e298 100644 --- a/sdrbase/maincore.cpp +++ b/sdrbase/maincore.cpp @@ -88,6 +88,12 @@ MainCore *MainCore::instance() void MainCore::setLoggingOptions() { + if (!m_logger) + { + qDebug() << "MainCore::setLoggingOptions: No logger."; + return; + } + m_logger->setConsoleMinMessageLevel(m_settings.getConsoleMinLogLevel()); if (m_settings.getUseLogFile()) @@ -346,11 +352,15 @@ void MainCore::initPosition() if (m_positionSource) { connect(m_positionSource, &QGeoPositionInfoSource::positionUpdated, this, &MainCore::positionUpdated); + connect(m_positionSource, &QGeoPositionInfoSource::updateTimeout, this, &MainCore::positionUpdateTimeout); + connect(m_positionSource, qOverload(&QGeoPositionInfoSource::error), this, &MainCore::positionError); + m_position = m_positionSource->lastKnownPosition(); + m_positionSource->setUpdateInterval(1000); m_positionSource->startUpdates(); } else { - qDebug() << "MainCore::initPosition: No position source."; + qWarning() << "MainCore::initPosition: No position source."; } } @@ -372,3 +382,13 @@ void MainCore::positionUpdated(const QGeoPositionInfo &info) } } } + +void MainCore::positionUpdateTimeout() +{ + qWarning() << "MainCore::positionUpdateTimeout: GPS signal lost"; +} + +void MainCore::positionError(QGeoPositionInfoSource::Error positioningError) +{ + qWarning() << "MainCore::positionError: " << positioningError; +} diff --git a/sdrbase/maincore.h b/sdrbase/maincore.h index e2c86ebd9..d2dfe0576 100644 --- a/sdrbase/maincore.h +++ b/sdrbase/maincore.h @@ -26,6 +26,7 @@ #include #include #include +#include #include "export.h" #include "settings/mainsettings.h" @@ -889,6 +890,8 @@ public: public slots: void positionUpdated(const QGeoPositionInfo &info); + void positionUpdateTimeout(); + void positionError(QGeoPositionInfoSource::Error positioningError); signals: void deviceSetAdded(int index, DeviceAPI *device);