From e49607aa13a1cdc0409cbc2cab0072b3a4e92fc5 Mon Sep 17 00:00:00 2001 From: nymea Date: Thu, 8 Aug 2019 17:51:15 +0200 Subject: [PATCH] made device setup async --- senic/devicepluginsenic.cpp | 13 ++++++++++++- senic/devicepluginsenic.h | 1 + senic/nuimo.cpp | 2 +- senic/nuimo.h | 1 + 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/senic/devicepluginsenic.cpp b/senic/devicepluginsenic.cpp index 8ab1e4b9..233a5e50 100644 --- a/senic/devicepluginsenic.cpp +++ b/senic/devicepluginsenic.cpp @@ -74,6 +74,7 @@ Device::DeviceSetupStatus DevicePluginSenic::setupDevice(Device *device) Nuimo *nuimo = new Nuimo(bluetoothDevice, this); nuimo->setLongPressTime(configValue(senicPluginLongPressTimeParamTypeId).toInt()); + connect(nuimo, &Nuimo::deviceInitializationFinished, this, &DevicePluginSenic::onDeviceInitializationFinished); connect(nuimo, &Nuimo::buttonPressed, this, &DevicePluginSenic::onButtonPressed); connect(nuimo, &Nuimo::buttonLongPressed, this, &DevicePluginSenic::onButtonLongPressed); connect(nuimo, &Nuimo::swipeDetected, this, &DevicePluginSenic::onSwipeDetected); @@ -85,7 +86,7 @@ Device::DeviceSetupStatus DevicePluginSenic::setupDevice(Device *device) m_nuimos.insert(nuimo, device); nuimo->bluetoothDevice()->connectDevice(); - return Device::DeviceSetupStatusSuccess; + return Device::DeviceSetupStatusAsync; } @@ -194,6 +195,16 @@ void DevicePluginSenic::onBluetoothDiscoveryFinished() emit devicesDiscovered(nuimoDeviceClassId, deviceDescriptors); } +void DevicePluginSenic::onDeviceInitializationFinished() +{ + Nuimo *nuimo = static_cast(sender()); + Device *device = m_nuimos.value(nuimo); + if (!device->setupComplete()) { + emit deviceSetupFinished(device, Device::DeviceSetupStatusSuccess); + } + +} + void DevicePluginSenic::onConnectedChanged(bool connected) { Nuimo *nuimo = static_cast(sender()); diff --git a/senic/devicepluginsenic.h b/senic/devicepluginsenic.h index 5890f636..f4d6feb0 100644 --- a/senic/devicepluginsenic.h +++ b/senic/devicepluginsenic.h @@ -56,6 +56,7 @@ private slots: void onReconnectTimeout(); void onBluetoothDiscoveryFinished(); + void onDeviceInitializationFinished(); void onConnectedChanged(bool connected); void onBatteryValueChanged(const uint &percentage); void onButtonPressed(); diff --git a/senic/nuimo.cpp b/senic/nuimo.cpp index 818e2d34..9105e918 100644 --- a/senic/nuimo.cpp +++ b/senic/nuimo.cpp @@ -402,7 +402,7 @@ void Nuimo::onServiceDiscoveryFinished() m_ledMatrixService->discoverDetails(); } } - + emit deviceInitializationFinished(); } void Nuimo::onDeviceInfoServiceStateChanged(const QLowEnergyService::ServiceState &state) diff --git a/senic/nuimo.h b/senic/nuimo.h index e6b90c3d..b863e6ac 100644 --- a/senic/nuimo.h +++ b/senic/nuimo.h @@ -95,6 +95,7 @@ signals: void swipeDetected(const SwipeDirection &direction); void rotationValueChanged(const uint &value); void deviceInformationChanged(const QString &firmwareRevision, const QString &hardwareRevision, const QString &softwareRevision); + void deviceInitializationFinished(); private slots: void onConnectedChanged(const bool &connected);