diff --git a/onewire/integrationpluginonewire.cpp b/onewire/integrationpluginonewire.cpp index 03433fd4..38d4298f 100644 --- a/onewire/integrationpluginonewire.cpp +++ b/onewire/integrationpluginonewire.cpp @@ -59,15 +59,16 @@ void IntegrationPluginOneWire::discoverThings(ThingDiscoveryInfo *info) //devices cannot be discovered since auto mode is enabled return info->finish(Thing::ThingErrorNoError); } else { + 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); - }); return; } @@ -370,9 +371,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; }