From 37081a51bddc4dea734f610d5f09d2404a70b29b Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 14 Apr 2020 11:17:58 +0200 Subject: [PATCH 1/3] OneWire: Fix manual discovering of connected devices --- onewire/integrationpluginonewire.cpp | 14 +++++++------- onewire/integrationpluginonewire.h | 2 +- onewire/onewire.cpp | 4 +--- 3 files changed, 9 insertions(+), 11 deletions(-) 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; } From 5768ebca912ea08c5287455d0c7cec876d0ea862 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 14 Apr 2020 11:40:16 +0200 Subject: [PATCH 2/3] Improve it a bit more --- onewire/integrationpluginonewire.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/onewire/integrationpluginonewire.cpp b/onewire/integrationpluginonewire.cpp index 38d4298f..aa355b1d 100644 --- a/onewire/integrationpluginonewire.cpp +++ b/onewire/integrationpluginonewire.cpp @@ -57,18 +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 { - m_runningDiscoveries.insert(parentDevice, info); - connect(info, &ThingDiscoveryInfo::destroyed, this, [this, parentDevice](){ - m_runningDiscoveries.remove(parentDevice); - }); - - 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(); } + 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; } From fd113373ecef465ee8dc698abcc660fad3118b3d Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Tue, 14 Apr 2020 11:41:45 +0200 Subject: [PATCH 3/3] Update translation --- .../2c697fb7-0645-466d-9cb9-aa1922c85bee-en_US.ts | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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