diff options
author | Kevin Ottens <kevin.ottens.qnx@kdab.com> | 2012-04-26 08:58:07 +0200 |
---|---|---|
committer | Qt by Nokia <qt-info@nokia.com> | 2012-04-27 00:59:50 +0200 |
commit | 8975e010ecc890d92e93feddac5838aa87ad4718 (patch) | |
tree | b4b9ed046897320681b7a0e7f52a8ec1a3ce6918 /src/plugins/sensors/blackberry/bbsensorbackend.cpp | |
parent | 0a89f937120c62cf280043efd774caaeb910cbf4 (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/plugins/sensors/blackberry/bbsensorbackend.cpp')
-rw-r--r-- | src/plugins/sensors/blackberry/bbsensorbackend.cpp | 18 |
1 files changed, 18 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()); + } +} |