mirror of
https://github.com/IoTManagerProject/IoTManager.git
synced 2026-03-26 22:22:16 +03:00
не рабочая версия
This commit is contained in:
3
data_svelte/scenario.json
Normal file
3
data_svelte/scenario.json
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"scen": ""
|
||||||
|
}
|
||||||
@@ -4,91 +4,91 @@
|
|||||||
#include <map>
|
#include <map>
|
||||||
|
|
||||||
class ExprAST {
|
class ExprAST {
|
||||||
public:
|
public:
|
||||||
virtual ~ExprAST();
|
virtual ~ExprAST();
|
||||||
virtual IoTValue* exec();
|
virtual IoTValue *exec();
|
||||||
virtual int setValue(IoTValue *val); // ret 0 - установка значения не поддерживается наследником
|
virtual int setValue(IoTValue *val); // ret 0 - установка значения не поддерживается наследником
|
||||||
virtual bool hasEventIdName(String eventIdName);
|
virtual bool hasEventIdName(String eventIdName);
|
||||||
};
|
};
|
||||||
|
|
||||||
class IoTScenario {
|
class IoTScenario {
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Lexer (Лексический анализатор)
|
// Lexer (Лексический анализатор)
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
String IdentifierStr; // Заполняется, если tok_identifier
|
String IdentifierStr; // Заполняется, если tok_identifier
|
||||||
float NumVal; // Заполняется, если tok_number
|
float NumVal; // Заполняется, если tok_number
|
||||||
char LastChar = ' ';
|
char LastChar = ' ';
|
||||||
|
|
||||||
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
/// gettok - Возвращает следующий токен из стандартного потока ввода.
|
||||||
int gettok();
|
int gettok();
|
||||||
|
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
// Parser (Парсер или Синтаксический Анализатор)
|
// Parser (Парсер или Синтаксический Анализатор)
|
||||||
//===----------------------------------------------------------------------===//
|
//===----------------------------------------------------------------------===//
|
||||||
|
|
||||||
/// CurTok/getNextToken - Предоставляет простой буфер токенов. CurTok - это текущий
|
/// CurTok/getNextToken - Предоставляет простой буфер токенов. CurTok - это текущий
|
||||||
/// токен, просматриваемый парсером. getNextToken получает следующий токен от
|
/// токен, просматриваемый парсером. getNextToken получает следующий токен от
|
||||||
/// лексического анализатора и обновляет CurTok.
|
/// лексического анализатора и обновляет CurTok.
|
||||||
int CurTok;
|
int CurTok;
|
||||||
int getNextToken();
|
int getNextToken();
|
||||||
|
|
||||||
/// BinopPrecedence - Содержит приоритеты для бинарных операторов
|
/// BinopPrecedence - Содержит приоритеты для бинарных операторов
|
||||||
std::map<signed char, int> BinopPrecedence;
|
std::map<signed char, int> BinopPrecedence;
|
||||||
|
|
||||||
/// GetTokPrecedence - Возвращает приоритет текущего бинарного оператора.
|
/// GetTokPrecedence - Возвращает приоритет текущего бинарного оператора.
|
||||||
int GetTokPrecedence();
|
int GetTokPrecedence();
|
||||||
|
|
||||||
/// Error* - Это небольшие вспомогательные функции для обработки ошибок.
|
/// Error* - Это небольшие вспомогательные функции для обработки ошибок.
|
||||||
ExprAST *Error(const char *Str);
|
ExprAST *Error(const char *Str);
|
||||||
|
|
||||||
/// identifierexpr
|
/// identifierexpr
|
||||||
/// ::= identifier
|
/// ::= identifier
|
||||||
/// ::= identifier '(' expression* ')'
|
/// ::= identifier '(' expression* ')'
|
||||||
ExprAST *ParseIdentifierExpr(String *IDNames);
|
ExprAST *ParseIdentifierExpr(String *IDNames);
|
||||||
|
|
||||||
/// numberexpr ::= number
|
/// numberexpr ::= number
|
||||||
ExprAST *ParseNumberExpr();
|
ExprAST *ParseNumberExpr();
|
||||||
|
|
||||||
/// parenexpr ::= '(' expression ')'
|
/// parenexpr ::= '(' expression ')'
|
||||||
ExprAST *ParseParenExpr();
|
ExprAST *ParseParenExpr();
|
||||||
|
|
||||||
/// bracketsexpr ::= '{' expression '}'
|
/// bracketsexpr ::= '{' expression '}'
|
||||||
ExprAST *ParseBracketsExpr();
|
ExprAST *ParseBracketsExpr();
|
||||||
|
|
||||||
/// quotesexpr ::= '"' expression '"'
|
/// quotesexpr ::= '"' expression '"'
|
||||||
ExprAST *ParseQuotesExpr();
|
ExprAST *ParseQuotesExpr();
|
||||||
|
|
||||||
/// ifexpr ::= 'if' expression 'then' expression 'else' expression
|
/// ifexpr ::= 'if' expression 'then' expression 'else' expression
|
||||||
ExprAST *ParseIfExpr(String* IDNames);
|
ExprAST *ParseIfExpr(String *IDNames);
|
||||||
|
|
||||||
/// primary
|
/// primary
|
||||||
/// ::= identifierexpr
|
/// ::= identifierexpr
|
||||||
/// ::= numberexpr
|
/// ::= numberexpr
|
||||||
/// ::= parenexpr
|
/// ::= parenexpr
|
||||||
ExprAST *ParsePrimary(String* IDNames);
|
ExprAST *ParsePrimary(String *IDNames);
|
||||||
|
|
||||||
/// binoprhs
|
/// binoprhs
|
||||||
/// ::= ('+' primary)*
|
/// ::= ('+' primary)*
|
||||||
ExprAST *ParseBinOpRHS(int ExprPrec, ExprAST *LHS, String *IDNames);
|
ExprAST *ParseBinOpRHS(int ExprPrec, ExprAST *LHS, String *IDNames);
|
||||||
|
|
||||||
/// expression
|
/// expression
|
||||||
/// ::= primary binoprhs
|
/// ::= primary binoprhs
|
||||||
///
|
///
|
||||||
ExprAST *ParseExpression(String *IDNames);
|
ExprAST *ParseExpression(String *IDNames);
|
||||||
|
|
||||||
std::vector<ExprAST*> ScenarioElements; // корневые элементы дерава
|
std::vector<ExprAST *> ScenarioElements; // корневые элементы дерава
|
||||||
|
|
||||||
String *strFromFile;
|
String *strFromFile;
|
||||||
char getLastChar();
|
char getLastChar();
|
||||||
int strIterator = 0;
|
int strIterator = 0;
|
||||||
|
|
||||||
void clearScenarioElements();
|
void clearScenarioElements();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
void loadScenario(String fileName);
|
void loadScenario(String fileName);
|
||||||
void ExecScenario(String eventIdName);
|
void ExecScenario(String eventIdName);
|
||||||
|
|
||||||
IoTScenario();
|
IoTScenario();
|
||||||
~IoTScenario();
|
~IoTScenario();
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ void setup() {
|
|||||||
asyncUdpInit();
|
asyncUdpInit();
|
||||||
|
|
||||||
//загрузка сценария
|
//загрузка сценария
|
||||||
iotScen.loadScenario("/scenario.txt");
|
iotScen.loadScenario("/scenario.json");
|
||||||
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
||||||
IoTItems.push_back((IoTItem *)new externalVariable("{\"id\":\"onStart\",\"val\":1,\"int\":60}"));
|
IoTItems.push_back((IoTItem *)new externalVariable("{\"id\":\"onStart\",\"val\":1,\"int\":60}"));
|
||||||
generateEvent("onStart", "");
|
generateEvent("onStart", "");
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
|||||||
sendFileToWs("/items.json", num, 1024);
|
sendFileToWs("/items.json", num, 1024);
|
||||||
sendFileToWs("/widgets.json", num, 1024);
|
sendFileToWs("/widgets.json", num, 1024);
|
||||||
sendFileToWs("/config.json", num, 1024);
|
sendFileToWs("/config.json", num, 1024);
|
||||||
sendFileToWs("/scenario.txt", num, 1024);
|
sendFileToWs("/scenario.json", num, 1024);
|
||||||
standWebSocket.sendTXT(num, settingsFlashJson);
|
standWebSocket.sendTXT(num, settingsFlashJson);
|
||||||
}
|
}
|
||||||
//**сохранение**//
|
//**сохранение**//
|
||||||
@@ -73,7 +73,7 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
|||||||
clearConfigure();
|
clearConfigure();
|
||||||
Serial.println("Start config");
|
Serial.println("Start config");
|
||||||
configure("/config.json");
|
configure("/config.json");
|
||||||
iotScen.loadScenario("/scenario.txt");
|
iotScen.loadScenario("/scenario.json");
|
||||||
}
|
}
|
||||||
//**сохранение**//
|
//**сохранение**//
|
||||||
if (headerStr == "/tuoyal|") {
|
if (headerStr == "/tuoyal|") {
|
||||||
@@ -81,13 +81,9 @@ void webSocketEvent(uint8_t num, WStype_t type, uint8_t* payload, size_t length)
|
|||||||
}
|
}
|
||||||
//**сохранение**//
|
//**сохранение**//
|
||||||
if (headerStr == "/oiranecs|") {
|
if (headerStr == "/oiranecs|") {
|
||||||
if (length - headerLenth == 0) {
|
writeFileUint8tByFrames("scenario.json", payload, length, headerLenth, 256);
|
||||||
SerialPrint("i", "WS", "Scenario file empty");
|
iotScen.loadScenario("/scenario.json");
|
||||||
writeFile("/scenario.txt", "");
|
|
||||||
} else {
|
|
||||||
writeFileUint8tByFrames("scenario.txt", payload, length, headerLenth, 256);
|
|
||||||
iotScen.loadScenario("/scenario.txt");
|
|
||||||
}
|
|
||||||
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
// создаем событие завершения конфигурирования для возможности выполнения блока кода при загрузке
|
||||||
IoTItems.push_back((IoTItem*)new externalVariable("{\"id\":\"onStart\",\"val\":1,\"int\":60}"));
|
IoTItems.push_back((IoTItem*)new externalVariable("{\"id\":\"onStart\",\"val\":1,\"int\":60}"));
|
||||||
generateEvent("onStart", "");
|
generateEvent("onStart", "");
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user