From 4eff9a96845e3e87b12ea036bb5d32cbc05fd47a Mon Sep 17 00:00:00 2001 From: Gatis Paeglis Date: Mon, 2 Sep 2013 08:51:10 +0200 Subject: Introducing eAndroid sensor plugin Change-Id: I8d0bad4ca759cf6d4f6f1f0ef67e6251b3b0e42f Reviewed-by: Eirik Aavitsland --- .../sensors/eandroid/eandroidmagnetometer.cpp | 39 ++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100644 src/plugins/sensors/eandroid/eandroidmagnetometer.cpp (limited to 'src/plugins/sensors/eandroid/eandroidmagnetometer.cpp') 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(&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(); +} -- cgit v1.2.3