1
0
mirror of https://github.com/f4exb/sdrangel.git synced 2026-08-19 18:03:39 -04:00

Merge pull request #2879 from Newspicel/qt6-nmea-serial-port

Fix QT_NMEA_SERIAL_PORT on Qt 6
This commit is contained in:
Edouard Griffiths
2026-08-15 20:44:23 +02:00
committed by GitHub
+49
View File
@@ -21,6 +21,7 @@
#include <QCoreApplication>
#include <QString>
#include <QDebug>
#include <QVariant>
#include <QGeoPositionInfoSource>
#if (QT_VERSION >= QT_VERSION_CHECK(6, 5, 0))
#include <QPermissions>
@@ -443,10 +444,58 @@ void MainCore::requestPermissions()
requestLocationPermission(); // This requests microphone and camera permissions as well
}
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
namespace {
QGeoPositionInfoSource *createNmeaPositionSource(QObject *parent)
{
const QString serialPort = qEnvironmentVariable("QT_NMEA_SERIAL_PORT");
if (serialPort.isEmpty()) {
return nullptr;
}
QVariantMap parameters;
QString source = serialPort;
if (!source.startsWith(QStringLiteral("serial:"), Qt::CaseInsensitive) &&
!source.startsWith(QStringLiteral("file:"), Qt::CaseInsensitive)) {
source.prepend(QStringLiteral("serial:"));
}
parameters.insert(QStringLiteral("nmea.source"), source);
bool baudRateValid = false;
const int baudRate = qEnvironmentVariableIntValue("QT_NMEA_SERIAL_BAUD_RATE", &baudRateValid);
if (baudRateValid && (baudRate > 0)) {
parameters.insert(QStringLiteral("nmea.baudrate"), baudRate);
}
QGeoPositionInfoSource *positionSource = QGeoPositionInfoSource::createSource(
QStringLiteral("nmea"), parameters, parent);
if (!positionSource) {
qWarning() << "MainCore::createNmeaPositionSource: Failed to create NMEA position source for QT_NMEA_SERIAL_PORT =" << serialPort;
}
return positionSource;
}
}
#endif
// Position can take a while to determine, so we start updates at program startup
void MainCore::initPosition()
{
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
m_positionSource = createNmeaPositionSource(this);
if (!m_positionSource) {
m_positionSource = QGeoPositionInfoSource::createDefaultSource(this);
}
#else
m_positionSource = QGeoPositionInfoSource::createDefaultSource(this);
#endif
if (m_positionSource)
{
qDebug() << "MainCore::initPosition: Using position source" << m_positionSource->sourceName();