summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/sensors/blackberry/bbsensorbackend.cpp6
-rw-r--r--src/sensors/qsensor.cpp15
-rw-r--r--src/sensors/qsensor.h3
-rw-r--r--tests/auto/qsensor/tst_qsensor.cpp13
4 files changed, 15 insertions, 22 deletions
diff --git a/src/plugins/sensors/blackberry/bbsensorbackend.cpp b/src/plugins/sensors/blackberry/bbsensorbackend.cpp
index 77570655..26bce35d 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 9d41dbf7..56c11bc4 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 43fe221c..bcdc09e2 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 38c32e76..534a14d9 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()