diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp | 27 | ||||
-rw-r--r-- | src/plugins/sensors/sensorfw/sensorfwproximitysensor.h | 2 |
2 files changed, 21 insertions, 8 deletions
diff --git a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp index cdfe7bdb..8eb28705 100644 --- a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp +++ b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp @@ -58,13 +58,25 @@ void SensorfwProximitySensor::start() if (reinitIsNeeded) init(); SensorfwSensorBase::start(); + if (m_sensorInterface) { + Unsigned data(((ProximitySensorChannelInterface*)m_sensorInterface)->proximity()); + // Note: Unlike reflectanceDataAvailable() signal, the query + // above returns only integer reflectance without the + // boolean withinProximity value. + bool close = (data.x() == 0); + m_exClose = close; + m_reading.setClose(close); + m_reading.setTimestamp(data.UnsignedData().timestamp_); + m_exClose = (int)m_reading.close(); + newReadingAvailable(); + } } - -void SensorfwProximitySensor::slotDataAvailable(const Unsigned& data) +void SensorfwProximitySensor::slotReflectanceDataAvailable(const Proximity& data) { - bool close = data.x()? true: false; - if (!firstRun && close == m_exClose) return; + bool close = data.x() ? true : false; + if (!firstRun && close == m_exClose) + return; m_reading.setClose(close); m_reading.setTimestamp(data.UnsignedData().timestamp_); newReadingAvailable(); @@ -75,9 +87,10 @@ void SensorfwProximitySensor::slotDataAvailable(const Unsigned& data) bool SensorfwProximitySensor::doConnect() { - Q_ASSERT(m_sensorInterface); - return (QObject::connect(m_sensorInterface, SIGNAL(dataAvailable(Unsigned)), - this, SLOT(slotDataAvailable(Unsigned)))); + Q_ASSERT(qobject_cast<ProximitySensorChannelInterface*>(m_sensorInterface)); + return QObject::connect(qobject_cast<ProximitySensorChannelInterface*>(m_sensorInterface), + &ProximitySensorChannelInterface::reflectanceDataAvailable, + this, &SensorfwProximitySensor::slotReflectanceDataAvailable); } diff --git a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.h b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.h index d8b96640..992db84a 100644 --- a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.h +++ b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.h @@ -67,7 +67,7 @@ private: bool firstRun; private slots: - void slotDataAvailable(const Unsigned& data); + void slotReflectanceDataAvailable(const Proximity& data); }; #endif |