diff options
author | Thomas McGuire <thomas.mcguire.qnx@kdab.com> | 2012-08-24 14:10:57 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-08-28 00:33:19 +0200 |
commit | 2750ad7f862cedc7600637c442eea0caf29b1fd8 (patch) | |
tree | 11b068070d3203e2cbfac31311c1a5b3e5a0c450 /src | |
parent | a1637c935a0c7055cfc905c02d072af8e54fc948 (diff) | |
download | qtsensors-2750ad7f862cedc7600637c442eea0caf29b1fd8.tar.gz |
Pass through invalid data rates to the backend instead of ignoring them
This gives the backend the chance to do something sensible with it, at
the expense of the data rate not being reported correctly in those
cases.
Change-Id: Iadf72b4448145f2454bc9422dde094ad799cb17a
Reviewed-by: Lorn Potter <lorn.potter@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/sensors/blackberry/bbsensorbackend.cpp | 6 | ||||
-rw-r--r-- | src/sensors/qsensor.cpp | 15 | ||||
-rw-r--r-- | src/sensors/qsensor.h | 3 |
3 files changed, 10 insertions, 14 deletions
diff --git a/src/plugins/sensors/blackberry/bbsensorbackend.cpp b/src/plugins/sensors/blackberry/bbsensorbackend.cpp index 7757065..26bce35 100644 --- a/src/plugins/sensors/blackberry/bbsensorbackend.cpp +++ b/src/plugins/sensors/blackberry/bbsensorbackend.cpp @@ -220,8 +220,14 @@ void BbSensorBackendBase::start() const int result = devctl(m_deviceFile.handle(), DCMD_SENSOR_RATE, &deviceRate, sizeof(deviceRate), NULL); if (result != EOK) { + sensor()->setDataRate(0); perror(QString::fromLatin1("Setting sensor rate for %1 failed") .arg(m_deviceFile.fileName()).toLocal8Bit()); + } else { + if (deviceRate.rx.rate > 0) + sensor()->setDataRate(microSecondsToHertz(deviceRate.rx.rate)); + else + sensor()->setDataRate(0); } } diff --git a/src/sensors/qsensor.cpp b/src/sensors/qsensor.cpp index 9d41dbf..56c11bc 100644 --- a/src/sensors/qsensor.cpp +++ b/src/sensors/qsensor.cpp @@ -480,20 +480,9 @@ int QSensor::dataRate() const void QSensor::setDataRate(int rate) { Q_D(QSensor); - if (rate == 0 || !isConnectedToBackend()) { + if (d->dataRate != rate) { d->dataRate = rate; - return; - } - bool warn = true; - Q_FOREACH (const qrange &range, d->availableDataRates) { - if (rate >= range.first && rate <= range.second) { - warn = false; - d->dataRate = rate; - break; - } - } - if (warn) { - qWarning() << "setDataRate:" << rate << "is not supported by the sensor."; + emit dataRateChanged(); } } diff --git a/src/sensors/qsensor.h b/src/sensors/qsensor.h index 43fe221..bcdc09e 100644 --- a/src/sensors/qsensor.h +++ b/src/sensors/qsensor.h @@ -84,7 +84,7 @@ class Q_SENSORS_EXPORT QSensor : public QObject Q_PROPERTY(QByteArray type READ type) Q_PROPERTY(bool connectedToBackend READ isConnectedToBackend) Q_PROPERTY(qrangelist availableDataRates READ availableDataRates) - Q_PROPERTY(int dataRate READ dataRate WRITE setDataRate) + Q_PROPERTY(int dataRate READ dataRate WRITE setDataRate NOTIFY dataRateChanged) Q_PROPERTY(QSensorReading* reading READ reading NOTIFY readingChanged) Q_PROPERTY(bool busy READ isBusy) Q_PROPERTY(bool active READ isActive WRITE setActive NOTIFY activeChanged) @@ -167,6 +167,7 @@ Q_SIGNALS: void sensorError(int error); void availableSensorsChanged(); void alwaysOnChanged(); + void dataRateChanged(); protected: explicit QSensor(const QByteArray &type, QSensorPrivate &dd, QObject* parent = 0); |