diff options
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); |