diff options
author | Kari Hautamäki <kari.hautamaki@qt.io> | 2017-02-06 17:39:54 +0200 |
---|---|---|
committer | Titta Heikkala <titta.heikkala@qt.io> | 2017-02-08 10:16:14 +0000 |
commit | eaec031cc108dd37d9506eb1eda45c42b639c982 (patch) | |
tree | 98acdcc192b9a4ac54cf38956ac78c7810443896 /tradeshow/iot-sensortag/sensortagdataprovider.cpp | |
parent | 0ad8e201e428f237a5e25d63a70b28041653a3b8 (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.cpp | 33 |
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(); + } +} |