summaryrefslogtreecommitdiffstats
path: root/tradeshow/iot-sensortag/sensortagdataprovider.cpp
diff options
context:
space:
mode:
authorKari Hautamäki <kari.hautamaki@qt.io>2017-02-06 17:39:54 +0200
committerTitta Heikkala <titta.heikkala@qt.io>2017-02-08 10:16:14 +0000
commiteaec031cc108dd37d9506eb1eda45c42b639c982 (patch)
tree98acdcc192b9a4ac54cf38956ac78c7810443896 /tradeshow/iot-sensortag/sensortagdataprovider.cpp
parent0ad8e201e428f237a5e25d63a70b28041653a3b8 (diff)
iot-sensortag: Visual style updated for most of the charts
- Updated appearance and graphics of ambient and object temperature, air pressure, humidity and light charts. - Removed AirPressure chart - Added Altitude chart - Added altitude information to SensorTagData and derived classes Change-Id: Ief8eb9dd4f87f967b037eed3e9a4dd12c3c6efc9 Reviewed-by: Titta Heikkala <titta.heikkala@qt.io>
Diffstat (limited to 'tradeshow/iot-sensortag/sensortagdataprovider.cpp')
-rw-r--r--tradeshow/iot-sensortag/sensortagdataprovider.cpp33
1 files changed, 32 insertions, 1 deletions
diff --git a/tradeshow/iot-sensortag/sensortagdataprovider.cpp b/tradeshow/iot-sensortag/sensortagdataprovider.cpp
index 678ecb8..e6b3b96 100644
--- a/tradeshow/iot-sensortag/sensortagdataprovider.cpp
+++ b/tradeshow/iot-sensortag/sensortagdataprovider.cpp
@@ -53,10 +53,24 @@
#include <QLoggingCategory>
Q_DECLARE_LOGGING_CATEGORY(boot2QtDemos)
+
#define DEFAULT_REFRESH_INTERVAL_MS 1000
+/*
+ Constants used in hypsometric formula
+
+ h = (AIR_PRESSURE_P0 / p) ^ PRESSURE_EXPONENT - 1) * (T + ZERO_TEMP)
+ ---------------------------------------------------------------
+ DIVIDER
+*/
+#define AIR_PRESSURE_P0 1013.25 // in hPa
+#define ZERO_TEMP 273.15 // in Kelvin
+#define PRESSURE_EXPONENT (1 / 5.257)
+#define DIVIDER 0.0065
+
SensorTagDataProvider::SensorTagDataProvider(QObject *parent)
: QObject(parent)
+ , pressureAtZeroAltitude(AIR_PRESSURE_P0)
{
}
@@ -84,7 +98,8 @@ SensorTagDataProvider::SensorTagDataProvider(QString id, QObject* parent)
rotation_y(0),
rotation_z(0),
intervalRotation(DEFAULT_REFRESH_INTERVAL_MS),
- m_tagType(AmbientTemperature | ObjectTemperature | Humidity | AirPressure | Light | Magnetometer | Rotation | Accelometer),
+ altitude(0),
+ m_tagType(AmbientTemperature | ObjectTemperature | Humidity | AirPressure | Light | Magnetometer | Rotation | Accelometer | Altitude),
m_id(id),
m_state(Disconnected)
{
@@ -209,6 +224,11 @@ int SensorTagDataProvider::getRotationUpdateInterval()
return intervalRotation;
}
+float SensorTagDataProvider::getAltitude()
+{
+ return altitude;
+}
+
int SensorTagDataProvider::tagType() const
{
return m_tagType;
@@ -241,3 +261,14 @@ void SensorTagDataProvider::recalibrate()
{
reset();
}
+
+void SensorTagDataProvider::calculateZeroAltitude()
+{
+ float newAltitude = (pow(pressureAtZeroAltitude
+ / barometerHPa, PRESSURE_EXPONENT) - 1)
+ * (barometerCelsiusTemperature + ZERO_TEMP) / DIVIDER;
+ if (newAltitude != altitude) {
+ altitude = newAltitude;
+ emit altitudeChanged();
+ }
+}