mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 11:59:12 +03:00
Меняем тип переменной с элементами на list для ускорения операций удаления эдементов спсика
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
#include "Global.h"
|
#include "Global.h"
|
||||||
#include "classes/IoTItem.h"
|
#include "classes/IoTItem.h"
|
||||||
|
|
||||||
extern std::vector<IoTItem*> IoTItems; // вектор ссылок базового класса IoTItem - список всех запущенных сенсоров
|
extern std::list<IoTItem*> IoTItems; // вектор ссылок базового класса IoTItem - список всех запущенных сенсоров
|
||||||
|
|
||||||
extern void configure(String path);
|
extern void configure(String path);
|
||||||
void clearConfigure();
|
void clearConfigure();
|
||||||
|
|||||||
@@ -8,6 +8,7 @@
|
|||||||
#include <TickerScheduler.h>
|
#include <TickerScheduler.h>
|
||||||
#include <PubSubClient.h>
|
#include <PubSubClient.h>
|
||||||
#include <StringCommand.h>
|
#include <StringCommand.h>
|
||||||
|
#include <list>
|
||||||
|
|
||||||
#ifdef ESP32
|
#ifdef ESP32
|
||||||
#include "WiFi.h"
|
#include "WiFi.h"
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
|
|
||||||
extern IoTGpio IoTgpio;
|
extern IoTGpio IoTgpio;
|
||||||
|
|
||||||
std::vector<IoTItem*> IoTItems;
|
std::list<IoTItem*> IoTItems;
|
||||||
void* getAPI(String subtype, String params);
|
void* getAPI(String subtype, String params);
|
||||||
|
|
||||||
void configure(String path) {
|
void configure(String path) {
|
||||||
@@ -38,8 +38,8 @@ void configure(String path) {
|
|||||||
|
|
||||||
void clearConfigure() {
|
void clearConfigure() {
|
||||||
Serial.printf("Start clearing config\n");
|
Serial.printf("Start clearing config\n");
|
||||||
for (unsigned int i = 0; i < IoTItems.size(); i++) {
|
for (std::list<IoTItem*>::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) {
|
||||||
if (IoTItems[i]) delete IoTItems[i];
|
if (*it) delete *it;
|
||||||
}
|
}
|
||||||
IoTItems.clear();
|
IoTItems.clear();
|
||||||
}
|
}
|
||||||
@@ -94,8 +94,10 @@ void loop() {
|
|||||||
//обновление mqtt
|
//обновление mqtt
|
||||||
mqttLoop();
|
mqttLoop();
|
||||||
|
|
||||||
for (unsigned int i = 0; i < IoTItems.size(); i++) {
|
// передаем управление каждому элементу конфигурации для выполнения своих функций
|
||||||
IoTItems[i]->loop();
|
for (std::list<IoTItem*>::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) {
|
||||||
|
(*it)->loop();
|
||||||
|
//if ((*it)->iAmDead) delete *it;
|
||||||
}
|
}
|
||||||
|
|
||||||
handleOrder();
|
handleOrder();
|
||||||
|
|||||||
@@ -86,8 +86,8 @@ void IoTItem::doByInterval() {}
|
|||||||
IoTValue IoTItem::execute(String command, std::vector<IoTValue>& param) { return {}; }
|
IoTValue IoTItem::execute(String command, std::vector<IoTValue>& param) { return {}; }
|
||||||
|
|
||||||
IoTItem* findIoTItem(String name) { // поиск элемента модуля в существующей конфигурации
|
IoTItem* findIoTItem(String name) { // поиск элемента модуля в существующей конфигурации
|
||||||
for (unsigned int i = 0; i < IoTItems.size(); i++) {
|
for (std::list<IoTItem*>::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) {
|
||||||
if (IoTItems[i]->getID() == name) return IoTItems[i];
|
if ((*it)->getID() == name) return *it;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|||||||
Reference in New Issue
Block a user