diff --git a/include/SysConfiguration.h b/include/SysConfiguration.h index 5e8bc7d..cdca841 100644 --- a/include/SysConfiguration.h +++ b/include/SysConfiguration.h @@ -33,6 +33,7 @@ typedef enum{ VAR_BOOL = 0, VAR_INT, VAR_STRING, + VAR_IPADDR, VAR_FUNCT } rest_var_types; diff --git a/src/RestApiHandler.c b/src/RestApiHandler.c index 8ce1c4f..c41dce8 100644 --- a/src/RestApiHandler.c +++ b/src/RestApiHandler.c @@ -25,6 +25,7 @@ #include #include #include "esp_wifi.h" +#include "esp_netif.h" extern SYS_CONFIG SysConfig; @@ -67,7 +68,11 @@ const rest_var_t ConfigVariables[] = { 4, "time", &funct_time, VAR_FUNCT, 0, 0 }, { 5, "addone", &funct_addone, VAR_FUNCT, 0, 0 }, { 6, "wifiscan", &funct_wifiscan, VAR_FUNCT, 0, 0 }, - { 7, "wifiscanres", &funct_wifiscanres, VAR_FUNCT, 0, 0 } + { 7, "wifiscanres", &funct_wifiscanres, VAR_FUNCT, 0, 0 }, + { 8, "wifi-sta-ip", &SysConfig.wifiSettings.InfIPAddr, VAR_IPADDR, 0, 0 }, + { 9, "wifi-ap-ip", &SysConfig.wifiSettings.ApIPAddr, VAR_IPADDR, 0, 0 }, + { 9, "wifi-sta-mask", &SysConfig.wifiSettings.InfMask, VAR_IPADDR, 0, 0 }, + { 9, "wifi-sta-gw", &SysConfig.wifiSettings.InfGateway, VAR_IPADDR, 0, 0 } }; @@ -108,6 +113,9 @@ esp_err_t SetConfVar(char *name, char *val, rest_var_types *tp) return ESP_ERR_INVALID_ARG; strcpy(V->ref, val); break; + case VAR_IPADDR: + esp_netif_str_to_ip4(val, (esp_ip4_addr_t*) (V->ref)); + break; case VAR_FUNCT: ((void (*)(char*)) (V->ref))(val); break; @@ -141,7 +149,9 @@ esp_err_t GetConfVar(char *name, char *val, rest_var_types *tp) case VAR_STRING: strcpy(val, (char*) V->ref); break; - + case VAR_IPADDR: + esp_ip4addr_ntoa((const esp_ip4_addr_t*) V->ref, val, 16); + break; case VAR_FUNCT: ((void (*)(char*)) (V->ref))(val); break; diff --git a/src/SysComm.c b/src/SysComm.c index ec7dac3..a1ab7f0 100644 --- a/src/SysComm.c +++ b/src/SysComm.c @@ -149,7 +149,7 @@ static sys_error_code SysPayloadTypeVarsHandler(data_message_t *MSG) else strcpy(VarValue, esp_err_to_name(res)); jwObj_string("name", VarName); - if (tp == VAR_STRING) + if (tp == VAR_STRING || tp == VAR_IPADDR) jwObj_string("val", VarValue); else jwObj_raw("val", VarValue); @@ -161,7 +161,7 @@ static sys_error_code SysPayloadTypeVarsHandler(data_message_t *MSG) if (res != ESP_OK) strcpy(VarValue, esp_err_to_name(res)); jwObj_string("name", VarName); - if (tp == VAR_STRING) + if (tp == VAR_STRING || tp == VAR_IPADDR) jwObj_string("val", VarValue); else jwObj_raw("val", VarValue);