From 8f7bb40c889ac1f74cc0e11660011cf1ee2d7b15 Mon Sep 17 00:00:00 2001 From: Titta Heikkala Date: Thu, 2 Mar 2017 09:10:49 +0200 Subject: 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 --- tradeshow/iot-sensortag/bluetoothdataprovider.cpp | 5 +---- tradeshow/iot-sensortag/bluetoothdataprovider.h | 1 - tradeshow/iot-sensortag/bluetoothdevice.cpp | 25 ++++++++++++++++++----- tradeshow/iot-sensortag/bluetoothdevice.h | 1 + 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; -- cgit v1.2.3