summaryrefslogtreecommitdiff
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
parente4ff58731699e1202396f9ef5863f462fa1d9456 (diff)
downloadqtsensors-8aabcf1eb258aedc9c268d6c1de191747f4f4400.tar.gz
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>
-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 f12a193..89e012c 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 4c50faa..5f1efb2 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 1c94aae..25ef144 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 839c537..43bab0a 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 63d6443..f0b91a9 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 1fd8441..2cce489 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 7cc5c43..1bb7e6e 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 e29b77e..6672040 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 e982c80..30b9579 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 a2e2349..0714e5f 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 c729f59..fce0234 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 232d4e8..5f2a0da 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 96df633..f9394c3 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 e4afdd3..cc49675 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 22d81a8..d86bd04 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 6211a45..149f693 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 7c2ecdf..139761a 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 1f4c2b5..eaf7232 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 404e66a..6558447 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 1971e92..dbeb3b6 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 d6b056b..1f237cf 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 fde2b97..247ee37 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 1c2aa0e..2fc8238 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 d5539de..f02dbe5 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 c577bde..c829876 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: