diff options
author | Gatis Paeglis <gatis.paeglis@digia.com> | 2013-09-02 08:51:10 +0200 |
---|---|---|
committer | Gatis Paeglis <gatis.paeglis@digia.com> | 2013-09-20 12:05:56 +0300 |
commit | 4eff9a96845e3e87b12ea036bb5d32cbc05fd47a (patch) | |
tree | 5ac4c79dd0f568504d2c2db915bc1011b30f27e4 /src/plugins/sensors/eandroid/eandroidmagnetometer.cpp | |
parent | 31ce4063bdafa0b6c1b852d0167792ada4faf946 (diff) |
Introducing eAndroid sensor plugin
Change-Id: I8d0bad4ca759cf6d4f6f1f0ef67e6251b3b0e42f
Reviewed-by: Eirik Aavitsland <eirik.aavitsland@digia.com>
Diffstat (limited to 'src/plugins/sensors/eandroid/eandroidmagnetometer.cpp')
-rw-r--r-- | src/plugins/sensors/eandroid/eandroidmagnetometer.cpp | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/src/plugins/sensors/eandroid/eandroidmagnetometer.cpp b/src/plugins/sensors/eandroid/eandroidmagnetometer.cpp new file mode 100644 index 0000000..8747d45 --- /dev/null +++ b/src/plugins/sensors/eandroid/eandroidmagnetometer.cpp @@ -0,0 +1,39 @@ +#include "eandroidmagnetometer.h" + +EAndroidMagnetometer::EAndroidMagnetometer(int type, QSensor *sensor) + : EAndroidBaseSensor(type, sensor) +{ + setReading<QMagnetometerReading>(&m_reading); +} + +EAndroidMagnetometer::~EAndroidMagnetometer() +{ +} + +void EAndroidMagnetometer::processEvent(sensors_event_t &event) +{ + m_reading.setTimestamp(event.timestamp / 1000); + // convect micro-Tesla to tesla + m_reading.setX(event.magnetic.x / 1e6); + m_reading.setY(event.magnetic.y / 1e6); + m_reading.setZ(event.magnetic.z / 1e6); + + switch (event.magnetic.status) { + case SENSOR_STATUS_UNRELIABLE: + m_reading.setCalibrationLevel(0.0); + break; + case SENSOR_STATUS_ACCURACY_LOW: + m_reading.setCalibrationLevel(0.3); + break; + case SENSOR_STATUS_ACCURACY_MEDIUM: + m_reading.setCalibrationLevel(0.6); + break; + case SENSOR_STATUS_ACCURACY_HIGH: + m_reading.setCalibrationLevel(1.0); + break; + default: + break; + } + + newReadingAvailable(); +} |