diff options
author | Lorn Potter <lorn.potter@gmail.com> | 2012-10-27 08:32:44 +1000 |
---|---|---|
committer | Lorn Potter <lorn.potter@gmail.com> | 2012-11-13 20:13:53 +0100 |
commit | f2b41709db56eaf297d80b9e5dee6a6ea40b9228 (patch) | |
tree | b7dd8d7e22b9e7109255409e08928254d8a42b8f /src | |
parent | 05b99e39f4c9e3249d22410d1c70eafb7b8c0170 (diff) |
move irprox sensor to proper place in QSensor
Change-Id: Ie386282010244d91e365ea86ccf8ec5a5c5329dc
Reviewed-by: Lorn Potter <lorn.potter@gmail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/sensors/qirproximitysensor.cpp | 153 | ||||
-rw-r--r-- | src/sensors/qirproximitysensor.h | 82 | ||||
-rw-r--r-- | src/sensors/qirproximitysensor_p.h | 78 | ||||
-rw-r--r-- | src/sensors/sensors.pro | 8 |
4 files changed, 318 insertions, 3 deletions
diff --git a/src/sensors/qirproximitysensor.cpp b/src/sensors/qirproximitysensor.cpp new file mode 100644 index 0000000000..11572335b7 --- /dev/null +++ b/src/sensors/qirproximitysensor.cpp @@ -0,0 +1,153 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, 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, Digia gives you certain additional +** rights. These rights are described in the Digia 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. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include <qirproximitysensor.h> +#include "qirproximitysensor_p.h" + +QTM_BEGIN_NAMESPACE + +IMPLEMENT_READING(QIRProximityReading) + +/*! + \class QIRProximityReading + \ingroup sensors_reading + \inmodule QtSensors + + \brief The QIRProximityReading class holds readings from the IR proximity sensor. + + The IR (infra-red) proximity sensor detects proximity by beaming out infra-red light + and detecting how much of the light returns. + + The biggest limitation of this technology is that there is no reliable way to turn the + reflectance values into distances unless both the item being detected and the ambient + conditions are known. + + \section2 QIRProximityReading Units + + The sensor reports reflectance as a percentage. That is, 0 indicates nothing was detected + within the range of the sensor and 100 indicates the infra-red signal returned at the full + power level that it was sent at. +*/ + +/*! + \property QIRProximityReading::reflectance + \brief Holds the reflectance value. + + The reflectance is a percentage (from 0 to 100) indicating how much of the transmitted + infra-red light was returned. + + \sa {QIRProximityReading Units} +*/ +qreal QIRProximityReading::reflectance() const +{ + return d->reflectance; +} + +/*! + Sets the reflectance value to \a reflectance. +*/ +void QIRProximityReading::setReflectance(qreal reflectance) +{ + d->reflectance = reflectance; +} + +// ===================================================================== + +/*! + \class QIRProximityFilter + \ingroup sensors_filter + \inmodule QtSensors + + \brief The QIRProximityFilter class is a convenience wrapper around QSensorFilter. + + The only difference is that the filter() method features a pointer to QIRProximityReading + instead of QSensorReading. +*/ + +/*! + \fn QIRProximityFilter::filter(QIRProximityReading *reading) + + Called when \a reading changes. Returns false to prevent the reading from propagating. + + \sa QSensorFilter::filter() +*/ + +char const * const QIRProximitySensor::type("QIRProximitySensor"); + +/*! + \class QIRProximitySensor + \ingroup sensors_type + \inmodule QtSensors + + \brief The QIRProximitySensor class is a convenience wrapper around QSensor. + + The only behavioural difference is that this class sets the type properly. + + This class also features a reading() function that returns a QIRProximityReading instead of a QSensorReading. + + For details about how the sensor works, see \l QIRProximityReading. + + \sa QIRProximityReading +*/ + +/*! + \fn QIRProximitySensor::QIRProximitySensor(QObject *parent) + + Construct the sensor as a child of \a parent. +*/ + +/*! + \fn QIRProximitySensor::~QIRProximitySensor() + + Destroy the sensor. Stops the sensor if it has not already been stopped. +*/ + +/*! + \fn QIRProximitySensor::reading() const + + Returns the reading class for this sensor. + + \sa QSensor::reading() +*/ + + +#include "moc_qirproximitysensor.cpp" +QTM_END_NAMESPACE diff --git a/src/sensors/qirproximitysensor.h b/src/sensors/qirproximitysensor.h new file mode 100644 index 0000000000..83b7ee7f24 --- /dev/null +++ b/src/sensors/qirproximitysensor.h @@ -0,0 +1,82 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, 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, Digia gives you certain additional +** rights. These rights are described in the Digia 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. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIRPROXIMITYSENSOR_H +#define QIRPROXIMITYSENSOR_H + +#include <qsensor.h> + +QTM_BEGIN_NAMESPACE + +class QIRProximityReadingPrivate; + +class Q_SENSORS_EXPORT QIRProximityReading : public QSensorReading +{ + Q_OBJECT + Q_PROPERTY(qreal reflectance READ reflectance) + DECLARE_READING(QIRProximityReading) +public: + qreal reflectance() const; + void setReflectance(qreal reflectance); +}; + +class Q_SENSORS_EXPORT QIRProximityFilter : public QSensorFilter +{ +public: + virtual bool filter(QIRProximityReading *reading) = 0; +private: + bool filter(QSensorReading *reading) { return filter(static_cast<QIRProximityReading*>(reading)); } +}; + +class Q_SENSORS_EXPORT QIRProximitySensor : public QSensor +{ + Q_OBJECT +public: + explicit QIRProximitySensor(QObject *parent = 0) : QSensor(QIRProximitySensor::type, parent) {} + virtual ~QIRProximitySensor() {} + QIRProximityReading *reading() const { return static_cast<QIRProximityReading*>(QSensor::reading()); } + static char const * const type; +}; + +QTM_END_NAMESPACE + +#endif + diff --git a/src/sensors/qirproximitysensor_p.h b/src/sensors/qirproximitysensor_p.h new file mode 100644 index 0000000000..b595f12430 --- /dev/null +++ b/src/sensors/qirproximitysensor_p.h @@ -0,0 +1,78 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of the Qt Mobility Components. +** +** $QT_BEGIN_LICENSE:LGPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, 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, Digia gives you certain additional +** rights. These rights are described in the Digia 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. +** +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QIRPROXIMITYSENSOR_P_H +#define QIRPROXIMITYSENSOR_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +QTM_BEGIN_NAMESPACE + +class QIRProximityReadingPrivate +{ +public: + QIRProximityReadingPrivate() + : reflectance(0) + { + } + + + + /* + * Note that this class is copied so you may need to implement + * a copy constructor if you have complex types or pointers + * as values. + */ + qreal reflectance; +}; + +QTM_END_NAMESPACE + +#endif diff --git a/src/sensors/sensors.pro b/src/sensors/sensors.pro index fe5b59fc64..3c16db72bf 100644 --- a/src/sensors/sensors.pro +++ b/src/sensors/sensors.pro @@ -34,16 +34,17 @@ DEPENDPATH += . PUBLIC_HEADERS += \ qsensorbackend.h\ qsensormanager.h\ - qsensorplugin.h\ + qsensorplugin.h PRIVATE_HEADERS += \ qsensorpluginloader_p.h\ - sensorlog_p.h\ + sensorlog_p.h SOURCES += qsensorbackend.cpp\ qsensormanager.cpp\ qsensorplugin.cpp\ - qsensorpluginloader.cpp\ + qsensorpluginloader.cpp + # 3 files per sensor (including QSensor) SENSORS=\ @@ -58,6 +59,7 @@ SENSORS=\ qrotationsensor\ qtapsensor\ qgyroscope\ + qirproximitysensor for(s,SENSORS) { # Client API |