Esempio n. 1
0
void DeviceOrientation::updateSensor(){
    QCompassReading *heading = _compass.reading();
    _azymuth = heading->azimuth();
    _accuracy = heading->calibrationLevel();
    _timestamp = QDateTime::currentDateTime().toMSecsSinceEpoch();

    _validData = true;
    reportResult();
}
Esempio n. 2
0
    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;
    }
Esempio n. 3
0
void Compass::updateSensor()
{
  QCompassReading *reading = m_compass->reading ();
  m_azimuth = reading->azimuth ();
  m_calibrationLevel = reading->calibrationLevel ();
}
Esempio n. 4
0
void Compass::updateSensor(){
    QCompassReading *heading = m_compassSource->reading();
    m_azymuth = heading->azimuth();
    m_accuracy = heading->calibrationLevel();
}