diff options
-rw-r--r-- | src/plugins/sensors/blackberry/bbsensorbackend.cpp | 18 | ||||
-rw-r--r-- | src/plugins/sensors/blackberry/bbsensorbackend.h | 1 |
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; |