diff options
-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 | ||||
-rw-r--r-- | tests/auto/qsensor/tst_qsensor.cpp | 13 |
4 files changed, 15 insertions, 22 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); diff --git a/tests/auto/qsensor/tst_qsensor.cpp b/tests/auto/qsensor/tst_qsensor.cpp index 38c32e7..534a14d 100644 --- a/tests/auto/qsensor/tst_qsensor.cpp +++ b/tests/auto/qsensor/tst_qsensor.cpp @@ -364,14 +364,14 @@ private slots: QCOMPARE(actual, expected); } - // Test that a previously-set, invalid data rate is reset to 0 + // Test that a previously-set, invalid data rate is retained { TestSensor sensor; sensor.setDataRate(50); sensor.setProperty("doThis", "rates"); sensor.connectToBackend(); int actual = sensor.dataRate(); - int expected = 0; + int expected = 50; QCOMPARE(actual, expected); } @@ -533,13 +533,11 @@ private slots: TestSensor sensor; sensor.connectToBackend(); - QTest::ignoreMessage(QtWarningMsg, "setDataRate: 1 is not supported by the sensor. "); sensor.setDataRate(1); - QCOMPARE(sensor.dataRate(), 0); + QCOMPARE(sensor.dataRate(), 1); - QTest::ignoreMessage(QtWarningMsg, "setDataRate: 1000 is not supported by the sensor. "); sensor.setDataRate(1000); - QCOMPARE(sensor.dataRate(), 0); + QCOMPARE(sensor.dataRate(), 1000); } void testSetBadDataRateWhenNotConnected() @@ -550,9 +548,8 @@ private slots: sensor.setDataRate(300); QCOMPARE(sensor.dataRate(), 300); sensor.setDataRate(350); - QTest::ignoreMessage(QtWarningMsg, "setDataRate: 350 is not supported by the sensor. "); sensor.connectToBackend(); - QCOMPARE(sensor.dataRate(), 0); + QCOMPARE(sensor.dataRate(), 350); } void testSetBadOutputRange() |