diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2012-07-05 13:28:48 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2012-11-28 20:06:21 +0100 |
commit | a7646144f8ebee1a07f20741bba37f953fd2ef8e (patch) | |
tree | cc9e273be87fca68c92f52b6dced053b895b3bae | |
parent | b64e52acb421dceae303124f63059c658090bd5d (diff) |
Add API for duplicate skipping.
Change-Id: I4569993e2689f607c2b771438ed5e1ba879691b9
Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com>
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
-rw-r--r-- | plugins/declarative/sensors/sensors.cpp | 7 | ||||
-rw-r--r-- | src/sensors/qsensor.cpp | 42 | ||||
-rw-r--r-- | src/sensors/qsensor.h | 7 | ||||
-rw-r--r-- | src/sensors/qsensor_p.h | 2 |
4 files changed, 57 insertions, 1 deletions
diff --git a/plugins/declarative/sensors/sensors.cpp b/plugins/declarative/sensors/sensors.cpp index 500e680eeb..ae1e147e23 100644 --- a/plugins/declarative/sensors/sensors.cpp +++ b/plugins/declarative/sensors/sensors.cpp @@ -192,6 +192,13 @@ Q_EXPORT_PLUGIN2(qsensorsdeclarativemodule, QT_PREPEND_NAMESPACE(QSensorsDeclara */ /*! + \qmlproperty bool Sensor::skipDuplicates + Omitts readings with the same or very similar values. + \sa QSensor::skipDuplicates + \since Mobility 1.3 +*/ + +/*! \qmlproperty SensorReading Sensor::reading \since Mobility 1.2 Holds the most recent sensor reading. diff --git a/src/sensors/qsensor.cpp b/src/sensors/qsensor.cpp index 0b22ad20f7..e9637fb06c 100644 --- a/src/sensors/qsensor.cpp +++ b/src/sensors/qsensor.cpp @@ -399,6 +399,48 @@ bool QSensor::isAlwaysOn() const } /*! + \property QSensor::skipDuplicates + \brief Indicates whether duplicate reading values should be omitted. + + When duplicate skipping is enabled, successive readings with the same or very + similar values are omitted and skipped. This helps reducing the amount of processing + done, as less sensor readings are made available. As a consequence, readings arrive at + an irregular interval. + + Duplicate skipping is not just enabled for readings that are exactly the same, but also for + readings that are quite similar, as each sensor has a bit of jitter even if the device is + not moved. + + Support for this property depends on the backend. It is disabled by default. + + Duplicate skipping can only be changed while the sensor is not active. +*/ +bool QSensor::skipDuplicates() const +{ + Q_D(const QSensor); + return d->skipDuplicates; +} + +/*! + Sets the duplicate skipping to \a skipDuplicates. +*/ +void QSensor::setSkipDuplicates(bool skipDuplicates) +{ + Q_D(QSensor); + if (d->skipDuplicates != skipDuplicates) { + d->skipDuplicates = skipDuplicates; + emit skipDuplicatesChanged(skipDuplicates); + } +} + +/*! + \fn skipDuplicatesChanged(bool skipDuplicates) + + This signal is emitted when the skipDuplicates property changes. + +*/ + +/*! \property QSensor::availableDataRates \brief the data rates that the sensor supports. diff --git a/src/sensors/qsensor.h b/src/sensors/qsensor.h index 02ef032e90..21eaf07425 100644 --- a/src/sensors/qsensor.h +++ b/src/sensors/qsensor.h @@ -98,7 +98,8 @@ class Q_SENSORS_EXPORT QSensor : public QObject Q_PROPERTY(int outputRange READ outputRange WRITE setOutputRange) Q_PROPERTY(QString description READ description) Q_PROPERTY(int error READ error NOTIFY sensorError) - Q_PROPERTY(bool alwaysOn READ isAlwaysOn WRITE setAlwaysOn NOTIFY alwaysOnChanged REVISION 1) + Q_PROPERTY(bool alwaysOn READ isAlwaysOn WRITE setAlwaysOn NOTIFY alwaysOnChanged) + Q_PROPERTY(bool skipDuplicates READ skipDuplicates WRITE setSkipDuplicates NOTIFY skipDuplicatesChanged) #ifdef Q_QDOC Q_PROPERTY(int maxBufferSize) Q_PROPERTY(int efficientBufferSize) @@ -124,6 +125,9 @@ public: bool isAlwaysOn() const; void setAlwaysOn(bool alwaysOn); + bool skipDuplicates() const; + void setSkipDuplicates(bool skipDuplicates); + qrangelist availableDataRates() const; int dataRate() const; void setDataRate(int rate); @@ -163,6 +167,7 @@ Q_SIGNALS: void sensorError(int error); void availableSensorsChanged(); void alwaysOnChanged(); + void skipDuplicatesChanged(bool skipDuplicates); protected: // called by the back end diff --git a/src/sensors/qsensor_p.h b/src/sensors/qsensor_p.h index de34cd02df..1aa3fdef16 100644 --- a/src/sensors/qsensor_p.h +++ b/src/sensors/qsensor_p.h @@ -75,6 +75,7 @@ public: , cache_reading(0) , error(0) , alwaysOn(false) + , skipDuplicates(false) { } @@ -102,6 +103,7 @@ public: int error; bool alwaysOn; + bool skipDuplicates; }; class QSensorReadingPrivate |