summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens.qnx@kdab.com>2012-04-26 08:58:07 +0200
committerQt by Nokia <qt-info@nokia.com>2012-04-27 00:59:50 +0200
commit8975e010ecc890d92e93feddac5838aa87ad4718 (patch)
treeb4b9ed046897320681b7a0e7f52a8ec1a3ce6918 /src
parent0a89f937120c62cf280043efd774caaeb910cbf4 (diff)
Blackberry backend honors alwaysOn property
Make sure the DCMD_SENSOR_BKGRND command is sent to the sensor when we call start(). Also ensure we send again the command when the property is updated. Change-Id: Ia37a96ba4dfc6fc1bdecf54ad2b730412939b32a Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Tennessee Carmel-Veilleux <tcarmelveilleux@rim.com> Reviewed-by: Lincoln Ramsay <lincoln.ramsay@nokia.com>
Diffstat (limited to 'src')
-rw-r--r--src/plugins/sensors/blackberry/bbsensorbackend.cpp18
-rw-r--r--src/plugins/sensors/blackberry/bbsensorbackend.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/src/plugins/sensors/blackberry/bbsensorbackend.cpp b/src/plugins/sensors/blackberry/bbsensorbackend.cpp
index e659ee87..d39f6e4a 100644
--- a/src/plugins/sensors/blackberry/bbsensorbackend.cpp
+++ b/src/plugins/sensors/blackberry/bbsensorbackend.cpp
@@ -59,6 +59,7 @@ BbSensorBackendBase::BbSensorBackendBase(const QString &devicePath, sensor_type_
QSensor *sensor)
: QSensorBackend(sensor), m_deviceFile(devicePath), m_sensorType(sensorType)
{
+ connect(sensor, SIGNAL(alwaysOnChanged()), this, SLOT(applyAlwaysOnProperty()));
}
QFile &BbSensorBackendBase::deviceFile()
@@ -147,6 +148,8 @@ void BbSensorBackendBase::start()
return;
}
+ applyAlwaysOnProperty();
+
m_socketNotifier.reset(new QSocketNotifier(m_deviceFile.handle(), QSocketNotifier::Read));
connect(m_socketNotifier.data(), SIGNAL(activated(int)), this, SLOT(dataAvailable()));
}
@@ -173,3 +176,18 @@ void BbSensorBackendBase::dataAvailable()
}
}
}
+
+void BbSensorBackendBase::applyAlwaysOnProperty()
+{
+ if (!m_deviceFile.isOpen())
+ return;
+
+ sensor_devctl_bkgrnd_u bgState;
+ bgState.tx.enable = sensor()->isAlwaysOn() ? 1 : 0;
+
+ const int result = devctl(m_deviceFile.handle(), DCMD_SENSOR_BKGRND, &bgState, sizeof(bgState), NULL);
+ if (result != EOK) {
+ perror(QString::fromLatin1("Setting sensor always on for %1 failed")
+ .arg(m_deviceFile.fileName()).toLocal8Bit());
+ }
+}
diff --git a/src/plugins/sensors/blackberry/bbsensorbackend.h b/src/plugins/sensors/blackberry/bbsensorbackend.h
index 254ad90f..a3afb372 100644
--- a/src/plugins/sensors/blackberry/bbsensorbackend.h
+++ b/src/plugins/sensors/blackberry/bbsensorbackend.h
@@ -81,6 +81,7 @@ protected:
private slots:
void dataAvailable();
+ void applyAlwaysOnProperty();
private:
QFile m_deviceFile;