From aac0603f0e49c99d146e00244b67d986eef52cdf Mon Sep 17 00:00:00 2001 From: Bernd Weimer Date: Tue, 2 Apr 2013 18:53:03 +0200 Subject: 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 Reviewed-by: Lorn Potter --- src/imports/sensors/qmlpressuresensor.cpp | 20 ++++++++++++++ src/imports/sensors/qmlpressuresensor.h | 4 +++ src/imports/sensors/sensors.cpp | 43 +++++++++++++++++++++++++++++++ 3 files changed, 67 insertions(+) (limited to 'src/imports') diff --git a/src/imports/sensors/qmlpressuresensor.cpp b/src/imports/sensors/qmlpressuresensor.cpp index a21f7c0d..8f32b4e0 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 627915a6..c8c19fd2 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 77ad754a..abcb3812 100644 --- a/src/imports/sensors/sensors.cpp +++ b/src/imports/sensors/sensors.cpp @@ -174,6 +174,49 @@ public: qmlRegisterUncreatableType(package, major, minor, "TiltReading", QLatin1String("Cannot create TiltReading")); qmlRegisterType (package, major, minor, "SensorGesture"); + + // Register the 5.2 interfaces + major = 5; + minor = 2; + qmlRegisterSingletonType (package, major, minor, "QmlSensors", global_object_50); + qmlRegisterUncreatableType(package, major, minor, "Range", QLatin1String("Cannot create Range")); + qmlRegisterUncreatableType(package, major, minor, "OutputRange", QLatin1String("Cannot create OutputRange")); + qmlRegisterUncreatableType(package, major, minor, "Sensor", QLatin1String("Cannot create Sensor")); + qmlRegisterUncreatableType(package, major, minor, "SensorReading", QLatin1String("Cannot create SensorReading")); + qmlRegisterType (package, major, minor, "Accelerometer"); + qmlRegisterUncreatableType(package, major, minor, "AccelerometerReading", QLatin1String("Cannot create AccelerometerReading")); + qmlRegisterType (package, major, minor, "Altimeter"); + qmlRegisterUncreatableType(package, major, minor, "AltimeterReading", QLatin1String("Cannot create AltimeterReading")); + qmlRegisterType (package, major, minor, "AmbientLightSensor"); + qmlRegisterUncreatableType(package, major, minor, "AmbientLightReading", QLatin1String("Cannot create AmbientLightReading")); + qmlRegisterType (package, major, minor, "AmbientTemperatureSensor"); + qmlRegisterUncreatableType(package, major, minor, "AmbientTemperatureReading", QLatin1String("Cannot create AmbientTemperatureReading")); + qmlRegisterType (package, major, minor, "Compass"); + qmlRegisterUncreatableType(package, major, minor, "CompassReading", QLatin1String("Cannot create CompassReading")); + qmlRegisterType (package, major, minor, "Gyroscope"); + qmlRegisterUncreatableType(package, major, minor, "GyroscopeReading", QLatin1String("Cannot create GyroscopeReading")); + qmlRegisterType (package, major, minor, "HolsterSensor"); + qmlRegisterUncreatableType(package, major, minor, "HolsterReading", QLatin1String("Cannot create HolsterReading")); + qmlRegisterType (package, major, minor, "IRProximitySensor"); + qmlRegisterUncreatableType(package, major, minor, "IRProximityReading", QLatin1String("Cannot create IRProximityReading")); + qmlRegisterType (package, major, minor, "LightSensor"); + qmlRegisterUncreatableType(package, major, minor, "LightReading", QLatin1String("Cannot create LightReading")); + qmlRegisterType (package, major, minor, "Magnetometer"); + qmlRegisterUncreatableType(package, major, minor, "MagnetometerReading", QLatin1String("Cannot create MagnetometerReading")); + qmlRegisterType (package, major, minor, "OrientationSensor"); + qmlRegisterUncreatableType(package, major, minor, "OrientationReading", QLatin1String("Cannot create OrientationReading")); + qmlRegisterType (package, major, minor, "PressureSensor"); + qmlRegisterUncreatableType(package, major, minor, "PressureReading", QLatin1String("Cannot create PressureReading")); + qmlRegisterType (package, major, minor, "ProximitySensor"); + qmlRegisterUncreatableType(package, major, minor, "ProximityReading", QLatin1String("Cannot create ProximityReading")); + qmlRegisterType (package, major, minor, "RotationSensor"); + qmlRegisterUncreatableType(package, major, minor, "RotationReading", QLatin1String("Cannot create RotationReading")); + qmlRegisterType (package, major, minor, "TapSensor"); + qmlRegisterUncreatableType(package, major, minor, "TapReading", QLatin1String("Cannot create TapReading")); + qmlRegisterType (package, major, minor, "TiltSensor"); + qmlRegisterUncreatableType(package, major, minor, "TiltReading", QLatin1String("Cannot create TiltReading")); + + qmlRegisterType (package, major, minor, "SensorGesture"); } }; -- cgit v1.2.3