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:
@@ -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();
|
||||
|
||||
Reference in New Issue
Block a user