From d326ae1abfbe405084bd2a55c11fb51777ee00e2 Mon Sep 17 00:00:00 2001 From: Gregg Date: Mon, 9 May 2022 21:27:18 -0500 Subject: [PATCH] Added logic to delete PushButtons when Service is deleted This completes all code for the ~SpanService() destructor. To do: create tutorial example demonstrating a Dynamic Bridge --- src/HomeSpan.cpp | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/HomeSpan.cpp b/src/HomeSpan.cpp index 5a181d3..c0a1281 100644 --- a/src/HomeSpan.cpp +++ b/src/HomeSpan.cpp @@ -1588,12 +1588,22 @@ SpanService::~SpanService(){ accessory->Services.erase(svc); for(svc=homeSpan.Loops.begin(); svc!=homeSpan.Loops.end() && (*svc)!=this; svc++); // search for entry in Loop vector... - if(svc!=homeSpan.Loops.end()){ // ...if it exists, erase it homeSpan.Loops.erase(svc); LOG1("Deleted Loop Entry\n"); } - + + auto pb=homeSpan.PushButtons.begin(); // loop through PushButton vector and delete ALL PushButtons associated with this Service + while(pb!=homeSpan.PushButtons.end()){ + if((*pb)->service==this){ + pb=homeSpan.PushButtons.erase(pb); + LOG1("Deleted PushButton on Pin=%d\n",(*pb)->pin); + } + else { + pb++; + } + } + LOG1("Deleted Service AID=%d IID=%d\n",accessory->aid,iid); }