diff --git a/onewire/integrationpluginonewire.cpp b/onewire/integrationpluginonewire.cpp index 03433fd4..aa355b1d 100644 --- a/onewire/integrationpluginonewire.cpp +++ b/onewire/integrationpluginonewire.cpp @@ -57,17 +57,20 @@ void IntegrationPluginOneWire::discoverThings(ThingDiscoveryInfo *info) foreach(Thing *parentDevice, myThings().filterByThingClassId(oneWireInterfaceThingClassId)) { if (parentDevice->stateValue(oneWireInterfaceAutoAddStateTypeId).toBool()) { //devices cannot be discovered since auto mode is enabled - return info->finish(Thing::ThingErrorNoError); - } else { - if (m_oneWireInterface) - m_oneWireInterface->discoverDevices(); + continue; } + m_runningDiscoveries.insert(parentDevice, info); + connect(info, &ThingDiscoveryInfo::destroyed, this, [this, parentDevice](){ + m_runningDiscoveries.remove(parentDevice); + }); + + if (m_oneWireInterface) + m_oneWireInterface->discoverDevices(); } - m_runningDiscoveries.append(info); - connect(info, &ThingDiscoveryInfo::destroyed, this, [this, info](){ - m_runningDiscoveries.removeAll(info); - }); + if (m_runningDiscoveries.isEmpty()) { + info->finish(Thing::ThingErrorNoError, QT_TR_NOOP("All configured one wire interfaces are set up to automatically add new devices.")); + } return; } @@ -370,9 +373,8 @@ void IntegrationPluginOneWire::onOneWireDevicesDiscovered(QListaddThingDescriptors(descriptors); info->finish(Thing::ThingErrorNoError); } diff --git a/onewire/integrationpluginonewire.h b/onewire/integrationpluginonewire.h index 207660c3..ebb50be3 100644 --- a/onewire/integrationpluginonewire.h +++ b/onewire/integrationpluginonewire.h @@ -56,7 +56,7 @@ private: PluginTimer *m_pluginTimer = nullptr; OneWire *m_oneWireInterface = nullptr; - QList m_runningDiscoveries; + QHash m_runningDiscoveries; private slots: void onPluginTimer(); diff --git a/onewire/onewire.cpp b/onewire/onewire.cpp index 84c32183..c15a1342 100644 --- a/onewire/onewire.cpp +++ b/onewire/onewire.cpp @@ -101,9 +101,7 @@ bool OneWire::discoverDevices() oneWireDevices.append(thing); } } - if(!oneWireDevices.isEmpty()) { - emit devicesDiscovered(oneWireDevices); - } + emit devicesDiscovered(oneWireDevices); return true; } diff --git a/onewire/translations/2c697fb7-0645-466d-9cb9-aa1922c85bee-en_US.ts b/onewire/translations/2c697fb7-0645-466d-9cb9-aa1922c85bee-en_US.ts index 2164ac3e..47fa3071 100644 --- a/onewire/translations/2c697fb7-0645-466d-9cb9-aa1922c85bee-en_US.ts +++ b/onewire/translations/2c697fb7-0645-466d-9cb9-aa1922c85bee-en_US.ts @@ -10,13 +10,18 @@ - + + All configured one wire interfaces are set up to automatically add new devices. + + + + There can only be one one wire interface per system. Error setting up thing - + Error initializing one wire interface. Error setting up thing