summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/eandroid/eandroidmagnetometer.cpp
diff options
context:
space:
mode:
authorGatis Paeglis <gatis.paeglis@digia.com>2013-09-02 08:51:10 +0200
committerGatis Paeglis <gatis.paeglis@digia.com>2013-09-20 12:05:56 +0300
commit4eff9a96845e3e87b12ea036bb5d32cbc05fd47a (patch)
tree5ac4c79dd0f568504d2c2db915bc1011b30f27e4 /src/plugins/sensors/eandroid/eandroidmagnetometer.cpp
parent31ce4063bdafa0b6c1b852d0167792ada4faf946 (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.cpp39
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();
+}