summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTitta Heikkala <titta.heikkala@qt.io>2017-03-02 09:10:49 +0200
committerMaurice Kalinowski <maurice.kalinowski@qt.io>2017-03-02 07:46:50 +0000
commit8f7bb40c889ac1f74cc0e11660011cf1ee2d7b15 (patch)
tree9d5ef2e6fd3145ef18a0e60e24cd879d786a34e5
parent6c4c77ae60284c2ca76fcd6a3af6adc66e1f17ad (diff)
iot-sensortag: Reduce waiting time for service scan
Unnecessary 1s delay to start service scan removed. If all service details have been discovered there's no need to start the 5s service details timer. Change-Id: I6c8c89455fb3cfdbc1a28198234e95a4ed0b7e8b Reviewed-by: Maurice Kalinowski <maurice.kalinowski@qt.io>
-rw-r--r--tradeshow/iot-sensortag/bluetoothdataprovider.cpp5
-rw-r--r--tradeshow/iot-sensortag/bluetoothdataprovider.h1
-rw-r--r--tradeshow/iot-sensortag/bluetoothdevice.cpp25
-rw-r--r--tradeshow/iot-sensortag/bluetoothdevice.h1
4 files changed, 22 insertions, 10 deletions
diff --git a/tradeshow/iot-sensortag/bluetoothdataprovider.cpp b/tradeshow/iot-sensortag/bluetoothdataprovider.cpp
index 0987d0d..06e9fd5 100644
--- a/tradeshow/iot-sensortag/bluetoothdataprovider.cpp
+++ b/tradeshow/iot-sensortag/bluetoothdataprovider.cpp
@@ -93,10 +93,7 @@ bool BluetoothDataProvider::startDataFetching()
this, &BluetoothDataProvider::lightIntensityReceived);
connect(m_btDevice, &BluetoothDevice::motionChanged,
this, &BluetoothDataProvider::motionReceived);
- timer.setInterval(1000);
- timer.setSingleShot(true);
- connect(&timer, &QTimer::timeout, this, &BluetoothDataProvider::startServiceScan);
- timer.start();
+ startServiceScan();
}
return true;
}
diff --git a/tradeshow/iot-sensortag/bluetoothdataprovider.h b/tradeshow/iot-sensortag/bluetoothdataprovider.h
index 691b94c..5f39b4f 100644
--- a/tradeshow/iot-sensortag/bluetoothdataprovider.h
+++ b/tradeshow/iot-sensortag/bluetoothdataprovider.h
@@ -90,7 +90,6 @@ private:
void updateState();
float countRotationDegrees(double degreesPerSecond, quint64 milliseconds);
BluetoothDevice *m_btDevice;
- QTimer timer;
int m_smaSamples;
int m_zeroAltitudeSamples;
float gyroscopeX_calibration;
diff --git a/tradeshow/iot-sensortag/bluetoothdevice.cpp b/tradeshow/iot-sensortag/bluetoothdevice.cpp
index 667e7a2..f2d3881 100644
--- a/tradeshow/iot-sensortag/bluetoothdevice.cpp
+++ b/tradeshow/iot-sensortag/bluetoothdevice.cpp
@@ -267,7 +267,7 @@ void BluetoothDevice::temperatureDetailsDiscovered(QLowEnergyService::ServiceSta
}
m_temperatureMeasurementStarted = true;
- m_serviceDetailsTimer->start();
+ updateServiceDetails();
}
}
@@ -306,7 +306,7 @@ void BluetoothDevice::barometerDetailsDiscovered(QLowEnergyService::ServiceState
}
m_barometerMeasurementStarted = true;
- m_serviceDetailsTimer->start();
+ updateServiceDetails();
}
}
@@ -346,7 +346,7 @@ void BluetoothDevice::humidityDetailsDiscovered(QLowEnergyService::ServiceState
}
m_humidityMeasurementStarted = true;
- m_serviceDetailsTimer->start();
+ updateServiceDetails();
}
}
@@ -386,7 +386,7 @@ void BluetoothDevice::lightIntensityDetailsDiscovered(QLowEnergyService::Service
}
m_lightIntensityMeasurementStarted = true;
- m_serviceDetailsTimer->start();
+ updateServiceDetails();
}
}
@@ -428,7 +428,7 @@ void BluetoothDevice::motionDetailsDiscovered(QLowEnergyService::ServiceState ne
m_motionService->writeCharacteristic(characteristic, QByteArray::fromHex(SENSORTAG_RAPID_TIMER_TIMEOUT_STR), QLowEnergyService::WriteWithResponse);
}
m_motionMeasurementStarted = true;
- m_serviceDetailsTimer->start();
+ updateServiceDetails();
}
}
@@ -486,6 +486,21 @@ bool BluetoothDevice::isDeviceReady() const
return false;
}
+void BluetoothDevice::updateServiceDetails()
+{
+ if (m_temperatureMeasurementStarted
+ && m_barometerMeasurementStarted
+ && m_humidityMeasurementStarted
+ && m_lightIntensityMeasurementStarted
+ && m_motionMeasurementStarted) {
+ qCDebug(boot2QtDemos) << "Service details timer stop. All service details found";
+ m_serviceDetailsTimer->stop();
+ setState(Connected);
+ } else {
+ m_serviceDetailsTimer->start();
+ }
+}
+
void BluetoothDevice::irTemperatureReceived(const QByteArray &value)
{
const unsigned int rawObjectTemperature = (((quint8)value.at(3)) << 8) + ((quint8)value.at(2));
diff --git a/tradeshow/iot-sensortag/bluetoothdevice.h b/tradeshow/iot-sensortag/bluetoothdevice.h
index 6a75a67..ed74866 100644
--- a/tradeshow/iot-sensortag/bluetoothdevice.h
+++ b/tradeshow/iot-sensortag/bluetoothdevice.h
@@ -167,6 +167,7 @@ private:
void motionReceived(const QByteArray &value);
double convertIrTemperatureAPIReadingToCelsius(quint16 rawReading);
bool isDeviceReady() const;
+ void updateServiceDetails();
QLowEnergyController *m_controller;
QLowEnergyService* m_irTemperatureService;