From 9ca63882af49fe4bc91a9f84a72b72beefe0a0e7 Mon Sep 17 00:00:00 2001 From: biver Date: Fri, 25 Feb 2022 14:03:30 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9C=D0=B5=D0=BD=D1=8F=D0=B5=D0=BC=20=D1=82?= =?UTF-8?q?=D0=B8=D0=BF=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC=D0=B5=D0=BD=D0=BD?= =?UTF-8?q?=D0=BE=D0=B9=20=D1=81=20=D1=8D=D0=BB=D0=B5=D0=BC=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=D0=BC=D0=B8=20=D0=BD=D0=B0=20list=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D1=83=D1=81=D0=BA=D0=BE=D1=80=D0=B5=D0=BD=D0=B8=D1=8F?= =?UTF-8?q?=20=D0=BE=D0=BF=D0=B5=D1=80=D0=B0=D1=86=D0=B8=D0=B9=20=D1=83?= =?UTF-8?q?=D0=B4=D0=B0=D0=BB=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=8D=D0=B4=D0=B5?= =?UTF-8?q?=D0=BC=D0=B5=D0=BD=D1=82=D0=BE=D0=B2=20=D1=81=D0=BF=D1=81=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/ESPConfiguration.h | 2 +- include/Global.h | 1 + src/ESPConfiguration.cpp | 6 +++--- src/Main.cpp | 6 ++++-- src/classes/IoTItem.cpp | 4 ++-- 5 files changed, 11 insertions(+), 8 deletions(-) diff --git a/include/ESPConfiguration.h b/include/ESPConfiguration.h index d8eab7f5..1e185219 100644 --- a/include/ESPConfiguration.h +++ b/include/ESPConfiguration.h @@ -2,7 +2,7 @@ #include "Global.h" #include "classes/IoTItem.h" -extern std::vector IoTItems; // вектор ссылок базового класса IoTItem - список всех запущенных сенсоров +extern std::list IoTItems; // вектор ссылок базового класса IoTItem - список всех запущенных сенсоров extern void configure(String path); void clearConfigure(); diff --git a/include/Global.h b/include/Global.h index b919cdec..c1bf7a9d 100644 --- a/include/Global.h +++ b/include/Global.h @@ -8,6 +8,7 @@ #include #include #include +#include #ifdef ESP32 #include "WiFi.h" diff --git a/src/ESPConfiguration.cpp b/src/ESPConfiguration.cpp index 16279a8b..de80d564 100644 --- a/src/ESPConfiguration.cpp +++ b/src/ESPConfiguration.cpp @@ -3,7 +3,7 @@ extern IoTGpio IoTgpio; -std::vector IoTItems; +std::list IoTItems; void* getAPI(String subtype, String params); void configure(String path) { @@ -38,8 +38,8 @@ void configure(String path) { void clearConfigure() { Serial.printf("Start clearing config\n"); - for (unsigned int i = 0; i < IoTItems.size(); i++) { - if (IoTItems[i]) delete IoTItems[i]; + for (std::list::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) { + if (*it) delete *it; } IoTItems.clear(); } \ No newline at end of file diff --git a/src/Main.cpp b/src/Main.cpp index 2292bd61..92cba7c8 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -94,8 +94,10 @@ void loop() { //обновление mqtt mqttLoop(); - for (unsigned int i = 0; i < IoTItems.size(); i++) { - IoTItems[i]->loop(); + // передаем управление каждому элементу конфигурации для выполнения своих функций + for (std::list::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) { + (*it)->loop(); + //if ((*it)->iAmDead) delete *it; } handleOrder(); diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index 017978f9..21cae993 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -86,8 +86,8 @@ void IoTItem::doByInterval() {} IoTValue IoTItem::execute(String command, std::vector& param) { return {}; } IoTItem* findIoTItem(String name) { // поиск элемента модуля в существующей конфигурации - for (unsigned int i = 0; i < IoTItems.size(); i++) { - if (IoTItems[i]->getID() == name) return IoTItems[i]; + for (std::list::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) { + if ((*it)->getID() == name) return *it; } return nullptr;