32 qCDebug(GPSRtkLog) <<
this;
34 (void) qRegisterMetaType<satellite_info_s>(
"satellite_info_s");
35 (void) qRegisterMetaType<sensor_gps_s>(
"sensor_gps_s");
36 (void) qRegisterMetaType<GPSConnectionError>(
"GPSConnectionError");
37 (void) qRegisterMetaType<GPSSurveyInStatus>(
"GPSSurveyInStatus");
92 int manufacturerId = 4;
93 for (
const GPSTypeEntry& entry : kGPSTypeTable) {
94 if (gps_type.contains(entry.key, Qt::CaseInsensitive)) {
96 manufacturerId = entry.manufacturerId;
100 rtkSettings->baseReceiverManufacturers()->setRawValue(manufacturerId);
101 qCDebug(GPSRtkLog) <<
"Connecting GPS device" << gps_type <<
"manufacturer id" << manufacturerId;
105 _requestGpsStop =
false;
107 const bool useFixedBase =
112 .surveyInAccMeters = rtkSettings->surveyInAccuracyLimit()->rawValue().toDouble(),
113 .surveyInDurationSecs = rtkSettings->surveyInMinObservationDuration()->rawValue().toInt(),
114 .fixedBaseLatitude = rtkSettings->fixedBasePositionLatitude()->rawValue().toDouble(),
115 .fixedBaseLongitude = rtkSettings->fixedBasePositionLongitude()->rawValue().toDouble(),
116 .fixedBaseAltitudeMeters = rtkSettings->fixedBasePositionAltitude()->rawValue().toFloat(),
117 .fixedBaseAccuracyMeters = rtkSettings->fixedBasePositionAccuracy()->rawValue().toFloat(),
119 _gpsProvider =
new GPSProvider(device, type, rtkConfig, _requestGpsStop,
this);
126 qCWarning(GPSRtkLog) <<
"Shared RTCMMavlink unavailable; serial RTK corrections will not be forwarded";
132 (void) connect(_gpsProvider, &GPSProvider::finished,
this, &GPSRtk::_onGPSDisconnect);
137 (void) QMetaObject::invokeMethod(_gpsProvider,
"start", Qt::AutoConnection);
143 _requestGpsStop =
true;
144 if (_gpsProvider->wait(kGPSThreadDisconnectTimeout)) {
145 _gpsProvider->deleteLater();
147 qCWarning(GPSRtkLog) <<
"GPS thread did not exit in time; deferring cleanup to finished()";
148 (void) _gpsProvider->disconnect(
this);
149 (void) connect(_gpsProvider, &QThread::finished, _gpsProvider, &QObject::deleteLater);
151 _gpsProvider =
nullptr;