diff --git a/include/classes/IoTItem.h b/include/classes/IoTItem.h index 1618e850..05a23ffc 100644 --- a/include/classes/IoTItem.h +++ b/include/classes/IoTItem.h @@ -10,8 +10,7 @@ struct IoTValue { class IoTItem { public: IoTItem(String parameters); - ~IoTItem(); - + virtual ~IoTItem() {} void loop(); virtual void doByInterval(); virtual IoTValue execute(String command, std::vector ¶m); @@ -56,5 +55,5 @@ class externalVariable: IoTItem { // объект, создаваемый пр externalVariable(String parameters); ~externalVariable(); void doByInterval(); // для данного класса doByInterval+int выполняет роль счетчика обратного отсчета до уничтожения - + }; \ No newline at end of file diff --git a/src/Main.cpp b/src/Main.cpp index 92cba7c8..f1ed3ea1 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -56,12 +56,17 @@ void setup() { //загрузка сценария iotScen.loadScenario("/scenario.txt"); - iotScen.ExecScenario(""); + //iotScen.ExecScenario(""); // test Serial.println("-------test start--------"); Serial.println("--------test end---------"); + // симуляция добавления внешних событий + IoTItems.push_back((IoTItem*) new externalVariable("{\"id\":\"rel1\",\"val\":10,\"int\":20}")); + IoTItems.push_back((IoTItem*) new externalVariable("{\"id\":\"rel4\",\"val\":34,\"int\":30}")); + + //тест перебора пинов из расширения // for (int i = 109; i < 112; i++) { // IoTgpio.pinMode(i, OUTPUT); @@ -97,7 +102,11 @@ void loop() { // передаем управление каждому элементу конфигурации для выполнения своих функций for (std::list::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) { (*it)->loop(); - //if ((*it)->iAmDead) delete *it; + if ((*it)->iAmDead) { + delete *it; + IoTItems.erase(it); + break; + } } handleOrder(); diff --git a/src/classes/IoTItem.cpp b/src/classes/IoTItem.cpp index 21cae993..0dbedc9b 100644 --- a/src/classes/IoTItem.cpp +++ b/src/classes/IoTItem.cpp @@ -31,7 +31,8 @@ IoTItem::IoTItem(String parameters) { _map4 = selectFromMarkerToMarker(map, ",", 3).toInt(); } } -IoTItem::~IoTItem() {} + +// IoTItem::~IoTItem() {} String IoTItem::getSubtype() { return _subtype; @@ -107,7 +108,8 @@ void IoTItem::setValue(IoTValue Value) { externalVariable::externalVariable(String parameters) : IoTItem(parameters) { - Serial.printf("Call from externalVariable: parameters %s\n", parameters.c_str()); + prevMillis = millis(); // запоминаем текущее значение таймера для выполения doByInterval после int сек + Serial.printf("Call from externalVariable: parameters %s %d\n", parameters.c_str(), _interval); } externalVariable::~externalVariable() {