summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorThomas McGuire <thomas.mcguire.qnx@kdab.com>2013-02-26 15:49:28 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-03-01 12:06:12 +0100
commit4ef58f952f6fb87059cecddfe6447b14919be066 (patch)
treee8e12b5cc148039a106b3788821cde35d50f8c27 /src
parent3a9e30eb6229a6212150dbc1a3627246d51c8be2 (diff)
BlackBerry: Support QMagnetometer::returnGeoValues
Change-Id: Ib81074bb9ea2b922fb8c599e7e758346e85bb6e0 Reviewed-by: Adam Parco <aparco@rim.com> Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/sensors/blackberry/bbmagnetometer.cpp30
-rw-r--r--src/plugins/sensors/blackberry/bbsensorbackend.cpp7
2 files changed, 27 insertions, 10 deletions
diff --git a/src/plugins/sensors/blackberry/bbmagnetometer.cpp b/src/plugins/sensors/blackberry/bbmagnetometer.cpp
index 5ece465e..45fd49b3 100644
--- a/src/plugins/sensors/blackberry/bbmagnetometer.cpp
+++ b/src/plugins/sensors/blackberry/bbmagnetometer.cpp
@@ -53,15 +53,7 @@ QString BbMagnetometer::devicePath()
bool BbMagnetometer::updateReadingFromEvent(const sensor_event_t &event, QMagnetometerReading *reading)
{
- // TODO: In the future, support returnGeoValues here. Right now, /dev/sensors/mag has no
- // geomagnatic mode, but will gain it in the future.
- float x = convertValue(event.motion.dsp.x);
- float y = convertValue(event.motion.dsp.y);
- float z = convertValue(event.motion.dsp.z);
- remapAxes(&x, &y, &z);
- reading->setX(x);
- reading->setY(y);
- reading->setZ(z);
+ float x, y, z;
QMagnetometer * const magnetometer = qobject_cast<QMagnetometer *>(sensor());
Q_ASSERT(magnetometer);
@@ -78,10 +70,30 @@ bool BbMagnetometer::updateReadingFromEvent(const sensor_event_t &event, QMagnet
case SENSOR_ACCURACY_MEDIUM: reading->setCalibrationLevel(1.0f); break;
case SENSOR_ACCURACY_HIGH: reading->setCalibrationLevel(1.0f); break;
}
+
+ x = convertValue(event.motion.dsp.x);
+ y = convertValue(event.motion.dsp.y);
+ z = convertValue(event.motion.dsp.z);
+
} else {
reading->setCalibrationLevel(1.0f);
+
+#ifndef Q_OS_BLACKBERRY_TABLET
+ x = convertValue(event.motion.raw.x);
+ y = convertValue(event.motion.raw.y);
+ z = convertValue(event.motion.raw.z);
+#else
+ // Blackberry Tablet OS does not support raw reading values
+ x = convertValue(event.motion.dsp.x);
+ y = convertValue(event.motion.dsp.y);
+ z = convertValue(event.motion.dsp.z);
+#endif
}
+ remapAxes(&x, &y, &z);
+ reading->setX(x);
+ reading->setY(y);
+ reading->setZ(z);
return true;
}
diff --git a/src/plugins/sensors/blackberry/bbsensorbackend.cpp b/src/plugins/sensors/blackberry/bbsensorbackend.cpp
index a244a973..6b614a8a 100644
--- a/src/plugins/sensors/blackberry/bbsensorbackend.cpp
+++ b/src/plugins/sensors/blackberry/bbsensorbackend.cpp
@@ -304,8 +304,13 @@ bool BbSensorBackendBase::isFeatureSupported(QSensor::Feature feature) const
case QSensor::AccelerationMode:
case QSensor::SkipDuplicates:
return true;
- case QSensor::Reserved:
case QSensor::GeoValues:
+#ifndef Q_OS_BLACKBERRY_TABLET
+ return (sensorType() == SENSOR_TYPE_MAGNETOMETER);
+#else
+ return false;
+#endif
+ case QSensor::Reserved:
case QSensor::FieldOfView:
break;
}