summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBernd Weimer <bweimer@blackberry.com>2013-04-02 18:53:03 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-09 09:05:55 +0200
commitaac0603f0e49c99d146e00244b67d986eef52cdf (patch)
tree0bae20e1d41b672e1818a13640919eabd98045c7
parent75d32c08365b671116eb66b9c9ef7d1aec883442 (diff)
downloadqtsensors-aac0603f0e49c99d146e00244b67d986eef52cdf.tar.gz
Added temperature property to pressure sensor
Many air pressure sensors provide their temperature, as well. This can be used for temperature compensation for instance. The pressure sensor API has been extended and a BlackBerry backend has been implemented. Change-Id: I188e1276dff74601d757d0a356b28b4fea4594bd Reviewed-by: Thomas McGuire <thomas.mcguire@kdab.com> Reviewed-by: Lorn Potter <lorn.potter@jollamobile.com>
-rw-r--r--src/imports/sensors/qmlpressuresensor.cpp20
-rw-r--r--src/imports/sensors/qmlpressuresensor.h4
-rw-r--r--src/imports/sensors/sensors.cpp43
-rw-r--r--src/plugins/sensors/blackberry/bbpressuresensor.cpp1
-rw-r--r--src/plugins/sensors/blackberry/bbsensorbackend.cpp1
-rw-r--r--src/sensors/qpressuresensor.cpp27
-rw-r--r--src/sensors/qpressuresensor.h4
-rw-r--r--src/sensors/qpressuresensor_p.h3
-rw-r--r--src/sensors/qsensor.cpp4
-rw-r--r--src/sensors/qsensor.h1
-rw-r--r--tests/auto/qsensor/test_backends.h1
-rw-r--r--tests/auto/qsensor/tst_qsensor.cpp1
12 files changed, 109 insertions, 1 deletions
diff --git a/src/imports/sensors/qmlpressuresensor.cpp b/src/imports/sensors/qmlpressuresensor.cpp
index a21f7c0..8f32b4e 100644
--- a/src/imports/sensors/qmlpressuresensor.cpp
+++ b/src/imports/sensors/qmlpressuresensor.cpp
@@ -99,6 +99,7 @@ QmlPressureReading::QmlPressureReading(QPressureSensor *sensor)
: QmlSensorReading(sensor)
, m_sensor(sensor)
, m_pressure(0)
+ , m_temperature(0)
{
}
@@ -118,6 +119,19 @@ qreal QmlPressureReading::pressure() const
return m_pressure;
}
+/*!
+ \qmlproperty qreal PressureReading::temperature
+ This property holds the pressure sensor's temperature value in degrees Celsius.
+
+ Please see QPressureReading::temperature for information about this property.
+ \since QtSensors 5.2
+*/
+
+qreal QmlPressureReading::temperature() const
+{
+ return m_temperature;
+}
+
QSensorReading *QmlPressureReading::reading() const
{
return m_sensor->reading();
@@ -130,4 +144,10 @@ void QmlPressureReading::readingUpdate()
m_pressure = pressure;
Q_EMIT pressureChanged();
}
+
+ qreal temperature = m_sensor->reading()->temperature();
+ if (m_temperature != temperature) {
+ m_temperature = temperature;
+ Q_EMIT temperatureChanged();
+ }
}
diff --git a/src/imports/sensors/qmlpressuresensor.h b/src/imports/sensors/qmlpressuresensor.h
index 627915a..c8c19fd 100644
--- a/src/imports/sensors/qmlpressuresensor.h
+++ b/src/imports/sensors/qmlpressuresensor.h
@@ -65,14 +65,17 @@ class QmlPressureReading : public QmlSensorReading
{
Q_OBJECT
Q_PROPERTY(qreal pressure READ pressure NOTIFY pressureChanged)
+ Q_PROPERTY(qreal temperature READ temperature NOTIFY temperatureChanged REVISION 1)
public:
explicit QmlPressureReading(QPressureSensor *sensor);
~QmlPressureReading();
qreal pressure() const;
+ qreal temperature() const;
Q_SIGNALS:
void pressureChanged();
+ Q_REVISION(1) void temperatureChanged();
private:
QSensorReading *reading() const Q_DECL_OVERRIDE;
@@ -80,6 +83,7 @@ private:
QPressureSensor *m_sensor;
qreal m_pressure;
+ qreal m_temperature;
};
QT_END_NAMESPACE
diff --git a/src/imports/sensors/sensors.cpp b/src/imports/sensors/sensors.cpp
index 77ad754..abcb381 100644
--- a/src/imports/sensors/sensors.cpp
+++ b/src/imports/sensors/sensors.cpp
@@ -174,6 +174,49 @@ public:
qmlRegisterUncreatableType<QmlTiltSensorReading >(package, major, minor, "TiltReading", QLatin1String("Cannot create TiltReading"));
qmlRegisterType <QmlSensorGesture >(package, major, minor, "SensorGesture");
+
+ // Register the 5.2 interfaces
+ major = 5;
+ minor = 2;
+ qmlRegisterSingletonType <QmlSensorGlobal >(package, major, minor, "QmlSensors", global_object_50);
+ qmlRegisterUncreatableType<QmlSensorRange >(package, major, minor, "Range", QLatin1String("Cannot create Range"));
+ qmlRegisterUncreatableType<QmlSensorOutputRange >(package, major, minor, "OutputRange", QLatin1String("Cannot create OutputRange"));
+ qmlRegisterUncreatableType<QmlSensor,1 >(package, major, minor, "Sensor", QLatin1String("Cannot create Sensor"));
+ qmlRegisterUncreatableType<QmlSensorReading >(package, major, minor, "SensorReading", QLatin1String("Cannot create SensorReading"));
+ qmlRegisterType <QmlAccelerometer,1 >(package, major, minor, "Accelerometer");
+ qmlRegisterUncreatableType<QmlAccelerometerReading >(package, major, minor, "AccelerometerReading", QLatin1String("Cannot create AccelerometerReading"));
+ qmlRegisterType <QmlAltimeter >(package, major, minor, "Altimeter");
+ qmlRegisterUncreatableType<QmlAltimeterReading >(package, major, minor, "AltimeterReading", QLatin1String("Cannot create AltimeterReading"));
+ qmlRegisterType <QmlAmbientLightSensor >(package, major, minor, "AmbientLightSensor");
+ qmlRegisterUncreatableType<QmlAmbientLightSensorReading>(package, major, minor, "AmbientLightReading", QLatin1String("Cannot create AmbientLightReading"));
+ qmlRegisterType <QmlAmbientTemperatureSensor >(package, major, minor, "AmbientTemperatureSensor");
+ qmlRegisterUncreatableType<QmlAmbientTemperatureReading>(package, major, minor, "AmbientTemperatureReading", QLatin1String("Cannot create AmbientTemperatureReading"));
+ qmlRegisterType <QmlCompass >(package, major, minor, "Compass");
+ qmlRegisterUncreatableType<QmlCompassReading >(package, major, minor, "CompassReading", QLatin1String("Cannot create CompassReading"));
+ qmlRegisterType <QmlGyroscope >(package, major, minor, "Gyroscope");
+ qmlRegisterUncreatableType<QmlGyroscopeReading >(package, major, minor, "GyroscopeReading", QLatin1String("Cannot create GyroscopeReading"));
+ qmlRegisterType <QmlHolsterSensor >(package, major, minor, "HolsterSensor");
+ qmlRegisterUncreatableType<QmlHolsterReading >(package, major, minor, "HolsterReading", QLatin1String("Cannot create HolsterReading"));
+ qmlRegisterType <QmlIRProximitySensor >(package, major, minor, "IRProximitySensor");
+ qmlRegisterUncreatableType<QmlIRProximitySensorReading >(package, major, minor, "IRProximityReading", QLatin1String("Cannot create IRProximityReading"));
+ qmlRegisterType <QmlLightSensor >(package, major, minor, "LightSensor");
+ qmlRegisterUncreatableType<QmlLightSensorReading >(package, major, minor, "LightReading", QLatin1String("Cannot create LightReading"));
+ qmlRegisterType <QmlMagnetometer >(package, major, minor, "Magnetometer");
+ qmlRegisterUncreatableType<QmlMagnetometerReading >(package, major, minor, "MagnetometerReading", QLatin1String("Cannot create MagnetometerReading"));
+ qmlRegisterType <QmlOrientationSensor >(package, major, minor, "OrientationSensor");
+ qmlRegisterUncreatableType<QmlOrientationSensorReading >(package, major, minor, "OrientationReading", QLatin1String("Cannot create OrientationReading"));
+ qmlRegisterType <QmlPressureSensor >(package, major, minor, "PressureSensor");
+ qmlRegisterUncreatableType<QmlPressureReading,1 >(package, major, minor, "PressureReading", QLatin1String("Cannot create PressureReading"));
+ qmlRegisterType <QmlProximitySensor >(package, major, minor, "ProximitySensor");
+ qmlRegisterUncreatableType<QmlProximitySensorReading >(package, major, minor, "ProximityReading", QLatin1String("Cannot create ProximityReading"));
+ qmlRegisterType <QmlRotationSensor >(package, major, minor, "RotationSensor");
+ qmlRegisterUncreatableType<QmlRotationSensorReading >(package, major, minor, "RotationReading", QLatin1String("Cannot create RotationReading"));
+ qmlRegisterType <QmlTapSensor >(package, major, minor, "TapSensor");
+ qmlRegisterUncreatableType<QmlTapSensorReading >(package, major, minor, "TapReading", QLatin1String("Cannot create TapReading"));
+ qmlRegisterType <QmlTiltSensor >(package, major, minor, "TiltSensor");
+ qmlRegisterUncreatableType<QmlTiltSensorReading >(package, major, minor, "TiltReading", QLatin1String("Cannot create TiltReading"));
+
+ qmlRegisterType <QmlSensorGesture >(package, major, minor, "SensorGesture");
}
};
diff --git a/src/plugins/sensors/blackberry/bbpressuresensor.cpp b/src/plugins/sensors/blackberry/bbpressuresensor.cpp
index 7098dec..edbb392 100644
--- a/src/plugins/sensors/blackberry/bbpressuresensor.cpp
+++ b/src/plugins/sensors/blackberry/bbpressuresensor.cpp
@@ -54,5 +54,6 @@ QString BbPressureSensor::devicePath()
bool BbPressureSensor::updateReadingFromEvent(const sensor_event_t &event, QPressureReading *reading)
{
reading->setPressure(event.pressure_s.pressure);
+ reading->setTemperature(event.pressure_s.temperature);
return true;
}
diff --git a/src/plugins/sensors/blackberry/bbsensorbackend.cpp b/src/plugins/sensors/blackberry/bbsensorbackend.cpp
index 6b614a8..7822dd8 100644
--- a/src/plugins/sensors/blackberry/bbsensorbackend.cpp
+++ b/src/plugins/sensors/blackberry/bbsensorbackend.cpp
@@ -303,6 +303,7 @@ bool BbSensorBackendBase::isFeatureSupported(QSensor::Feature feature) const
case QSensor::Buffering:
case QSensor::AccelerationMode:
case QSensor::SkipDuplicates:
+ case QSensor::PressureSensorTemperature:
return true;
case QSensor::GeoValues:
#ifndef Q_OS_BLACKBERRY_TABLET
diff --git a/src/sensors/qpressuresensor.cpp b/src/sensors/qpressuresensor.cpp
index ea8a79b..ca3a861 100644
--- a/src/sensors/qpressuresensor.cpp
+++ b/src/sensors/qpressuresensor.cpp
@@ -79,6 +79,33 @@ void QPressureReading::setPressure(qreal pressure)
d->pressure = pressure;
}
+/*!
+ \property QPressureReading::temperature
+ \brief The pressure sensor's temperature.
+ \since 5.2
+
+ The temperature is returned in degree Celsius.
+ This property, if supported, provides the pressure sensor die temperature.
+ Note that this temperature may be (and usually is) different than the temperature
+ reported from QAmbientTemperatureSensor.
+ Use QSensor::isFeatureSupported() with the QSensor::PressureSensorTemperature
+ flag to determine its availability.
+*/
+
+qreal QPressureReading::temperature() const
+{
+ return d->temperature;
+}
+
+/*!
+ Sets the pressure sensor's temperature to \a temperature.
+ \since 5.2
+*/
+void QPressureReading::setTemperature(qreal temperature)
+{
+ d->temperature = temperature;
+}
+
// =====================================================================
/*!
diff --git a/src/sensors/qpressuresensor.h b/src/sensors/qpressuresensor.h
index 50379b5..4df2289 100644
--- a/src/sensors/qpressuresensor.h
+++ b/src/sensors/qpressuresensor.h
@@ -51,10 +51,14 @@ class Q_SENSORS_EXPORT QPressureReading : public QSensorReading
{
Q_OBJECT
Q_PROPERTY(qreal pressure READ pressure)
+ Q_PROPERTY(qreal temperature READ temperature)
DECLARE_READING(QPressureReading)
public:
qreal pressure() const;
void setPressure(qreal pressure);
+
+ qreal temperature() const;
+ void setTemperature(qreal temperature);
};
class Q_SENSORS_EXPORT QPressureFilter : public QSensorFilter
diff --git a/src/sensors/qpressuresensor_p.h b/src/sensors/qpressuresensor_p.h
index 1c74e7f..f91b3ba 100644
--- a/src/sensors/qpressuresensor_p.h
+++ b/src/sensors/qpressuresensor_p.h
@@ -58,11 +58,12 @@ class QPressureReadingPrivate
{
public:
QPressureReadingPrivate()
- : pressure(0)
+ : pressure(0), temperature(0)
{
}
qreal pressure;
+ qreal temperature;
};
QT_END_NAMESPACE
diff --git a/src/sensors/qsensor.cpp b/src/sensors/qsensor.cpp
index 01a4f7b..4b8ca2d 100644
--- a/src/sensors/qsensor.cpp
+++ b/src/sensors/qsensor.cpp
@@ -242,6 +242,10 @@ void QSensorPrivate::init(const QByteArray &sensorType)
\value AccelerationMode The backend supports switching the acceleration mode
of the acceleromter with the QAccelerometer::accelerationMode property.
+ The features of QPressureSensor are:
+
+ \value PressureSensorTemperature The backend provides the pressure sensor's die temperature
+
The features of all orientable sensors are:
\value AxesOrientation The backend supports changing the axes orientation from the default of
diff --git a/src/sensors/qsensor.h b/src/sensors/qsensor.h
index 2314fb9..8512d4c 100644
--- a/src/sensors/qsensor.h
+++ b/src/sensors/qsensor.h
@@ -107,6 +107,7 @@ public:
AccelerationMode,
SkipDuplicates,
AxesOrientation,
+ PressureSensorTemperature,
Reserved = 257 // Make sure at least 2 bytes are used for the enum to avoid breaking BC later
};
diff --git a/tests/auto/qsensor/test_backends.h b/tests/auto/qsensor/test_backends.h
index b76d412..674abf8 100644
--- a/tests/auto/qsensor/test_backends.h
+++ b/tests/auto/qsensor/test_backends.h
@@ -135,6 +135,7 @@ PREPARE_SENSORINTERFACE(QOrientationSensor, QOrientationReading, QOrientationFil
})
PREPARE_SENSORINTERFACE(QPressureSensor, QPressureReading, QPressureFilter, {
reading->setPressure(1.0);
+ reading->setTemperature(1.0);
})
PREPARE_SENSORINTERFACE(QProximitySensor, QProximityReading, QProximityFilter, {
reading->setClose(true);
diff --git a/tests/auto/qsensor/tst_qsensor.cpp b/tests/auto/qsensor/tst_qsensor.cpp
index a410f71..ce5f8e3 100644
--- a/tests/auto/qsensor/tst_qsensor.cpp
+++ b/tests/auto/qsensor/tst_qsensor.cpp
@@ -891,6 +891,7 @@ private slots:
TEST_SENSORINTERFACE(QPressureSensor, QPressureReading, {
QCOMPARE(reading->pressure(), 1.0);
+ QCOMPARE(reading->temperature(), 1.0);
})
TEST_SENSORINTERFACE(QProximitySensor, QProximityReading, {