summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/blackberry/bbcompass.cpp
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2012-08-08 15:46:10 +0200
committerQt by Nokia <qt-info@nokia.com>2012-08-28 00:31:36 +0200
commita1637c935a0c7055cfc905c02d072af8e54fc948 (patch)
tree8de5d126e119e6a8b23da9c62b0cc17751ba61aa /src/plugins/sensors/blackberry/bbcompass.cpp
parent24334742e56d5d44c1f7b35a2c02fe7ac717ce0e (diff)
Blackberry: Use real compass sensor if available
Change-Id: Iecae90f4c315668d7ac16923ccdfcacf6153d0e8 Reviewed-by: Adam Parco <aparco@rim.com> Reviewed-by: Lorn Potter <lorn.potter@nokia.com>
Diffstat (limited to 'src/plugins/sensors/blackberry/bbcompass.cpp')
-rw-r--r--src/plugins/sensors/blackberry/bbcompass.cpp12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/plugins/sensors/blackberry/bbcompass.cpp b/src/plugins/sensors/blackberry/bbcompass.cpp
index 9ada2cd5..02f9c9fa 100644
--- a/src/plugins/sensors/blackberry/bbcompass.cpp
+++ b/src/plugins/sensors/blackberry/bbcompass.cpp
@@ -44,13 +44,20 @@
using namespace BbUtil;
BbCompass::BbCompass(QSensor *sensor)
+#ifdef HAVE_COMPASS_SENSOR
+ : BbSensorBackend<QCompassReading>(devicePath(), SENSOR_TYPE_COMPASS, sensor)
+#else
: BbSensorBackend<QCompassReading>(devicePath(), SENSOR_TYPE_ROTATION_MATRIX, sensor)
+#endif
{
setDescription(QLatin1String("Azimuth in degrees from magnetic north"));
}
bool BbCompass::updateReadingFromEvent(const sensor_event_t &event, QCompassReading *reading)
{
+#ifdef HAVE_COMPASS_SENSOR
+ reading->setAzimuth(event.compass_s.azimuth);
+#else
float xRad, yRad, zRad;
matrixToEulerZXY(event.rotation_matrix, xRad, yRad, zRad);
float azimuth = radiansToDegrees(zRad);
@@ -59,6 +66,7 @@ bool BbCompass::updateReadingFromEvent(const sensor_event_t &event, QCompassRead
else
azimuth = 360.0f - azimuth;
reading->setAzimuth(azimuth);
+#endif
switch (event.accuracy) {
case SENSOR_ACCURACY_UNRELIABLE:
@@ -85,5 +93,9 @@ bool BbCompass::updateReadingFromEvent(const sensor_event_t &event, QCompassRead
QString BbCompass::devicePath()
{
+#ifdef HAVE_COMPASS_SENSOR
+ return QLatin1String("/dev/sensor/compass");
+#else
return QLatin1String("/dev/sensor/rotMatrix");
+#endif
}