made device setup async

master
nymea 2019-08-08 17:51:15 +02:00
parent 82a8f9effb
commit e49607aa13
4 changed files with 15 additions and 2 deletions

View File

@ -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<Nuimo *>(sender());
Device *device = m_nuimos.value(nuimo);
if (!device->setupComplete()) {
emit deviceSetupFinished(device, Device::DeviceSetupStatusSuccess);
}
}
void DevicePluginSenic::onConnectedChanged(bool connected)
{
Nuimo *nuimo = static_cast<Nuimo *>(sender());

View File

@ -56,6 +56,7 @@ private slots:
void onReconnectTimeout();
void onBluetoothDiscoveryFinished();
void onDeviceInitializationFinished();
void onConnectedChanged(bool connected);
void onBatteryValueChanged(const uint &percentage);
void onButtonPressed();

View File

@ -402,7 +402,7 @@ void Nuimo::onServiceDiscoveryFinished()
m_ledMatrixService->discoverDetails();
}
}
emit deviceInitializationFinished();
}
void Nuimo::onDeviceInfoServiceStateChanged(const QLowEnergyService::ServiceState &state)

View File

@ -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);