void DeviceOrientation::updateSensor(){ QCompassReading *heading = _compass.reading(); _azymuth = heading->azimuth(); _accuracy = heading->calibrationLevel(); _timestamp = QDateTime::currentDateTime().toMSecsSinceEpoch(); _validData = true; reportResult(); }
HRESULT readingChanged(ICompass *, ICompassReadingChangedEventArgs *args) { ComPtr<ICompassReading> value; HRESULT hr = args->get_Reading(&value); if (FAILED(hr)) { qCWarning(lcWinRtSensors) << "Failed to get light sensor reading." << qt_error_string(hr); return hr; } DOUBLE heading; hr = value->get_HeadingMagneticNorth(&heading); if (FAILED(hr)) { qCWarning(lcWinRtSensors) << "Failed to get compass heading." << qt_error_string(hr); return hr; } DateTime dateTime; hr = value->get_Timestamp(&dateTime); if (FAILED(hr)) { qCWarning(lcWinRtSensors) << "Failed to get compass reading timestamp." << qt_error_string(hr); return hr; } ComPtr<ICompassReadingHeadingAccuracy> accuracyReading; hr = value.As(&accuracyReading); if (FAILED(hr)) { qCWarning(lcWinRtSensors) << "Failed to cast compass reading to obtain accuracy." << qt_error_string(hr); return hr; } MagnetometerAccuracy accuracy; hr = accuracyReading->get_HeadingAccuracy(&accuracy); if (FAILED(hr)) { qCWarning(lcWinRtSensors) << "Failed to get compass reading accuracy." << qt_error_string(hr); return hr; } switch (accuracy) { default: case MagnetometerAccuracy_Unknown: reading.setCalibrationLevel(0.00); break; case MagnetometerAccuracy_Unreliable: reading.setCalibrationLevel(0.33); break; case MagnetometerAccuracy_Approximate: reading.setCalibrationLevel(0.67); break; case MagnetometerAccuracy_High: reading.setCalibrationLevel(1.00); break; } reading.setAzimuth(heading); reading.setTimestamp(dateTimeToMsSinceEpoch(dateTime)); q->newReadingAvailable(); return S_OK; }
void Compass::updateSensor() { QCompassReading *reading = m_compass->reading (); m_azimuth = reading->azimuth (); m_calibrationLevel = reading->calibrationLevel (); }
void Compass::updateSensor(){ QCompassReading *heading = m_compassSource->reading(); m_azymuth = heading->azimuth(); m_accuracy = heading->calibrationLevel(); }