From a5e25459c631bad6cd2834a78080b50e429fa261 Mon Sep 17 00:00:00 2001 From: Lincoln Ramsay Date: Wed, 18 Jan 2012 16:36:45 +1000 Subject: support for IR proximity sensor in the simulator Also requires a change to the simulator. Change-Id: I5086d3e49773975fc258f3f4481e643dbff33b15 Sanity-Review: Qt Sanity Bot Reviewed-by: Zsolt Simon --- src/plugins/sensors/simulator/main.cpp | 6 ++ .../sensors/simulator/qsensordata_simulator.cpp | 13 ++++ .../sensors/simulator/qsensordata_simulator_p.h | 7 +++ src/plugins/sensors/simulator/simulator.pro | 2 + src/plugins/sensors/simulator/simulatorcommon.cpp | 14 +++++ src/plugins/sensors/simulator/simulatorcommon.h | 2 + .../simulator/simulatorirproximitysensor.cpp | 69 ++++++++++++++++++++++ .../sensors/simulator/simulatorirproximitysensor.h | 61 +++++++++++++++++++ 8 files changed, 174 insertions(+) create mode 100644 src/plugins/sensors/simulator/simulatorirproximitysensor.cpp create mode 100644 src/plugins/sensors/simulator/simulatorirproximitysensor.h (limited to 'src/plugins/sensors') diff --git a/src/plugins/sensors/simulator/main.cpp b/src/plugins/sensors/simulator/main.cpp index 03ca846..2688ba7 100644 --- a/src/plugins/sensors/simulator/main.cpp +++ b/src/plugins/sensors/simulator/main.cpp @@ -44,6 +44,7 @@ #include "simulatorlightsensor.h" #include "simulatorcompass.h" #include "simulatorproximitysensor.h" +#include "simulatorirproximitysensor.h" #include "simulatormagnetometer.h" #include #include @@ -61,6 +62,7 @@ public: QSensorManager::registerBackend(QLightSensor::type, SimulatorLightSensor::id, this); QSensorManager::registerBackend(QCompass::type, SimulatorCompass::id, this); QSensorManager::registerBackend(QProximitySensor::type, SimulatorProximitySensor::id, this); + QSensorManager::registerBackend(QIRProximitySensor::type, SimulatorIRProximitySensor::id, this); QSensorManager::registerBackend(QMagnetometer::type, SimulatorMagnetometer::id, this); } @@ -82,6 +84,10 @@ public: return new SimulatorProximitySensor(sensor); } + if (sensor->identifier() == SimulatorIRProximitySensor::id) { + return new SimulatorIRProximitySensor(sensor); + } + if (sensor->identifier() == SimulatorCompass::id) { return new SimulatorCompass(sensor); } diff --git a/src/plugins/sensors/simulator/qsensordata_simulator.cpp b/src/plugins/sensors/simulator/qsensordata_simulator.cpp index d920f5a..2202b6f 100644 --- a/src/plugins/sensors/simulator/qsensordata_simulator.cpp +++ b/src/plugins/sensors/simulator/qsensordata_simulator.cpp @@ -52,6 +52,7 @@ void qt_registerSensorTypes() qRegisterMetaTypeStreamOperators("QtMobility::QAccelerometerReadingData"); qRegisterMetaTypeStreamOperators("QtMobility::QCompassReadingData"); qRegisterMetaTypeStreamOperators("QtMobility::QProximityReadingData"); + qRegisterMetaTypeStreamOperators("QtMobility::QIRProximityReadingData"); qRegisterMetaTypeStreamOperators("QtMobility::QMagnetometerReadingData"); } @@ -117,6 +118,18 @@ QDataStream &operator>>(QDataStream &in, QProximityReadingData &s) return in; } +QDataStream &operator<<(QDataStream &out, const QIRProximityReadingData &s) +{ + out << s.irProximity << s.timestamp; + return out; +} + +QDataStream &operator>>(QDataStream &in, QIRProximityReadingData &s) +{ + in >> s.irProximity >> s.timestamp; + return in; +} + QDataStream &operator<<(QDataStream &out, const QMagnetometerReadingData &s) { out << s.x << s.y << s.z << s.calibrationLevel << s.timestamp; diff --git a/src/plugins/sensors/simulator/qsensordata_simulator_p.h b/src/plugins/sensors/simulator/qsensordata_simulator_p.h index a7b9ca5..a47f2d3 100644 --- a/src/plugins/sensors/simulator/qsensordata_simulator_p.h +++ b/src/plugins/sensors/simulator/qsensordata_simulator_p.h @@ -109,6 +109,12 @@ struct QProximityReadingData QDateTime timestamp; }; +struct QIRProximityReadingData +{ + double irProximity; + QDateTime timestamp; +}; + void qt_registerSensorTypes(); } @@ -119,5 +125,6 @@ Q_DECLARE_METATYPE(QtMobility::QAccelerometerReadingData) Q_DECLARE_METATYPE(QtMobility::QMagnetometerReadingData) Q_DECLARE_METATYPE(QtMobility::QCompassReadingData) Q_DECLARE_METATYPE(QtMobility::QProximityReadingData) +Q_DECLARE_METATYPE(QtMobility::QIRProximityReadingData) #endif // QSENSORDATA_SIMULATOR_P_H diff --git a/src/plugins/sensors/simulator/simulator.pro b/src/plugins/sensors/simulator/simulator.pro index 62544ce..f811170 100644 --- a/src/plugins/sensors/simulator/simulator.pro +++ b/src/plugins/sensors/simulator/simulator.pro @@ -19,6 +19,7 @@ HEADERS += \ simulatorlightsensor.h\ simulatorcompass.h\ simulatorproximitysensor.h\ + simulatorirproximitysensor.h\ simulatormagnetometer.h\ qsensordata_simulator_p.h @@ -29,6 +30,7 @@ SOURCES += \ simulatorlightsensor.cpp\ simulatorcompass.cpp\ simulatorproximitysensor.cpp\ + simulatorirproximitysensor.cpp\ simulatormagnetometer.cpp\ qsensordata_simulator.cpp\ main.cpp diff --git a/src/plugins/sensors/simulator/simulatorcommon.cpp b/src/plugins/sensors/simulator/simulatorcommon.cpp index ad7c50e..4701623 100644 --- a/src/plugins/sensors/simulator/simulatorcommon.cpp +++ b/src/plugins/sensors/simulator/simulatorcommon.cpp @@ -53,6 +53,7 @@ Q_GLOBAL_STATIC(QtMobility::QAccelerometerReadingData, qtAccelerometerData) Q_GLOBAL_STATIC(QtMobility::QMagnetometerReadingData, qtMagnetometerData) Q_GLOBAL_STATIC(QtMobility::QCompassReadingData, qtCompassData) Q_GLOBAL_STATIC(QtMobility::QProximityReadingData, qtProximityData) +Q_GLOBAL_STATIC(QtMobility::QIRProximityReadingData, qtIRProximityData) Q_GLOBAL_STATIC(SensorsConnection, sensorsConnection) class SimulatorAsyncConnection: public QThread @@ -93,6 +94,7 @@ signals: void setMagnetometerData(const QtMobility::QMagnetometerReadingData &); void setCompassData(const QtMobility::QCompassReadingData &); void setProximityData(const QtMobility::QProximityReadingData &); + void setIRProximityData(const QtMobility::QIRProximityReadingData &); private slots: void doConnectToServer() @@ -133,6 +135,8 @@ SensorsConnection::SensorsConnection(QObject *parent) this, SLOT(setCompassData(QtMobility::QCompassReadingData))); connect(mConnection, SIGNAL(setProximityData(QtMobility::QProximityReadingData)), this, SLOT(setProximityData(QtMobility::QProximityReadingData))); + connect(mConnection, SIGNAL(setIRProximityData(QtMobility::QIRProximityReadingData)), + this, SLOT(setIRProximityData(QtMobility::QIRProximityReadingData))); mConnection->connectToServer(); } @@ -172,6 +176,11 @@ void SensorsConnection::setProximityData(const QtMobility::QProximityReadingData *qtProximityData() = data; } +void SensorsConnection::setIRProximityData(const QtMobility::QIRProximityReadingData &data) +{ + *qtIRProximityData() = data; +} + void SensorsConnection::initialSensorsDataSent() { mInitialDataSent = true; @@ -246,4 +255,9 @@ QtMobility::QProximityReadingData get_qtProximityData() return *qtProximityData(); } +QtMobility::QIRProximityReadingData get_qtIRProximityData() +{ + return *qtIRProximityData(); +} + #include "simulatorcommon.moc" diff --git a/src/plugins/sensors/simulator/simulatorcommon.h b/src/plugins/sensors/simulator/simulatorcommon.h index 6eb2517..f0bc346 100644 --- a/src/plugins/sensors/simulator/simulatorcommon.h +++ b/src/plugins/sensors/simulator/simulatorcommon.h @@ -65,6 +65,7 @@ public slots: void setMagnetometerData(const QtMobility::QMagnetometerReadingData &); void setCompassData(const QtMobility::QCompassReadingData &); void setProximityData(const QtMobility::QProximityReadingData &); + void setIRProximityData(const QtMobility::QIRProximityReadingData &); void initialSensorsDataSent(); private: @@ -92,6 +93,7 @@ QtMobility::QAmbientLightReadingData get_qtAmbientLightData(); QtMobility::QLightReadingData get_qtLightData(); QtMobility::QCompassReadingData get_qtCompassData(); QtMobility::QProximityReadingData get_qtProximityData(); +QtMobility::QIRProximityReadingData get_qtIRProximityData(); #endif diff --git a/src/plugins/sensors/simulator/simulatorirproximitysensor.cpp b/src/plugins/sensors/simulator/simulatorirproximitysensor.cpp new file mode 100644 index 0000000..4ab9116 --- /dev/null +++ b/src/plugins/sensors/simulator/simulatorirproximitysensor.cpp @@ -0,0 +1,69 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtSensors module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include "simulatorirproximitysensor.h" +#include +#include + +const char *SimulatorIRProximitySensor::id("Simulator.IRProximitySensor"); + +SimulatorIRProximitySensor::SimulatorIRProximitySensor(QSensor *sensor) + : SimulatorCommon(sensor) +{ + setReading(&m_reading); +} + +void SimulatorIRProximitySensor::poll() +{ + QtMobility::QIRProximityReadingData data = get_qtIRProximityData(); + quint64 newTimestamp; + if (!data.timestamp.isValid()) + newTimestamp = QDateTime::currentDateTime().toTime_t(); + else + newTimestamp = data.timestamp.toTime_t(); + if (m_reading.reflectance() != data.irProximity) { + m_reading.setTimestamp(newTimestamp); + m_reading.setReflectance(data.irProximity); + + newReadingAvailable(); + } +} + diff --git a/src/plugins/sensors/simulator/simulatorirproximitysensor.h b/src/plugins/sensors/simulator/simulatorirproximitysensor.h new file mode 100644 index 0000000..24d0709 --- /dev/null +++ b/src/plugins/sensors/simulator/simulatorirproximitysensor.h @@ -0,0 +1,61 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the QtSensors module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:LGPL$ +** GNU Lesser General Public License Usage +** This file may be used under the terms of the GNU Lesser General Public +** License version 2.1 as published by the Free Software Foundation and +** appearing in the file LICENSE.LGPL included in the packaging of this +** file. Please review the following information to ensure the GNU Lesser +** General Public License version 2.1 requirements will be met: +** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Nokia gives you certain additional +** rights. These rights are described in the Nokia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU General +** Public License version 3.0 as published by the Free Software Foundation +** and appearing in the file LICENSE.GPL included in the packaging of this +** file. Please review the following information to ensure the GNU General +** Public License version 3.0 requirements will be met: +** http://www.gnu.org/copyleft/gpl.html. +** +** Other Usage +** Alternatively, this file may be used in accordance with the terms and +** conditions contained in a signed written agreement between you and Nokia. +** +** +** +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef SIMULATORIRPROXIMITYSENSOR_H +#define SIMULATORIRPROXIMITYSENSOR_H + +#include "simulatorcommon.h" +#include + +class SimulatorIRProximitySensor : public SimulatorCommon +{ +public: + static const char *id; + + SimulatorIRProximitySensor(QSensor *sensor); + + void poll(); +private: + QIRProximityReading m_reading; +}; + +#endif + -- cgit v1.2.1