3#include <QtCore/QSettings>
9constexpr int kLegacyPassiveManufacturer = 7;
10constexpr QLatin1StringView kManufacturerMigrated(
"manufacturerMigrated");
21LegacyNmeaSource legacyNmeaSourceFromPort(
const QString& port)
23 if (
port.isEmpty() || port == QLatin1String(
"Disabled") || port == QLatin1String(
"Serial <none available>")) {
26 return port == QLatin1String(
"UDP Port") ? NmeaUdp : NmeaSerial;
30void migrateLegacySettings()
37 if (!settings.contains(kManufacturerMigrated)) {
38 if (!settings.contains(RTKSettings::receiverRoleName)) {
39 if (settings.value(RTKSettings::baseReceiverManufacturersName).toInt() == kLegacyPassiveManufacturer) {
42 settings.remove(RTKSettings::baseReceiverManufacturersName);
44 settings.setValue(kManufacturerMigrated,
true);
46 const bool receiverConfigured = !settings.value(RTKSettings::serialDeviceName).toString().trimmed().isEmpty();
51 const QVariant autoConnect = settings.value(QStringLiteral(
"autoConnectRTKGPS"));
52 settings.remove(QStringLiteral(
"autoConnectRTKGPS"));
55 if (autoConnect.isValid() && !settings.contains(RTKSettings::autoConnectName)) {
56 settings.setValue(RTKSettings::autoConnectName, autoConnect);
64 const QString nmeaPort = settings.value(QStringLiteral(
"autoConnectNmeaPort")).toString().trimmed();
65 const int nmeaSource = settings.contains(QStringLiteral(
"nmeaSource"))
66 ? settings.value(QStringLiteral(
"nmeaSource")).toInt()
67 : legacyNmeaSourceFromPort(nmeaPort);
68 const QVariant nmeaBaud = settings.value(QStringLiteral(
"autoConnectNmeaBaud"), 4800);
69 const QVariant nmeaUdpPort = settings.value(QStringLiteral(
"nmeaUdpPort"));
70 for (
const auto* key : {
"nmeaSource",
"autoConnectNmeaPort",
"autoConnectNmeaBaud",
"nmeaUdpPort"}) {
71 settings.remove(QLatin1String(key));
74 const bool nmeaInput = nmeaSource == NmeaUdp || (nmeaSource == NmeaSerial && !nmeaPort.isEmpty());
75 const bool baseChosen = autoConnect.isValid() && autoConnect.toBool();
76 if (receiverConfigured || baseChosen || !nmeaInput) {
81 settings.setValue(RTKSettings::forwardReceiverRtcmName,
false);
83 settings.setValue(RTKSettings::autoConnectName,
true);
84 if (nmeaSource == NmeaUdp) {
86 if (nmeaUdpPort.isValid()) {
87 settings.setValue(RTKSettings::udpPortName, nmeaUdpPort);
91 settings.setValue(RTKSettings::serialDeviceName, nmeaPort);
92 settings.setValue(RTKSettings::serialBaudRateName, nmeaBaud);
101 migrateLegacySettings();
#define DECLARE_SETTINGSFACT(CLASS, NAME)
#define DECLARE_SETTINGGROUP(NAME, GROUP)
QString settingsGroup() const
GPSCommandSequence port(QByteArrayView port, unsigned baud)
Clears the SBF output of port, keeps a serial port at the link's baud, and selects SBF and the WGS84 ...