From 7058e865386961a1da7a1049810e584680d39033 Mon Sep 17 00:00:00 2001 From: bogdan Date: Mon, 24 Jun 2024 21:29:58 +0200 Subject: [PATCH 1/2] implemented extended errors return for 'exec' variable --- src/CommandProcSys.c | 20 ++++++++++---------- src/RestApiHandler.c | 23 +++++++++++++++-------- 2 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/CommandProcSys.c b/src/CommandProcSys.c index 0bdced0..fa67f1d 100644 --- a/src/CommandProcSys.c +++ b/src/CommandProcSys.c @@ -147,7 +147,7 @@ static int ExecCommandParse(char *cmd) //int err = 0; int commlen = strlen(cmd); if (commlen > CONFIG_WEBGUIAPP_MAX_COMMAND_STRING_LENGTH) - return 1; + return 1; //ERROR_TOO_LONG_COMMAND char comm[CONFIG_WEBGUIAPP_MAX_COMMAND_STRING_LENGTH + 1]; strcpy(comm, cmd); @@ -155,9 +155,9 @@ static int ExecCommandParse(char *cmd) com = strtok(NULL, ","); arg = strtok(NULL, "\0"); if (!obj) - return 2; + return 2; //ERROR_OBJECT_NOT_PARSED if (!com) - return 3; + return 3; //ERROR_ACTION_NOT_PARSED for (int idx = 0; idx < CONFIG_WEBGUIAPP_MAX_OBJECTS_NUM; idx++) { @@ -170,13 +170,13 @@ static int ExecCommandParse(char *cmd) if (com_obj_arr[idx].command_handlers[i] != NULL) { com_obj_arr[idx].command_handlers[i](obj, com, arg); - return 0; + return 0; //EXECUTED_OK } else - return 6; + return 6; //ERROR_HANDLER_NOT_IMPLEMENTED } } - return 5; + return 5; //ERROR_ACTION_NOT_FOUND } } @@ -191,15 +191,15 @@ static int ExecCommandParse(char *cmd) if (custom_com_obj_arr[idx].command_handlers[i] != NULL) { custom_com_obj_arr[idx].command_handlers[i](obj, com, arg); - return 0; + return 0; //EXECUTED_OK } else - return 6; + return 6; //ERROR_HANDLER_NOT_IMPLEMENTED } } - return 5; + return 5; //ERROR_ACTION_NOT_FOUND } } - return 4; + return 4; //ERROR_OBJECT_NOT_FOUND } diff --git a/src/RestApiHandler.c b/src/RestApiHandler.c index 50f027f..eb0b392 100644 --- a/src/RestApiHandler.c +++ b/src/RestApiHandler.c @@ -317,7 +317,6 @@ static void funct_cronrecs(char *argres, int rw) } //CRON implementation END - static void funct_serial_mode(char *argres, int rw) { @@ -334,12 +333,20 @@ static void funct_objsinfo(char *argres, int rw) GetObjectsInfo(argres); } +const char *EXEC_ERROR[] = { + "EXECUTED_OK", + "ERROR_TOO_LONG_COMMAND", + "ERROR_OBJECT_NOT_PARSED", + "ERROR_ACTION_NOT_PARSED", + "ERROR_OBJECT_NOT_FOUND", + "ERROR_ACTION_NOT_FOUND", + "ERROR_HANDLER_NOT_IMPLEMENTED", +}; + static void funct_exec(char *argres, int rw) { - if (rw) - ExecCommand(argres); - else - snprintf(argres, VAR_MAX_VALUE_LENGTH, "\"EXECUTED\""); + int res = ExecCommand(argres); + snprintf(argres, VAR_MAX_VALUE_LENGTH, "\"%s\"", EXEC_ERROR[res]); } static void funct_file_list(char *argres, int rw) @@ -374,7 +381,7 @@ static void funct_sd_block(char *argres, int rw) static void funct_lat(char *argres, int rw) { - if(rw) + if (rw) { GetSysConf()->sntpClient.lat = atof(argres); } @@ -383,7 +390,7 @@ static void funct_lat(char *argres, int rw) static void funct_lon(char *argres, int rw) { - if(rw) + if (rw) { GetSysConf()->sntpClient.lon = atof(argres); } @@ -580,7 +587,7 @@ const rest_var_t SystemVariables[] = { 0, "sd_visible", (bool*) (&VAR_TRUE), VAR_BOOL, R, 0, 1 } #else { 0, "sd_visible", (bool*) (&VAR_FALSE), VAR_BOOL, R, 0, 1 }, - #endif + #endif }; From b8f649b3716cff41bb406e293181d518d1c84480 Mon Sep 17 00:00:00 2001 From: bogd Date: Tue, 25 Jun 2024 13:29:37 +0200 Subject: [PATCH 2/2] conditional build of eeprom driver --- include/SystemApplication.h | 3 ++- src/EEPROM.c | 4 ++++ src/RestApiHandler.c | 22 +++++++++++++++------- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/include/SystemApplication.h b/include/SystemApplication.h index ce1ec61..80a940d 100644 --- a/include/SystemApplication.h +++ b/include/SystemApplication.h @@ -121,8 +121,9 @@ esp_err_t ServiceDataHandler(data_message_t *MSG); sys_error_code SysVarsPayloadHandler(data_message_t *MSG); void GetSysErrorDetales(sys_error_code err, const char **br, const char **ds); - +#ifdef CONFIG_WEBGUIAPP_I2C_ENABLE esp_err_t eepr_i2c_read(uint16_t addr, uint8_t *data, int length); esp_err_t eepr_i2c_write(uint16_t addr, uint8_t *data, int length); +#endif #endif /* COMPONENTS_WEBGUIAPP_INCLUDE_SYSTEMAPPLICATION_H_ */ diff --git a/src/EEPROM.c b/src/EEPROM.c index c1a4932..d756306 100644 --- a/src/EEPROM.c +++ b/src/EEPROM.c @@ -24,6 +24,8 @@ #include "esp_log.h" #include "esp_err.h" +#ifdef CONFIG_WEBGUIAPP_I2C_ENABLE + #define TAG "EEPROMDriver" #define I2C_MASTER_TIMEOUT_MS 1000 @@ -149,3 +151,5 @@ esp_err_t eepr_i2c_write(uint16_t addr, uint8_t *data, int length) return ESP_OK; } +#endif + diff --git a/src/RestApiHandler.c b/src/RestApiHandler.c index 50f027f..300b750 100644 --- a/src/RestApiHandler.c +++ b/src/RestApiHandler.c @@ -317,7 +317,6 @@ static void funct_cronrecs(char *argres, int rw) } //CRON implementation END - static void funct_serial_mode(char *argres, int rw) { @@ -336,8 +335,17 @@ static void funct_objsinfo(char *argres, int rw) static void funct_exec(char *argres, int rw) { + int len = strlen(argres); if (rw) - ExecCommand(argres); + { + if ( argres[0] == '"' && argres[len - 1] == '"') + { + argres[len - 1] = 0x00; + ExecCommand(argres + 1); + } + else + snprintf(argres, VAR_MAX_VALUE_LENGTH, "\"ERROR_NOTASTRING\""); + } else snprintf(argres, VAR_MAX_VALUE_LENGTH, "\"EXECUTED\""); } @@ -374,7 +382,7 @@ static void funct_sd_block(char *argres, int rw) static void funct_lat(char *argres, int rw) { - if(rw) + if (rw) { GetSysConf()->sntpClient.lat = atof(argres); } @@ -383,7 +391,7 @@ static void funct_lat(char *argres, int rw) static void funct_lon(char *argres, int rw) { - if(rw) + if (rw) { GetSysConf()->sntpClient.lon = atof(argres); } @@ -529,7 +537,7 @@ const rest_var_t SystemVariables[] = { 0, "gsm_dns2", &SysConfig.gsmSettings.DNSAddr2, VAR_IPADDR, RW, 0, 0 }, { 0, "gsm_dns3", &SysConfig.gsmSettings.DNSAddr3, VAR_IPADDR, RW, 0, 0 }, { 0, "gsm_stat", &funct_gsm_stat, VAR_FUNCT, R, 0, 0 }, -#ifdef CONFIG_WEBGUIAPP_MODEM_AT_ACCESS + #ifdef CONFIG_WEBGUIAPP_MODEM_AT_ACCESS { 0, "gsm_at_timeout", &funct_gsm_at_timeout, VAR_FUNCT, R, 0, 0 }, { 0, "gsm_at", &funct_gsm_at, VAR_FUNCT, R, 0, 0 }, #endif @@ -546,7 +554,7 @@ const rest_var_t SystemVariables[] = { 0, "serial_baud", &SysConfig.serialSettings.BaudRate, VAR_INT, RW, 1200, 4096000 }, { 0, "serial_break", &SysConfig.serialSettings.InputBrake, VAR_INT, RW, 1, 50 }, { 0, "serial_visible", (bool*) (&VAR_TRUE), VAR_BOOL, R, 0, 1 }, -#else + #else { 0, "serial_visible", (bool*) (&VAR_FALSE), VAR_BOOL, R, 0, 1 }, #endif @@ -580,7 +588,7 @@ const rest_var_t SystemVariables[] = { 0, "sd_visible", (bool*) (&VAR_TRUE), VAR_BOOL, R, 0, 1 } #else { 0, "sd_visible", (bool*) (&VAR_FALSE), VAR_BOOL, R, 0, 1 }, - #endif + #endif };