mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-30 20:09:14 +03:00
Ускоряем начало выполнения сценариев и добавляем событие onInit
Которое появляется и выполняется до инициализации сети
This commit is contained in:
59
src/Main.cpp
59
src/Main.cpp
@@ -10,6 +10,26 @@ String volStrForSave = "";
|
|||||||
unsigned long currentMillis;
|
unsigned long currentMillis;
|
||||||
unsigned long prevMillis;
|
unsigned long prevMillis;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
void elementsLoop() {
|
||||||
|
// передаем управление каждому элементу конфигурации для выполнения своих функций
|
||||||
|
for (std::list<IoTItem *>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
|
||||||
|
(*it)->loop();
|
||||||
|
|
||||||
|
// if ((*it)->iAmDead) {
|
||||||
|
if (!((*it)->iAmLocal) && (*it)->getIntFromNet() == -1) {
|
||||||
|
delete *it;
|
||||||
|
IoTItems.erase(it);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
handleOrder();
|
||||||
|
handleEvent();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
Serial.flush();
|
Serial.flush();
|
||||||
@@ -33,6 +53,24 @@ void setup() {
|
|||||||
// синхронизация глобальных переменных с flash
|
// синхронизация глобальных переменных с flash
|
||||||
globalVarsSync();
|
globalVarsSync();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// настраиваем микроконтроллер
|
||||||
|
configure("/config.json");
|
||||||
|
|
||||||
|
// подготавливаем сценарии
|
||||||
|
iotScen.loadScenario("/scenario.txt");
|
||||||
|
|
||||||
|
// создаем событие завершения инициализации основных моментов для возможности выполнения блока кода при загрузке
|
||||||
|
createItemFromNet("onInit", "1", 1);
|
||||||
|
|
||||||
|
elementsLoop();
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// подключаемся к роутеру
|
// подключаемся к роутеру
|
||||||
routerConnect();
|
routerConnect();
|
||||||
|
|
||||||
@@ -75,8 +113,7 @@ void setup() {
|
|||||||
SerialPrint("i", "i2c", F("i2c pins overriding done"));
|
SerialPrint("i", "i2c", F("i2c pins overriding done"));
|
||||||
}
|
}
|
||||||
|
|
||||||
// настраиваем микроконтроллер
|
|
||||||
configure("/config.json");
|
|
||||||
|
|
||||||
// инициализация задач переодического выполнения
|
// инициализация задач переодического выполнения
|
||||||
periodicTasksInit();
|
periodicTasksInit();
|
||||||
@@ -87,9 +124,6 @@ void setup() {
|
|||||||
// запуск работы udp
|
// запуск работы udp
|
||||||
asyncUdpInit();
|
asyncUdpInit();
|
||||||
|
|
||||||
// подготавливаем сценарии
|
|
||||||
iotScen.loadScenario("/scenario.txt");
|
|
||||||
|
|
||||||
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
||||||
createItemFromNet("onStart", "1", 1);
|
createItemFromNet("onStart", "1", 1);
|
||||||
|
|
||||||
@@ -134,6 +168,8 @@ void setup() {
|
|||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
#ifdef LOOP_DEBUG
|
#ifdef LOOP_DEBUG
|
||||||
unsigned long st = millis();
|
unsigned long st = millis();
|
||||||
@@ -151,20 +187,9 @@ void loop() {
|
|||||||
|
|
||||||
mqttLoop();
|
mqttLoop();
|
||||||
|
|
||||||
// передаем управление каждому элементу конфигурации для выполнения своих функций
|
|
||||||
for (std::list<IoTItem *>::iterator it = IoTItems.begin(); it != IoTItems.end(); ++it) {
|
|
||||||
(*it)->loop();
|
|
||||||
|
|
||||||
// if ((*it)->iAmDead) {
|
elementsLoop();
|
||||||
if (!((*it)->iAmLocal) && (*it)->getIntFromNet() == -1) {
|
|
||||||
delete *it;
|
|
||||||
IoTItems.erase(it);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
handleOrder();
|
|
||||||
handleEvent();
|
|
||||||
|
|
||||||
// #ifdef LOOP_DEBUG
|
// #ifdef LOOP_DEBUG
|
||||||
// loopPeriod = millis() - st;
|
// loopPeriod = millis() - st;
|
||||||
|
|||||||
@@ -173,7 +173,7 @@ void IoTItem::checkIntFromNet() {
|
|||||||
if (_intFromNet >= 0) {
|
if (_intFromNet >= 0) {
|
||||||
// если время жизни истекло, то удаляем элемент чуть позже на следующем такте loop
|
// если время жизни истекло, то удаляем элемент чуть позже на следующем такте loop
|
||||||
// если это было уведомление не об ошибке или начале работы, то сообщаем, что сетевое событие давно не приходило
|
// если это было уведомление не об ошибке или начале работы, то сообщаем, что сетевое событие давно не приходило
|
||||||
if (_intFromNet == 0 && _id.indexOf("onError") == -1 && _id.indexOf("onStart") == -1) {
|
if (_intFromNet == 0 && _id.indexOf("onError") == -1 && _id.indexOf("onStart") == -1 && _id.indexOf("onInit") == -1) {
|
||||||
SerialPrint("E", _id, "The new data did not come from the network. The level of trust is low.", _id);
|
SerialPrint("E", _id, "The new data did not come from the network. The level of trust is low.", _id);
|
||||||
}
|
}
|
||||||
_intFromNet--;
|
_intFromNet--;
|
||||||
|
|||||||
Reference in New Issue
Block a user