mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 14:12:16 +03:00
Добавляем системные вызовы setInterval и doByInterval
Для возможности изменения интервала выполнения doByInterval и вызова его вне плана
This commit is contained in:
@@ -291,10 +291,8 @@ class CallExprAST : public ExprAST {
|
||||
ret.valD = Item->getIntFromNet();
|
||||
ret.isDecimal = true;
|
||||
return &ret;
|
||||
}
|
||||
|
||||
// вызываем системную функцию периодического выполнения вне таймера
|
||||
if (Cmd == F("doByInterval")) {
|
||||
|
||||
} else if (Cmd == F("doByInterval")) { // вызываем системную функцию периодического выполнения вне таймера
|
||||
Item->doByInterval();
|
||||
ret = Item->value;
|
||||
return &ret;
|
||||
@@ -311,6 +309,15 @@ class CallExprAST : public ExprAST {
|
||||
return nullptr; // ArgsAsIoTValue.push_back(zeroIotVal);
|
||||
}
|
||||
|
||||
if (Cmd == F("setInterval")) { // меняем интервал выполнения задач модуля налету
|
||||
if (ArgsAsIoTValue.size() == 1) {
|
||||
Item->setInterval(ArgsAsIoTValue[0].valD);
|
||||
ret.valD = Item->getInterval();
|
||||
ret.isDecimal = true;
|
||||
return &ret;
|
||||
}
|
||||
}
|
||||
|
||||
ret = Item->execute(Cmd, ArgsAsIoTValue); // вызываем команду из модуля напрямую с передачей всех аргументов
|
||||
|
||||
// if (ret.isDecimal) Serial.printf("Call from CallExprAST ID = %s, Command = %s, exec result = %f\n", Callee.c_str(), Cmd.c_str(), ret.valD);
|
||||
@@ -350,7 +357,8 @@ enum SysOp {
|
||||
sysop_mqttPub,
|
||||
sysop_getUptime,
|
||||
sysop_mqttIsConnect,
|
||||
sysop_wifiIsConnect
|
||||
sysop_wifiIsConnect,
|
||||
sysop_setInterval
|
||||
};
|
||||
|
||||
IoTValue sysExecute(SysOp command, std::vector<IoTValue> ¶m) {
|
||||
@@ -456,7 +464,12 @@ IoTValue sysExecute(SysOp command, std::vector<IoTValue> ¶m) {
|
||||
break;
|
||||
case sysop_wifiIsConnect:
|
||||
value.valD = isNetworkActive();
|
||||
break;
|
||||
break;
|
||||
case sysop_setInterval:
|
||||
if (param.size() == 1) {
|
||||
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return value;
|
||||
@@ -515,6 +528,8 @@ class SysCallExprAST : public ExprAST {
|
||||
operation = sysop_mqttIsConnect;
|
||||
else if (Callee == F("wifiIsConnect"))
|
||||
operation = sysop_wifiIsConnect;
|
||||
else if (Callee == F("setInterval"))
|
||||
operation = sysop_setInterval;
|
||||
else
|
||||
operation = sysop_notfound;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,12 @@
|
||||
"descr": "Получаем количество секунд доверия к значениям элемента. При -2 доверие полное, при -1 время доверия истекло. При >0 время обратного отсчета. Используется только совместно с ИД элемента: ID.getIntFromNet()",
|
||||
"params": []
|
||||
},
|
||||
{
|
||||
"name": "setInterval",
|
||||
"descr": "Меняем интервал выполнения периодиеских операций элемента в секундах. Используется только совместно с ИД элемента: ID.setInterval(5)",
|
||||
"params": ["Секунды"],
|
||||
"return": "установленный интервал"
|
||||
},
|
||||
{
|
||||
"name": "doByInterval",
|
||||
"descr": "Выполняем интервальное действие модуля вне плана. Используется только совместно с ИД элемента: ID.doByInterval()",
|
||||
|
||||
Reference in New Issue
Block a user