diff options
Diffstat (limited to 'src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp')
-rw-r--r-- | src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp | 27 |
1 files changed, 20 insertions, 7 deletions
diff --git a/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp b/src/plugins/sensors/sensorfw/sensorfwproximitysensor.cpp index cdfe7bd..8eb2870 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); } |