Добавляем механизм очистки суецидных внешних переменных

This commit is contained in:
2022-02-25 15:38:32 +03:00
parent 6d7c734f46
commit 5da9a141a9
3 changed files with 17 additions and 7 deletions

View File

@@ -10,8 +10,7 @@ struct IoTValue {
class IoTItem { class IoTItem {
public: public:
IoTItem(String parameters); IoTItem(String parameters);
~IoTItem(); virtual ~IoTItem() {}
void loop(); void loop();
virtual void doByInterval(); virtual void doByInterval();
virtual IoTValue execute(String command, std::vector<IoTValue> &param); virtual IoTValue execute(String command, std::vector<IoTValue> &param);

View File

@@ -56,12 +56,17 @@ void setup() {
//загрузка сценария //загрузка сценария
iotScen.loadScenario("/scenario.txt"); iotScen.loadScenario("/scenario.txt");
iotScen.ExecScenario(""); //iotScen.ExecScenario("");
// test // test
Serial.println("-------test start--------"); Serial.println("-------test start--------");
Serial.println("--------test end---------"); 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++) { // for (int i = 109; i < 112; i++) {
// IoTgpio.pinMode(i, OUTPUT); // IoTgpio.pinMode(i, OUTPUT);
@@ -97,7 +102,11 @@ void loop() {
// передаем управление каждому элементу конфигурации для выполнения своих функций // передаем управление каждому элементу конфигурации для выполнения своих функций
for (std::list<IoTItem*>::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) { for (std::list<IoTItem*>::iterator it=IoTItems.begin(); it != IoTItems.end(); ++it) {
(*it)->loop(); (*it)->loop();
//if ((*it)->iAmDead) delete *it; if ((*it)->iAmDead) {
delete *it;
IoTItems.erase(it);
break;
}
} }
handleOrder(); handleOrder();

View File

@@ -31,7 +31,8 @@ IoTItem::IoTItem(String parameters) {
_map4 = selectFromMarkerToMarker(map, ",", 3).toInt(); _map4 = selectFromMarkerToMarker(map, ",", 3).toInt();
} }
} }
IoTItem::~IoTItem() {}
// IoTItem::~IoTItem() {}
String IoTItem::getSubtype() { String IoTItem::getSubtype() {
return _subtype; return _subtype;
@@ -107,7 +108,8 @@ void IoTItem::setValue(IoTValue Value) {
externalVariable::externalVariable(String parameters) : IoTItem(parameters) { 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() { externalVariable::~externalVariable() {