summaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorLincoln Ramsay <lincoln.ramsay@nokia.com>2012-01-18 16:36:45 +1000
committerQt by Nokia <qt-info@nokia.com>2012-01-19 03:47:28 +0100
commita5e25459c631bad6cd2834a78080b50e429fa261 (patch)
tree7d624eccbc7eb7b7481997ed6e48411decaf12cb /src/plugins
parent52e96f616f903a430f8c47e6584c1254284f6132 (diff)
support for IR proximity sensor in the simulator
Also requires a change to the simulator. Change-Id: I5086d3e49773975fc258f3f4481e643dbff33b15 Sanity-Review: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: Zsolt Simon <zsolt.simon@nokia.com>
Diffstat (limited to 'src/plugins')
-rw-r--r--src/plugins/sensors/simulator/main.cpp6
-rw-r--r--src/plugins/sensors/simulator/qsensordata_simulator.cpp13
-rw-r--r--src/plugins/sensors/simulator/qsensordata_simulator_p.h7
-rw-r--r--src/plugins/sensors/simulator/simulator.pro2
-rw-r--r--src/plugins/sensors/simulator/simulatorcommon.cpp14
-rw-r--r--src/plugins/sensors/simulator/simulatorcommon.h2
-rw-r--r--src/plugins/sensors/simulator/simulatorirproximitysensor.cpp69
-rw-r--r--src/plugins/sensors/simulator/simulatorirproximitysensor.h61
8 files changed, 174 insertions, 0 deletions
diff --git a/src/plugins/sensors/simulator/main.cpp b/src/plugins/sensors/simulator/main.cpp
index 03ca8467..2688ba7a 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 <QSensorPluginInterface>
#include <QSensorBackend>
@@ -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 d920f5aa..2202b6ff 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<QAccelerometerReadingData>("QtMobility::QAccelerometerReadingData");
qRegisterMetaTypeStreamOperators<QCompassReadingData>("QtMobility::QCompassReadingData");
qRegisterMetaTypeStreamOperators<QProximityReadingData>("QtMobility::QProximityReadingData");
+ qRegisterMetaTypeStreamOperators<QIRProximityReadingData>("QtMobility::QIRProximityReadingData");
qRegisterMetaTypeStreamOperators<QMagnetometerReadingData>("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 a7b9ca5c..a47f2d30 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 62544ce0..f811170b 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 ad7c50ed..47016239 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 6eb2517e..f0bc3465 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 00000000..4ab9116c
--- /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 <QDebug>
+#include <QtGlobal>
+
+const char *SimulatorIRProximitySensor::id("Simulator.IRProximitySensor");
+
+SimulatorIRProximitySensor::SimulatorIRProximitySensor(QSensor *sensor)
+ : SimulatorCommon(sensor)
+{
+ setReading<QIRProximityReading>(&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 00000000..24d07099
--- /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 <qirproximitysensor.h>
+
+class SimulatorIRProximitySensor : public SimulatorCommon
+{
+public:
+ static const char *id;
+
+ SimulatorIRProximitySensor(QSensor *sensor);
+
+ void poll();
+private:
+ QIRProximityReading m_reading;
+};
+
+#endif
+