summaryrefslogtreecommitdiffstats
path: root/tradeshow/iot-sensortag/sensortagdataprovider.cpp
diff options
context:
space:
mode:
authorOtto Ryynänen <otto.ryynanen@qt.io>2016-12-02 13:53:22 +0200
committerOtto Ryynänen <otto.ryynanen@qt.io>2017-01-30 13:49:33 +0000
commit31bf214d734c6d7ac8773eb97911219825579ae5 (patch)
tree255b652f17560f1b16c6d2b98961097b6a4f7457 /tradeshow/iot-sensortag/sensortagdataprovider.cpp
parent99fd61e44216bc76f211f1c3bca9172172eef340 (diff)
Added IoT SensorTag demo to tradeshow
iot-sensortag folder added. This is project originally from consultacy repo, moved to here. It's a cross-platform app that shown multiple data values from TI CC2650 SensorTag. Change-Id: I648464ed9a8253e5069bc6fd59e8b92128b60adc Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
Diffstat (limited to 'tradeshow/iot-sensortag/sensortagdataprovider.cpp')
-rw-r--r--tradeshow/iot-sensortag/sensortagdataprovider.cpp251
1 files changed, 251 insertions, 0 deletions
diff --git a/tradeshow/iot-sensortag/sensortagdataprovider.cpp b/tradeshow/iot-sensortag/sensortagdataprovider.cpp
new file mode 100644
index 0000000..e278f94
--- /dev/null
+++ b/tradeshow/iot-sensortag/sensortagdataprovider.cpp
@@ -0,0 +1,251 @@
+/****************************************************************************
+**
+** Copyright (C) 2017 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of the examples of Qt for Device Creation.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** 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 The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** BSD License Usage
+** Alternatively, you may use this file under the terms of the BSD license
+** as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+** * Redistributions of source code must retain the above copyright
+** notice, this list of conditions and the following disclaimer.
+** * Redistributions in binary form must reproduce the above copyright
+** notice, this list of conditions and the following disclaimer in
+** the documentation and/or other materials provided with the
+** distribution.
+** * Neither the name of The Qt Company Ltd nor the names of its
+** contributors may be used to endorse or promote products derived
+** from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+#include "sensortagdataprovider.h"
+
+#include <QtCore/QtMath>
+#include <QLoggingCategory>
+
+Q_DECLARE_LOGGING_CATEGORY(boot2QtDemos)
+
+SensorTagDataProvider::SensorTagDataProvider(QObject *parent)
+ : QObject(parent)
+{
+
+}
+
+SensorTagDataProvider::SensorTagDataProvider(QString id, QObject* parent)
+ : QObject(parent),
+ humidity(0),
+ irTemperature(0),
+ lightIntensityLux(0),
+ barometerCelsiusTemperature(0),
+ barometerHPa(0),
+ gyroscopeX_degPerSec(0),
+ gyroscopeY_degPerSec(0),
+ gyroscopeZ_degPerSec(0),
+ accelometer_mG_xAxis(0),
+ accelometer_mG_yAxis(0),
+ accelometer_mG_zAxis(0),
+ /* Object is not "walking in the air" so have one axis at 1G */
+ magnetometerMicroT_xAxis(-1000),
+ magnetometerMicroT_yAxis(0),
+ magnetometerMicroT_zAxis(0),
+ rotation_x(0),
+ rotation_y(0),
+ rotation_z(0),
+ m_tagType(AmbientTemperature | ObjectTemperature | Humidity | AirPressure | Light | Magnetometer | Rotation),
+ m_id(id),
+ m_state(Disconnected)
+{
+}
+
+QString SensorTagDataProvider::getRelativeHumidityString()
+{
+ return QString::number(humidity) + QLatin1String("%");
+}
+
+double SensorTagDataProvider::getRelativeHumidity()
+{
+ return humidity;
+}
+
+QString SensorTagDataProvider::getInfraredCelsiusTemperatureString()
+{
+ return QString::number(irTemperature) + QString("\u00B0C");
+}
+
+double SensorTagDataProvider::getInfraredCelsiusTemperature()
+{
+ return irTemperature;
+}
+
+QString SensorTagDataProvider::getLightIntensityLuxString()
+{
+ return QString::number(lightIntensityLux) + QLatin1String(" Lux");
+}
+
+double SensorTagDataProvider::getLightIntensityLux()
+{
+ return lightIntensityLux;
+}
+
+double SensorTagDataProvider::getBarometerCelsiusTemperature()
+{
+ return barometerCelsiusTemperature;
+}
+
+QString SensorTagDataProvider::getBarometerCelsiusTemperatureString()
+{
+ return QString::number(barometerCelsiusTemperature) + QString("\u00B0C");
+}
+
+double SensorTagDataProvider::getBarometerTemperatureAverage()
+{
+ return barometerTemperatureAverage;
+}
+
+QString SensorTagDataProvider::getBarometer_hPaString()
+{
+ return QString::number(barometerHPa) + QLatin1String(" hPa");
+}
+double SensorTagDataProvider::getBarometer_hPa()
+{
+ return barometerHPa;
+}
+
+float SensorTagDataProvider::getGyroscopeX_degPerSec()
+{
+ return gyroscopeX_degPerSec;
+}
+
+float SensorTagDataProvider::getGyroscopeY_degPerSec()
+{
+ return gyroscopeY_degPerSec;
+}
+
+float SensorTagDataProvider::getGyroscopeZ_degPerSec()
+{
+ return gyroscopeZ_degPerSec;
+}
+
+float SensorTagDataProvider::getAccelometer_mG_xAxis()
+{
+ return accelometer_mG_xAxis;
+}
+
+float SensorTagDataProvider::getAccelometer_mG_yAxis()
+{
+ return accelometer_mG_yAxis;
+}
+
+float SensorTagDataProvider::getAccelometer_mG_zAxis()
+{
+ return accelometer_mG_zAxis;
+}
+
+float SensorTagDataProvider::getMagnetometerMicroT_xAxis()
+{
+ return magnetometerMicroT_xAxis;
+}
+
+float SensorTagDataProvider::getMagnetometerMicroT_yAxis()
+{
+ return magnetometerMicroT_yAxis;
+}
+
+float SensorTagDataProvider::getMagnetometerMicroT_zAxis()
+{
+ return magnetometerMicroT_zAxis;
+}
+
+QColor SensorTagDataProvider::getTemperatureColor()
+{
+ // Get average and limit it between 15 and 38 degrees celsius.
+ double averageTemperature = (irTemperature + barometerCelsiusTemperature) / 2;
+ averageTemperature = std::min(averageTemperature, double(38));
+ averageTemperature = std::max(averageTemperature, double(15));
+ double relativeTemperature = ((averageTemperature-15)*255)/23;
+ int red;
+ int green = 128;
+ int blue;
+ if (relativeTemperature < 128) {
+ blue = 255;
+ red = relativeTemperature*2;
+ } else {
+ red = 255;
+ blue = 255 - ((relativeTemperature-128)*2);
+ }
+ return QColor(red, green, blue);
+}
+
+QColor SensorTagDataProvider::getLightIntensityColor()
+{
+ double relativeLightIntensityLux = std::min(lightIntensityLux, double(1000));
+ relativeLightIntensityLux = 10+((relativeLightIntensityLux*40) / 1000);
+ return QColor(relativeLightIntensityLux, relativeLightIntensityLux, relativeLightIntensityLux);
+}
+
+float SensorTagDataProvider::getRotationX()
+{
+ return rotation_x;
+}
+
+float SensorTagDataProvider::getRotationY()
+{
+ return rotation_y;
+}
+
+float SensorTagDataProvider::getRotationZ()
+{
+ return rotation_z;
+}
+
+int SensorTagDataProvider::tagType() const
+{
+ return m_tagType;
+}
+
+QString SensorTagDataProvider::id() const
+{
+ return m_id;
+}
+
+SensorTagDataProvider::ProviderState SensorTagDataProvider::state() const
+{
+ return m_state;
+}
+
+void SensorTagDataProvider::setState(SensorTagDataProvider::ProviderState state)
+{
+ if (state != m_state) {
+ m_state = state;
+ emit stateChanged();
+ }
+}