summaryrefslogtreecommitdiffstats
path: root/src/plugins/sensors/generic
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/sensors/generic')
-rw-r--r--src/plugins/sensors/generic/generic.pro20
-rw-r--r--src/plugins/sensors/generic/genericrotationsensor.cpp4
-rw-r--r--src/plugins/sensors/generic/genericrotationsensor.h1
-rw-r--r--src/plugins/sensors/generic/generictiltsensor.cpp33
-rw-r--r--src/plugins/sensors/generic/generictiltsensor.h4
-rw-r--r--src/plugins/sensors/generic/main.cpp18
6 files changed, 53 insertions, 27 deletions
diff --git a/src/plugins/sensors/generic/generic.pro b/src/plugins/sensors/generic/generic.pro
index 2d4f9f9f..5bfeff64 100644
--- a/src/plugins/sensors/generic/generic.pro
+++ b/src/plugins/sensors/generic/generic.pro
@@ -4,15 +4,19 @@ QT = core sensors
PLUGIN_TYPE = sensors
load(qt_plugin)
-HEADERS += genericorientationsensor.h\
- genericrotationsensor.h\
- genericalssensor.h\
- generictiltsensor.h
+HEADERS += generictiltsensor.h
-SOURCES += genericorientationsensor.cpp\
- main.cpp\
- genericrotationsensor.cpp\
- genericalssensor.cpp\
+SOURCES += main.cpp\
generictiltsensor.cpp
+!blackberry {
+ HEADERS += genericorientationsensor.h\
+ genericrotationsensor.h\
+ genericalssensor.h
+
+ SOURCES += genericorientationsensor.cpp\
+ genericrotationsensor.cpp\
+ genericalssensor.cpp
+}
+
OTHER_FILES = plugin.json
diff --git a/src/plugins/sensors/generic/genericrotationsensor.cpp b/src/plugins/sensors/generic/genericrotationsensor.cpp
index b5f80cb3..0548adc0 100644
--- a/src/plugins/sensors/generic/genericrotationsensor.cpp
+++ b/src/plugins/sensors/generic/genericrotationsensor.cpp
@@ -57,7 +57,9 @@ genericrotationsensor::genericrotationsensor(QSensor *sensor)
setReading<QRotationReading>(&m_reading);
setDataRates(accelerometer);
- sensor->setProperty("hasZ", false);
+ QRotationSensor * const rotationSensor = qobject_cast<QRotationSensor *>(sensor);
+ if (rotationSensor)
+ rotationSensor->setHasZ(false);
}
void genericrotationsensor::start()
diff --git a/src/plugins/sensors/generic/genericrotationsensor.h b/src/plugins/sensors/generic/genericrotationsensor.h
index 3475cafe..ffa48ea3 100644
--- a/src/plugins/sensors/generic/genericrotationsensor.h
+++ b/src/plugins/sensors/generic/genericrotationsensor.h
@@ -62,7 +62,6 @@ public:
private:
QRotationReading m_reading;
QAccelerometer *accelerometer;
- QMagnetometer *magnetometer;
};
#endif
diff --git a/src/plugins/sensors/generic/generictiltsensor.cpp b/src/plugins/sensors/generic/generictiltsensor.cpp
index 6aefb576..dc118bf7 100644
--- a/src/plugins/sensors/generic/generictiltsensor.cpp
+++ b/src/plugins/sensors/generic/generictiltsensor.cpp
@@ -106,6 +106,11 @@ void GenericTiltSensor::calibrate()
calibratedRoll = roll;
}
+static qreal rad2deg(qreal rad)
+{
+ return rad / (2 * M_PI) * 360;
+}
+
bool GenericTiltSensor::filter(QAccelerometerReading *reading)
{
/*
@@ -154,23 +159,22 @@ bool GenericTiltSensor::filter(QAccelerometerReading *reading)
qDebug() << "new yrot: " << yrot;
qDebug() << "----------------------------------";
#endif
- qreal dxrot = xrot - xRotation;
- qreal dyrot = yrot - yRotation;
+ qreal dxrot = rad2deg(xrot) - xRotation;
+ qreal dyrot = rad2deg(yrot) - yRotation;
if (dxrot < 0) dxrot = -dxrot;
if (dyrot < 0) dyrot = -dyrot;
- bool change = false;
- if (dxrot >= radAccuracy) {
- xRotation = xrot;
- change = true;
+ bool setNewReading = false;
+ if (dxrot >= rad2deg(radAccuracy) || !sensor()->skipDuplicates()) {
+ xRotation = rad2deg(xrot);
+ setNewReading = true;
}
- if (dyrot >= radAccuracy) {
- yRotation = yrot;
- change = true;
+ if (dyrot >= rad2deg(radAccuracy) || !sensor()->skipDuplicates()) {
+ yRotation = rad2deg(yrot);
+ setNewReading = true;
}
- if (xRotation != m_reading.xRotation()
- || yRotation != m_reading.yRotation()
- || m_reading.timestamp() == 0) {
+
+ if (setNewReading || m_reading.timestamp() == 0) {
m_reading.setTimestamp(reading->timestamp());
m_reading.setXRotation(xRotation);
m_reading.setYRotation(yRotation);
@@ -179,3 +183,8 @@ bool GenericTiltSensor::filter(QAccelerometerReading *reading)
return false;
}
+
+bool GenericTiltSensor::isFeatureSupported(QSensor::Feature feature) const
+{
+ return (feature == QSensor::SkipDuplicates);
+}
diff --git a/src/plugins/sensors/generic/generictiltsensor.h b/src/plugins/sensors/generic/generictiltsensor.h
index 0633662c..0f84ca6f 100644
--- a/src/plugins/sensors/generic/generictiltsensor.h
+++ b/src/plugins/sensors/generic/generictiltsensor.h
@@ -46,7 +46,6 @@
#include <qtiltsensor.h>
#include <qaccelerometer.h>
-QT_BEGIN_HEADER
QT_BEGIN_NAMESPACE
class GenericTiltSensor : public QSensorBackend, public QAccelerometerFilter
@@ -64,6 +63,8 @@ public:
bool filter(QAccelerometerReading *reading);
+ bool isFeatureSupported(QSensor::Feature feature) const Q_DECL_OVERRIDE;
+
private:
QTiltReading m_reading;
QAccelerometer *accelerometer;
@@ -77,7 +78,6 @@ private:
};
QT_END_NAMESPACE
-QT_END_HEADER
#endif
diff --git a/src/plugins/sensors/generic/main.cpp b/src/plugins/sensors/generic/main.cpp
index 15507b63..4b348b19 100644
--- a/src/plugins/sensors/generic/main.cpp
+++ b/src/plugins/sensors/generic/main.cpp
@@ -39,9 +39,12 @@
**
****************************************************************************/
+#ifndef Q_OS_BLACKBERRY
#include "genericorientationsensor.h"
#include "genericrotationsensor.h"
#include "genericalssensor.h"
+#endif
+#include "generictiltsensor.h"
#include <qsensorplugin.h>
#include <qsensorbackend.h>
#include <qsensormanager.h>
@@ -56,7 +59,6 @@ class genericSensorPlugin : public QObject, public QSensorPluginInterface, publi
public:
void registerSensors()
{
- qDebug() << "loaded the Generic plugin";
// Nothing to register here
}
@@ -64,26 +66,33 @@ public:
{
if (!QSensor::defaultSensorForType(QAccelerometer::type).isEmpty()) {
// There is an accelerometer available. Register the backends
+#ifndef Q_OS_BLACKBERRY
if (!QSensorManager::isBackendRegistered(QOrientationSensor::type, genericorientationsensor::id))
QSensorManager::registerBackend(QOrientationSensor::type, genericorientationsensor::id, this);
if (!QSensorManager::isBackendRegistered(QRotationSensor::type, genericrotationsensor::id))
QSensorManager::registerBackend(QRotationSensor::type, genericrotationsensor::id, this);
if (!QSensorManager::isBackendRegistered(QAmbientLightSensor::type, genericalssensor::id))
QSensorManager::registerBackend(QAmbientLightSensor::type, genericalssensor::id, this);
- if (!QSensorManager::isBackendRegistered(QAmbientLightSensor::type, genericalssensor::id))
- QSensorManager::registerBackend(QAmbientLightSensor::type, genericalssensor::id, this);
+#endif
+ if (!QSensorManager::isBackendRegistered(QTiltSensor::type, GenericTiltSensor::id))
+ QSensorManager::registerBackend(QTiltSensor::type, GenericTiltSensor::id, this);
} else {
+#ifndef Q_OS_BLACKBERRY
if (QSensorManager::isBackendRegistered(QOrientationSensor::type, genericorientationsensor::id))
QSensorManager::unregisterBackend(QOrientationSensor::type, genericorientationsensor::id);
if (QSensorManager::isBackendRegistered(QRotationSensor::type, genericrotationsensor::id))
QSensorManager::unregisterBackend(QRotationSensor::type, genericrotationsensor::id);
if (QSensorManager::isBackendRegistered(QAmbientLightSensor::type, genericalssensor::id))
QSensorManager::unregisterBackend(QAmbientLightSensor::type, genericalssensor::id);
+#endif
+ if (QSensorManager::isBackendRegistered(QTiltSensor::type, GenericTiltSensor::id))
+ QSensorManager::unregisterBackend(QTiltSensor::type, GenericTiltSensor::id);
}
}
QSensorBackend *createBackend(QSensor *sensor)
{
+#ifndef Q_OS_BLACKBERRY
if (sensor->identifier() == genericorientationsensor::id)
return new genericorientationsensor(sensor);
@@ -92,6 +101,9 @@ public:
if (sensor->identifier() == genericalssensor::id)
return new genericalssensor(sensor);
+#endif
+ if (sensor->identifier() == GenericTiltSensor::id)
+ return new GenericTiltSensor(sensor);
return 0;
}