summaryrefslogtreecommitdiffstats
path: root/tradeshow/iot-sensortag/demodataproviderpool.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tradeshow/iot-sensortag/demodataproviderpool.cpp')
-rw-r--r--tradeshow/iot-sensortag/demodataproviderpool.cpp246
1 files changed, 236 insertions, 10 deletions
diff --git a/tradeshow/iot-sensortag/demodataproviderpool.cpp b/tradeshow/iot-sensortag/demodataproviderpool.cpp
index f31d869..9dfad93 100644
--- a/tradeshow/iot-sensortag/demodataproviderpool.cpp
+++ b/tradeshow/iot-sensortag/demodataproviderpool.cpp
@@ -50,8 +50,216 @@
#include "demodataproviderpool.h"
#include "mockdataprovider.h"
+DemoCloudProvider::DemoCloudProvider(QObject *parent)
+ : SensorTagDataProvider(parent)
+{
+}
+
+void DemoCloudProvider::setDataProviders(const QList<SensorTagDataProvider *> &dataProviders)
+{
+ m_dataProviders = dataProviders;
+}
+
+QString DemoCloudProvider::sensorType() const
+{
+ if (m_dataProviders.length())
+ return m_dataProviders.at(0)->sensorType();
+ else
+ return QString();
+}
+
+QString DemoCloudProvider::versionString() const
+{
+ if (m_dataProviders.length())
+ return m_dataProviders.at(0)->versionString();
+ else
+ return QString();
+}
+
+double DemoCloudProvider::getRelativeHumidity()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Humidity)
+ return p->getRelativeHumidity();
+ }
+ return 0;
+}
+
+double DemoCloudProvider::getInfraredAmbientTemperature()
+{
+ m_dataProviders.first();
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::AmbientTemperature)
+ return p->getInfraredAmbientTemperature();
+ }
+ return 0;
+}
+
+double DemoCloudProvider::getInfraredObjectTemperature()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::ObjectTemperature)
+ return p->getInfraredObjectTemperature();
+ }
+ return 0;
+}
+
+double DemoCloudProvider::getLightIntensityLux()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Light)
+ return p->getLightIntensityLux();
+ }
+ return 0;
+}
+
+double DemoCloudProvider::getBarometerCelsiusTemperature()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::AirPressure)
+ return p->getBarometerCelsiusTemperature();
+ }
+ return 0;
+}
+
+double DemoCloudProvider::getBarometerTemperatureAverage()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::AirPressure)
+ return p->getBarometerTemperatureAverage();
+ }
+ return 0;
+}
+
+double DemoCloudProvider::getBarometer_hPa()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::AirPressure)
+ return p->getBarometer_hPa();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getGyroscopeX_degPerSec()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Magnetometer)
+ return p->getGyroscopeX_degPerSec();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getGyroscopeY_degPerSec()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Magnetometer)
+ return p->getGyroscopeY_degPerSec();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getGyroscopeZ_degPerSec()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Magnetometer)
+ return p->getGyroscopeZ_degPerSec();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getAccelometer_xAxis()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Accelometer)
+ return p->getAccelometer_xAxis();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getAccelometer_yAxis()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Accelometer)
+ return p->getAccelometer_yAxis();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getAccelometer_zAxis()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Accelometer)
+ return p->getAccelometer_zAxis();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getMagnetometerMicroT_xAxis()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Magnetometer)
+ return p->getMagnetometerMicroT_xAxis();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getMagnetometerMicroT_yAxis()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Magnetometer)
+ return p->getMagnetometerMicroT_yAxis();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getMagnetometerMicroT_zAxis()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Magnetometer)
+ return p->getMagnetometerMicroT_zAxis();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getRotationX()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Rotation)
+ return p->getRotationX();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getRotationY()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Rotation)
+ return p->getRotationY();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getRotationZ()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Rotation)
+ return p->getRotationZ();
+ }
+ return 0;
+}
+
+float DemoCloudProvider::getAltitude()
+{
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->tagType() & SensorTagDataProvider::Altitude)
+ return p->getAltitude();
+ }
+ return 0;
+}
+
+
DemoDataProviderPool::DemoDataProviderPool(QObject *parent)
- : DataProviderPool("Demo", parent)
+ : SensorTagDataProviderPool("Demo", parent)
, m_mockData(false)
, m_cloudProvider(0)
{
@@ -77,24 +285,41 @@ void DemoDataProviderPool::startScanning()
emit providerConnected(p->id());
}
// Stop scanning as we already have a provider
- stopScanning();
+ scanFinished();
}
else {
- DataProviderPool::startScanning();
+ SensorTagDataProviderPool::startScanning();
}
}
-void DemoDataProviderPool::stopScanning()
+void DemoDataProviderPool::finishScanning()
{
- // TODO: get data for cloud update provider from
- // all available providers, not just from the first found
- if (m_dataProviders.length()) {
+ if (m_dataProviders.length() && m_mockData) {
+ // For mock data we have only one provider and
+ // it servers as the provider to the cloud, too
m_cloudProvider = m_dataProviders.at(0);
emit providerForCloudChanged();
+ } else {
+ // Fake that we have set of sensors with different capabilities
+ // by removing some of the sensor data types from each sensor tag
+ foreach (SensorTagDataProvider *p, m_dataProviders) {
+ if (p->id() == QStringLiteral("A0:E6:F8:B6:5B:86")) {
+ p->setTagType(SensorTagDataProvider::ObjectTemperature |
+ SensorTagDataProvider::Light |
+ SensorTagDataProvider::Magnetometer |
+ SensorTagDataProvider::Accelometer);
+ }
+ else if (p->id() == QStringLiteral("A0:E6:F8:B6:44:01")) {
+ p->setTagType(SensorTagDataProvider::AmbientTemperature |
+ SensorTagDataProvider::Altitude |
+ SensorTagDataProvider::Humidity |
+ SensorTagDataProvider::Rotation |
+ SensorTagDataProvider::AirPressure);
+ }
+ }
+ m_cloudProvider = new DemoCloudProvider(this);
+ static_cast<DemoCloudProvider*>(m_cloudProvider)->setDataProviders(m_dataProviders);
}
-
- emit dataProvidersChanged();
- emit scanFinished();
}
void DemoDataProviderPool::setMockDataMode(bool mode)
@@ -106,3 +331,4 @@ SensorTagDataProvider *DemoDataProviderPool::providerForCloud() const
{
return m_cloudProvider;
}
+