summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorLorn Potter <lorn.potter@jollamobile.com>2013-10-12 17:19:44 +1000
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-10-23 06:12:42 +0200
commit8aabcf1eb258aedc9c268d6c1de191747f4f4400 (patch)
treef7a2a8a23f400fc8c8eae4a533b07067923f0e28 /src
parente4ff58731699e1202396f9ef5863f462fa1d9456 (diff)
make sensorfw plugin handle the sensord restarting.
This way, clients that are connected will continue to receive updates after the sensord has restarted, without the need to restart the sensor. Task-number: QTBUG-34050 Change-Id: I4a8fbca189764cf23a1453feae5c1fd9ed6911e7 Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/sensors/sensorfw/main.cpp6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwaccelerometer.cpp12
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwaccelerometer.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwals.cpp9
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwals.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwcompass.cpp9
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwcompass.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwgyroscope.cpp10
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwgyroscope.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwirproximitysensor.cpp11
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwirproximitysensor.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwlightsensor.cpp9
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwlightsensor.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp11
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwmagnetometer.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfworientationsensor.cpp10
-rw-r--r--src/plugins/sensors/sensorfw/sensorfworientationsensor.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp14
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwproximitysensor.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwrotationsensor.cpp10
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwrotationsensor.h6
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp49
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwsensorbase.h17
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp13
-rw-r--r--src/plugins/sensors/sensorfw/sensorfwtapsensor.h6
25 files changed, 182 insertions, 74 deletions
diff --git a/src/plugins/sensors/sensorfw/main.cpp b/src/plugins/sensors/sensorfw/main.cpp
index f12a193e..89e012c9 100644
--- a/src/plugins/sensors/sensorfw/main.cpp
+++ b/src/plugins/sensors/sensorfw/main.cpp
@@ -51,9 +51,9 @@
#include "sensorfwgyroscope.h"
#include "sensorfwlightsensor.h"
-#include <qsensorplugin.h>
-#include <qsensorbackend.h>
-#include <qsensormanager.h>
+#include <QtSensors/qsensorplugin.h>
+#include <QtSensors/qsensorbackend.h>
+#include <QtSensors/qsensormanager.h>
#include <QDebug>
#include <QSettings>
diff --git a/src/plugins/sensors/sensorfw/sensorfwaccelerometer.cpp b/src/plugins/sensors/sensorfw/sensorfwaccelerometer.cpp
index 4c50faad..5f1efb2e 100644
--- a/src/plugins/sensors/sensorfw/sensorfwaccelerometer.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwaccelerometer.cpp
@@ -42,12 +42,12 @@
#include "sensorfwaccelerometer.h"
char const * const sensorfwaccelerometer::id("sensorfw.accelerometer");
-bool sensorfwaccelerometer::m_initDone = false;
sensorfwaccelerometer::sensorfwaccelerometer(QSensor *sensor)
- : SensorfwSensorBase(sensor)
+ : SensorfwSensorBase(sensor),
+ m_initDone(false)
{
- initSensor<AccelerometerSensorChannelInterface>(m_initDone);
+ init();
setDescription(QLatin1String("x, y, and z axes accelerations in m/s^2"));
setRanges(GRAVITY_EARTH_THOUSANDTH);
setReading<QAccelerometerReading>(&m_reading);
@@ -90,3 +90,9 @@ qreal sensorfwaccelerometer::correctionFactor() const
{
return GRAVITY_EARTH_THOUSANDTH;
}
+
+void sensorfwaccelerometer::init()
+{
+ m_initDone = false;
+ initSensor<AccelerometerSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwaccelerometer.h b/src/plugins/sensors/sensorfw/sensorfwaccelerometer.h
index 1c94aae3..25ef1443 100644
--- a/src/plugins/sensors/sensorfw/sensorfwaccelerometer.h
+++ b/src/plugins/sensors/sensorfw/sensorfwaccelerometer.h
@@ -42,7 +42,7 @@
#define SENSORFWACCELEROMETER_H
#include "sensorfwsensorbase.h"
-#include <qaccelerometer.h>
+#include <QtSensors/qaccelerometer.h>
#include <accelerometersensor_i.h>
#include <datatypes/xyz.h>
@@ -60,11 +60,11 @@ protected:
virtual bool doConnect();
virtual QString sensorName() const;
virtual qreal correctionFactor() const;
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QAccelerometerReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
private slots:
void slotDataAvailable(const XYZ& data);
diff --git a/src/plugins/sensors/sensorfw/sensorfwals.cpp b/src/plugins/sensors/sensorfw/sensorfwals.cpp
index 839c537a..43bab0a1 100644
--- a/src/plugins/sensors/sensorfw/sensorfwals.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwals.cpp
@@ -43,12 +43,12 @@
#include "sensorfwals.h"
char const * const Sensorfwals::id("sensorfw.als");
-bool Sensorfwals::m_initDone = false;
Sensorfwals::Sensorfwals(QSensor *sensor)
: SensorfwSensorBase(sensor)
+ , m_initDone(false)
{
- initSensor<ALSSensorChannelInterface>(m_initDone);
+ init();
setReading<QAmbientLightReading>(&m_reading);
// metadata
setDescription(QLatin1String("ambient light intensity given as 5 pre-defined levels"));
@@ -110,3 +110,8 @@ QAmbientLightReading::LightLevel Sensorfwals::getLightLevel(int lux)
}
}
+void Sensorfwals::init()
+{
+ m_initDone = false;
+ initSensor<ALSSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwals.h b/src/plugins/sensors/sensorfw/sensorfwals.h
index 63d6443e..f0b91a9a 100644
--- a/src/plugins/sensors/sensorfw/sensorfwals.h
+++ b/src/plugins/sensors/sensorfw/sensorfwals.h
@@ -43,7 +43,7 @@
#define SENSORFWALS_H
#include "sensorfwsensorbase.h"
-#include <qambientlightsensor.h>
+#include <QtSensors/qambientlightsensor.h>
#include <alssensor_i.h>
@@ -60,11 +60,11 @@ protected:
virtual bool doConnect();
virtual QString sensorName() const;
virtual void start();
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QAmbientLightReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
private slots:
void slotDataAvailable(const Unsigned& data);
static QAmbientLightReading::LightLevel getLightLevel(int lux);
diff --git a/src/plugins/sensors/sensorfw/sensorfwcompass.cpp b/src/plugins/sensors/sensorfw/sensorfwcompass.cpp
index 1fd84417..2cce4898 100644
--- a/src/plugins/sensors/sensorfw/sensorfwcompass.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwcompass.cpp
@@ -43,12 +43,12 @@
#include "sensorfwcompass.h"
char const * const SensorfwCompass::id("sensorfw.compass");
-bool SensorfwCompass::m_initDone = false;
SensorfwCompass::SensorfwCompass(QSensor *sensor)
: SensorfwSensorBase(sensor)
+ , m_initDone(false)
{
- initSensor<CompassSensorChannelInterface>(m_initDone);
+ init();
setReading<QCompassReading>(&m_reading);
sensor->setDataRate(50);//set a default rate
}
@@ -79,3 +79,8 @@ QString SensorfwCompass::sensorName() const
return "compasssensor";
}
+void SensorfwCompass::init()
+{
+ m_initDone = false;
+ initSensor<CompassSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwcompass.h b/src/plugins/sensors/sensorfw/sensorfwcompass.h
index 7cc5c43d..1bb7e6ea 100644
--- a/src/plugins/sensors/sensorfw/sensorfwcompass.h
+++ b/src/plugins/sensors/sensorfw/sensorfwcompass.h
@@ -42,7 +42,7 @@
#define SENSORFWCOMPASS_H
#include "sensorfwsensorbase.h"
-#include <qcompass.h>
+#include <QtSensors/qcompass.h>
#include <compasssensor_i.h>
#include <datatypes/compass.h>
@@ -59,10 +59,10 @@ public:
protected:
virtual bool doConnect();
virtual QString sensorName() const;
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QCompassReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
private slots:
void slotDataAvailable(const Compass& data);
};
diff --git a/src/plugins/sensors/sensorfw/sensorfwgyroscope.cpp b/src/plugins/sensors/sensorfw/sensorfwgyroscope.cpp
index e29b77ef..66720401 100644
--- a/src/plugins/sensors/sensorfw/sensorfwgyroscope.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwgyroscope.cpp
@@ -43,12 +43,12 @@
char const * const SensorfwGyroscope::id("sensorfw.gyroscope");
const float SensorfwGyroscope::MILLI = 0.001;
-bool SensorfwGyroscope::m_initDone = false;
SensorfwGyroscope::SensorfwGyroscope(QSensor *sensor)
: SensorfwSensorBase(sensor)
+ , m_initDone(false)
{
- initSensor<GyroscopeSensorChannelInterface>(m_initDone);
+ init();
setDescription(QLatin1String("angular velocities around x, y, and z axis in degrees per second"));
setRanges(MILLI);
setReading<QGyroscopeReading>(&m_reading);
@@ -89,3 +89,9 @@ qreal SensorfwGyroscope::correctionFactor() const
{
return MILLI;
}
+
+void SensorfwGyroscope::init()
+{
+ m_initDone = false;
+ initSensor<GyroscopeSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwgyroscope.h b/src/plugins/sensors/sensorfw/sensorfwgyroscope.h
index e982c809..30b95791 100644
--- a/src/plugins/sensors/sensorfw/sensorfwgyroscope.h
+++ b/src/plugins/sensors/sensorfw/sensorfwgyroscope.h
@@ -44,7 +44,7 @@
#define SENSORFWGYROSCOPE_H
#include "sensorfwsensorbase.h"
-#include <qgyroscope.h>
+#include <QtSensors/qgyroscope.h>
#include <datatypes/xyz.h>
#include <gyroscopesensor_i.h>
@@ -62,11 +62,11 @@ protected:
virtual bool doConnect();
virtual QString sensorName() const;
virtual qreal correctionFactor() const;
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QGyroscopeReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
static const float MILLI;
private slots:
void slotDataAvailable(const XYZ& data);
diff --git a/src/plugins/sensors/sensorfw/sensorfwirproximitysensor.cpp b/src/plugins/sensors/sensorfw/sensorfwirproximitysensor.cpp
index a2e23493..0714e5f0 100644
--- a/src/plugins/sensors/sensorfw/sensorfwirproximitysensor.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwirproximitysensor.cpp
@@ -43,14 +43,12 @@
#define RM680_PS "/dev/bh1770glc_ps"
char const * const SensorfwIrProximitySensor::id("sensorfw.irproximitysensor");
-bool SensorfwIrProximitySensor::m_initDone = false;
-
-
SensorfwIrProximitySensor::SensorfwIrProximitySensor(QSensor *sensor)
: SensorfwSensorBase(sensor)
+ , m_initDone(false)
{
- initSensor<ProximitySensorChannelInterface>(m_initDone);
+ init();
setReading<QIRProximityReading>(&m_reading);
setDescription(QLatin1String("reflectance as percentage (%) of maximum"));
addOutputRange(0, 100, 1);
@@ -80,3 +78,8 @@ QString SensorfwIrProximitySensor::sensorName() const
}
+void SensorfwIrProximitySensor::init()
+{
+ m_initDone = false;
+ initSensor<ProximitySensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwirproximitysensor.h b/src/plugins/sensors/sensorfw/sensorfwirproximitysensor.h
index c729f595..fce0234b 100644
--- a/src/plugins/sensors/sensorfw/sensorfwirproximitysensor.h
+++ b/src/plugins/sensors/sensorfw/sensorfwirproximitysensor.h
@@ -43,7 +43,7 @@
#define SENSORFWIRPROXIMITYSENSOR_H
#include "sensorfwsensorbase.h"
-#include <qirproximitysensor.h>
+#include <QtSensors/qirproximitysensor.h>
#include <proximitysensor_i.h>
@@ -58,10 +58,10 @@ public:
protected:
virtual bool doConnect();
virtual QString sensorName() const;
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QIRProximityReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
int rangeMax;
private slots:
diff --git a/src/plugins/sensors/sensorfw/sensorfwlightsensor.cpp b/src/plugins/sensors/sensorfw/sensorfwlightsensor.cpp
index 232d4e8d..5f2a0da0 100644
--- a/src/plugins/sensors/sensorfw/sensorfwlightsensor.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwlightsensor.cpp
@@ -42,12 +42,12 @@
#include "sensorfwlightsensor.h"
char const * const SensorfwLightSensor::id("sensorfw.lightsensor");
-bool SensorfwLightSensor::m_initDone = false;
SensorfwLightSensor::SensorfwLightSensor(QSensor *sensor)
: SensorfwSensorBase(sensor)
+ , m_initDone(false)
{
- initSensor<ALSSensorChannelInterface>(m_initDone);
+ init();
setReading<QLightReading>(&m_reading);
sensor->setDataRate(10);//set a default rate
}
@@ -70,3 +70,8 @@ QString SensorfwLightSensor::sensorName() const
{
return "alssensor";
}
+void SensorfwLightSensor::init()
+{
+ m_initDone = false;
+ initSensor<ALSSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwlightsensor.h b/src/plugins/sensors/sensorfw/sensorfwlightsensor.h
index 96df633c..f9394c3d 100644
--- a/src/plugins/sensors/sensorfw/sensorfwlightsensor.h
+++ b/src/plugins/sensors/sensorfw/sensorfwlightsensor.h
@@ -44,7 +44,7 @@
#define SENSORFWLIGHTSENSOR_H
#include "sensorfwsensorbase.h"
-#include <qlightsensor.h>
+#include <QtSensors/qlightsensor.h>
#include <alssensor_i.h>
@@ -59,10 +59,10 @@ public:
protected:
virtual bool doConnect();
virtual QString sensorName() const;
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QLightReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
private slots:
void slotDataAvailable(const Unsigned& data);
};
diff --git a/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp b/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp
index e4afdd34..cc496756 100644
--- a/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwmagnetometer.cpp
@@ -40,18 +40,17 @@
****************************************************************************/
#include "sensorfwmagnetometer.h"
-#include <QSensor>
char const * const SensorfwMagnetometer::id("sensorfw.magnetometer");
-bool SensorfwMagnetometer::m_initDone = false;
const float SensorfwMagnetometer::NANO = 0.000000001;
SensorfwMagnetometer::SensorfwMagnetometer(QSensor *sensor)
: SensorfwSensorBase(sensor)
+ , m_initDone(false)
{
- initSensor<MagnetometerSensorChannelInterface>(m_initDone);
+ init();
setDescription(QLatin1String("magnetic flux density in teslas (T)"));
setRanges(NANO);
setReading<QMagnetometerReading>(&m_reading);
@@ -103,3 +102,9 @@ qreal SensorfwMagnetometer::correctionFactor() const
{
return SensorfwMagnetometer::NANO;
}
+
+void SensorfwMagnetometer::init()
+{
+ m_initDone = false;
+ initSensor<MagnetometerSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwmagnetometer.h b/src/plugins/sensors/sensorfw/sensorfwmagnetometer.h
index 22d81a8c..d86bd043 100644
--- a/src/plugins/sensors/sensorfw/sensorfwmagnetometer.h
+++ b/src/plugins/sensors/sensorfw/sensorfwmagnetometer.h
@@ -43,7 +43,7 @@
#define SENSORFWMAGNETOMETER_H
#include "sensorfwsensorbase.h"
-#include <qmagnetometer.h>
+#include <QtSensors/qmagnetometer.h>
#include <magnetometersensor_i.h>
#include <datatypes/magneticfield.h>
@@ -62,12 +62,12 @@ protected:
virtual void start();
virtual QString sensorName() const;
virtual qreal correctionFactor() const;
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
static const float NANO;
QMagnetometerReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
bool m_isGeoMagnetometer;
private slots:
diff --git a/src/plugins/sensors/sensorfw/sensorfworientationsensor.cpp b/src/plugins/sensors/sensorfw/sensorfworientationsensor.cpp
index 6211a45c..149f6935 100644
--- a/src/plugins/sensors/sensorfw/sensorfworientationsensor.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfworientationsensor.cpp
@@ -44,12 +44,12 @@
#include <datatypes/posedata.h>
char const * const SensorfwOrientationSensor::id("sensorfw.orientationsensor");
-bool SensorfwOrientationSensor::m_initDone = false;
SensorfwOrientationSensor::SensorfwOrientationSensor(QSensor *sensor)
: SensorfwSensorBase(sensor)
+ , m_initDone(false)
{
- initSensor<OrientationSensorChannelInterface>(m_initDone);
+ init();
setReading<QOrientationReading>(&m_reading);
sensor->setDataRate(10);//set a default rate
}
@@ -97,3 +97,9 @@ QOrientationReading::Orientation SensorfwOrientationSensor::getOrientation(int o
}
return QOrientationReading::Undefined;
}
+
+void SensorfwOrientationSensor::init()
+{
+ m_initDone = false;
+ initSensor<OrientationSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfworientationsensor.h b/src/plugins/sensors/sensorfw/sensorfworientationsensor.h
index 7c2ecdf3..139761a5 100644
--- a/src/plugins/sensors/sensorfw/sensorfworientationsensor.h
+++ b/src/plugins/sensors/sensorfw/sensorfworientationsensor.h
@@ -43,7 +43,7 @@
#define SENSORFWORIENTATIONSENSOR_H
#include "sensorfwsensorbase.h"
-#include <qorientationsensor.h>
+#include <QtSensors/qorientationsensor.h>
#include <orientationsensor_i.h>
@@ -60,11 +60,11 @@ protected:
virtual bool doConnect();
virtual QString sensorName() const;
virtual void start();
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QOrientationReading m_reading;
static QOrientationReading::Orientation getOrientation(int orientation);
- static bool m_initDone;
+ bool m_initDone;
private slots:
void slotDataAvailable(const Unsigned& orientation);
diff --git a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp
index 1f4c2b54..eaf7232b 100644
--- a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp
@@ -42,12 +42,14 @@
#include "sensorfwproximitysensor.h"
char const * const SensorfwProximitySensor::id("sensorfw.proximitysensor");
-bool SensorfwProximitySensor::m_initDone = false;
+//bool SensorfwProximitySensor::m_initDone = false;
SensorfwProximitySensor::SensorfwProximitySensor(QSensor *sensor)
- : SensorfwSensorBase(sensor), m_exClose(false)
+ : SensorfwSensorBase(sensor),
+ m_exClose(false)
+ , m_initDone(false)
{
- initSensor<ProximitySensorChannelInterface>(m_initDone);
+ init();
setReading<QProximityReading>(&m_reading);
addDataRate(10,10); //TODO: fix this when we know better
sensor->setDataRate(10);//set a default rate
@@ -86,3 +88,9 @@ QString SensorfwProximitySensor::sensorName() const
{
return "proximitysensor";
}
+
+void SensorfwProximitySensor::init()
+{
+ m_initDone = false;
+ initSensor<ProximitySensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.h b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.h
index 404e66a9..6558447d 100644
--- a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.h
+++ b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.h
@@ -43,7 +43,7 @@
#define SENSORFWPROXIMITYSENSOR_H
#include "sensorfwsensorbase.h"
-#include <qproximitysensor.h>
+#include <QtSensors/qproximitysensor.h>
#include <proximitysensor_i.h>
@@ -60,11 +60,11 @@ protected:
virtual bool doConnect();
virtual QString sensorName() const;
virtual void start();
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QProximityReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
bool m_exClose;
private slots:
diff --git a/src/plugins/sensors/sensorfw/sensorfwrotationsensor.cpp b/src/plugins/sensors/sensorfw/sensorfwrotationsensor.cpp
index 1971e92e..dbeb3b65 100644
--- a/src/plugins/sensors/sensorfw/sensorfwrotationsensor.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwrotationsensor.cpp
@@ -42,12 +42,12 @@
#include "sensorfwrotationsensor.h"
char const * const SensorfwRotationSensor::id("sensorfw.rotationsensor");
-bool SensorfwRotationSensor::m_initDone = false;
SensorfwRotationSensor::SensorfwRotationSensor(QSensor *sensor)
: SensorfwSensorBase(sensor)
+ , m_initDone(false)
{
- initSensor<RotationSensorChannelInterface>(m_initDone);
+ init();
setReading<QRotationReading>(&m_reading);
QRotationSensor *const rotationSensor = qobject_cast<QRotationSensor *>(sensor);
if (rotationSensor)
@@ -80,3 +80,9 @@ QString SensorfwRotationSensor::sensorName() const
{
return "rotationsensor";
}
+
+void SensorfwRotationSensor::init()
+{
+ m_initDone = false;
+ initSensor<RotationSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwrotationsensor.h b/src/plugins/sensors/sensorfw/sensorfwrotationsensor.h
index d6b056b4..1f237cf4 100644
--- a/src/plugins/sensors/sensorfw/sensorfwrotationsensor.h
+++ b/src/plugins/sensors/sensorfw/sensorfwrotationsensor.h
@@ -44,7 +44,7 @@
#define SENSORFWROTATION_H
#include "sensorfwsensorbase.h"
-#include <qrotationsensor.h>
+#include <QtSensors/qrotationsensor.h>
#include <rotationsensor_i.h>
#include <datatypes/xyz.h>
@@ -61,10 +61,10 @@ public:
protected:
virtual bool doConnect();
virtual QString sensorName() const;
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QRotationReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
private slots:
void slotDataAvailable(const XYZ& data);
diff --git a/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp b/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
index fde2b972..247ee37a 100644
--- a/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwsensorbase.cpp
@@ -53,10 +53,29 @@ QStringList SensorfwSensorBase::m_bufferingSensors = QStringList()
<<"sensorfw.gyroscope"<<"sensorfw.rotationsensor";
SensorfwSensorBase::SensorfwSensorBase(QSensor *sensor)
- : QSensorBackend(sensor), m_sensorInterface(0), m_bufferSize(-1), m_prevOutputRange(0), m_efficientBufferSize(1), m_maxBufferSize(1)
+ : QSensorBackend(sensor),
+ m_sensorInterface(0),
+ m_bufferSize(-1),
+ m_prevOutputRange(0),
+ m_efficientBufferSize(1),
+ m_maxBufferSize(1),
+ m_available(false),
+ running(false)
+
{
- if (!m_remoteSensorManager)
- m_remoteSensorManager = &SensorManagerInterface::instance();
+ watcher = new QDBusServiceWatcher("com.nokia.SensorService",QDBusConnection::systemBus(),
+ QDBusServiceWatcher::WatchForRegistration |
+ QDBusServiceWatcher::WatchForUnregistration, this);
+
+ connect(watcher, SIGNAL(serviceRegistered(QString)),
+ this, SLOT(connectToSensord(QString)));
+ connect(watcher, SIGNAL(serviceUnregistered(QString)),
+ this, SLOT(sensordUnregistered(QString)));
+
+
+ m_available = QDBusConnection::systemBus().interface()->isServiceRegistered("com.nokia.SensorService");
+ if (m_available)
+ connectToSensord();
}
SensorfwSensorBase::~SensorfwSensorBase()
@@ -109,7 +128,10 @@ void SensorfwSensorBase::start()
doConnectAfterCheck();
int returnCode = m_sensorInterface->start().error().type();
- if (returnCode == 0) return;
+ if (returnCode == 0) {
+ running = true;
+ return;
+ }
qWarning() << "m_sensorInterface did not start, error code:" << returnCode;
}
sensorStopped();
@@ -117,7 +139,9 @@ void SensorfwSensorBase::start()
void SensorfwSensorBase::stop()
{
- if (m_sensorInterface) m_sensorInterface->stop();
+ if (m_sensorInterface)
+ m_sensorInterface->stop();
+ running = false;
}
void SensorfwSensorBase::setRanges(qreal correctionFactor)
@@ -142,6 +166,7 @@ bool SensorfwSensorBase::doConnectAfterCheck()
// buffer size
int size = bufferSize();
+
if (size == m_bufferSize) return true;
if (m_bufferingSensors.contains(sensor()->identifier()))
@@ -186,3 +211,17 @@ qreal SensorfwSensorBase::correctionFactor() const
return 1;
}
+void SensorfwSensorBase::connectToSensord()
+{
+ m_remoteSensorManager = &SensorManagerInterface::instance();
+ if (running) {
+ stop();
+ start();
+ }
+}
+
+void SensorfwSensorBase::sensordUnregistered()
+{
+ m_bufferSize = -1;
+}
+
diff --git a/src/plugins/sensors/sensorfw/sensorfwsensorbase.h b/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
index 1c2aa0e0..2fc8238d 100644
--- a/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
+++ b/src/plugins/sensors/sensorfw/sensorfwsensorbase.h
@@ -43,17 +43,18 @@
#ifndef SENSORFWSENSORBASE_H
#define SENSORFWSENSORBASE_H
-#include <qsensorbackend.h>
+#include <QtSensors/qsensorbackend.h>
#include <sensormanagerinterface.h>
#include <abstractsensor_i.h>
-#include <QAmbientLightSensor>
-#include <QIRProximitySensor>
-#include <QTapSensor>
-#include <QProximitySensor>
+#include <QtSensors/QAmbientLightSensor>
+#include <QtSensors/QIRProximitySensor>
+#include <QtSensors/QTapSensor>
+#include <QtSensors/QProximitySensor>
class SensorfwSensorBase : public QSensorBackend
{
+ Q_OBJECT
public:
SensorfwSensorBase(QSensor *sensor);
virtual ~SensorfwSensorBase();
@@ -170,6 +171,12 @@ private:
bool doConnectAfterCheck();
int m_efficientBufferSize, m_maxBufferSize;
+ QDBusServiceWatcher *watcher;
+ bool m_available;
+ bool running;
+private slots:
+ void connectToSensord();
+ void sensordUnregistered();
};
#endif
diff --git a/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp b/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp
index d5539de8..f02dbe5d 100644
--- a/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp
+++ b/src/plugins/sensors/sensorfw/sensorfwtapsensor.cpp
@@ -42,12 +42,13 @@
#include "sensorfwtapsensor.h"
char const * const SensorfwTapSensor::id("sensorfw.tapsensor");
-bool SensorfwTapSensor::m_initDone = false;
SensorfwTapSensor::SensorfwTapSensor(QSensor *sensor)
- : SensorfwSensorBase(sensor), m_isOnceStarted(false)
+ : SensorfwSensorBase(sensor),
+ m_isOnceStarted(false)
+ , m_initDone(false)
{
- initSensor<TapSensorChannelInterface>(m_initDone);
+ init();
setReading<QTapReading>(&m_reading);
addOutputRange(QTapReading::Undefined, QTapReading::Z_Both, 1);
addDataRate(10,10); //TODO: fix this when we know better
@@ -111,3 +112,9 @@ QString SensorfwTapSensor::sensorName() const
{
return "tapsensor";
}
+
+void SensorfwTapSensor::init()
+{
+ m_initDone = false;
+ initSensor<TapSensorChannelInterface>(m_initDone);
+}
diff --git a/src/plugins/sensors/sensorfw/sensorfwtapsensor.h b/src/plugins/sensors/sensorfw/sensorfwtapsensor.h
index c577bde8..c8298761 100644
--- a/src/plugins/sensors/sensorfw/sensorfwtapsensor.h
+++ b/src/plugins/sensors/sensorfw/sensorfwtapsensor.h
@@ -42,7 +42,7 @@
#define SENSORFWTAPSENSOR_H
#include "sensorfwsensorbase.h"
-#include <qtapsensor.h>
+#include <QtSensors/qtapsensor.h>
#include <tapsensor_i.h>
#include <datatypes/tap.h>
@@ -60,10 +60,10 @@ protected:
virtual bool doConnect();
virtual void start();
virtual QString sensorName() const;
-
+ virtual void init() Q_DECL_OVERRIDE;
private:
QTapReading m_reading;
- static bool m_initDone;
+ bool m_initDone;
bool m_isDoubleTapSensor;
bool m_isOnceStarted;
private slots: