summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config.tests/bbsensor_compass/bbsensor_compass.pro4
-rw-r--r--config.tests/bbsensor_compass/main.cpp56
-rw-r--r--qtsensors.pro1
-rw-r--r--src/plugins/sensors/blackberry/bbcompass.cpp12
-rw-r--r--src/plugins/sensors/blackberry/blackberry.pro3
5 files changed, 76 insertions, 0 deletions
diff --git a/config.tests/bbsensor_compass/bbsensor_compass.pro b/config.tests/bbsensor_compass/bbsensor_compass.pro
new file mode 100644
index 00000000..349130a3
--- /dev/null
+++ b/config.tests/bbsensor_compass/bbsensor_compass.pro
@@ -0,0 +1,4 @@
+TEMPLATE = app
+SOURCES += main.cpp
+CONFIG += qt
+requires(blackberry)
diff --git a/config.tests/bbsensor_compass/main.cpp b/config.tests/bbsensor_compass/main.cpp
new file mode 100644
index 00000000..fcaec54e
--- /dev/null
+++ b/config.tests/bbsensor_compass/main.cpp
@@ -0,0 +1,56 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Research In Motion
+** Contact: http://www.qt-project.org/
+**
+** This file is part of the QtSensors module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** GNU Lesser General Public License Usage
+** This file may be used under the terms of the GNU Lesser General Public
+** License version 2.1 as published by the Free Software Foundation and
+** appearing in the file LICENSE.LGPL included in the packaging of this
+** file. Please review the following information to ensure the GNU Lesser
+** General Public License version 2.1 requirements will be met:
+** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU General
+** Public License version 3.0 as published by the Free Software Foundation
+** and appearing in the file LICENSE.GPL included in the packaging of this
+** file. Please review the following information to ensure the GNU General
+** Public License version 3.0 requirements will be met:
+** http://www.gnu.org/copyleft/gpl.html.
+**
+** Other Usage
+** Alternatively, this file may be used in accordance with the terms and
+** conditions contained in a signed written agreement between you and Nokia.
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include <QtCore/qglobal.h>
+#ifndef Q_OS_BLACKBERRY
+#error "Missing Q_OS_BLACKBERRY"
+#endif
+#include <sensor/sensor.h>
+
+int main(int argc, char** argv)
+{
+ Q_UNUSED(argc);
+ Q_UNUSED(argv);
+ sensor_event_t event;
+ sensor_type_e compass = SENSOR_TYPE_COMPASS;
+ Q_UNUSED(compass);
+ Q_UNUSED(event);
+ return 0;
+}
diff --git a/qtsensors.pro b/qtsensors.pro
index 912823f1..2ad8197d 100644
--- a/qtsensors.pro
+++ b/qtsensors.pro
@@ -1,6 +1,7 @@
load(configure)
blackberry {
qtCompileTest(bbsensor_header)
+ qtCompileTest(bbsensor_compass)
}
load(qt_parts)
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
}
diff --git a/src/plugins/sensors/blackberry/blackberry.pro b/src/plugins/sensors/blackberry/blackberry.pro
index ef6dda60..9972e446 100644
--- a/src/plugins/sensors/blackberry/blackberry.pro
+++ b/src/plugins/sensors/blackberry/blackberry.pro
@@ -9,6 +9,9 @@ load(qt_plugin)
config_bbsensor_header {
DEFINES += HAVE_NDK_SENSOR_H
}
+config_bbsensor_compass {
+ DEFINES += HAVE_COMPASS_SENSOR
+}
DESTDIR = $$QT.sensors.plugins/sensors