added type VAR_IPADDR

This commit is contained in:
Bogdan Pilyugin 2023-07-31 11:02:00 +02:00
parent e689f4a2e1
commit 155c2469cb
3 changed files with 15 additions and 4 deletions

View File

@ -33,6 +33,7 @@ typedef enum{
VAR_BOOL = 0,
VAR_INT,
VAR_STRING,
VAR_IPADDR,
VAR_FUNCT
} rest_var_types;

View File

@ -25,6 +25,7 @@
#include <SysConfiguration.h>
#include <webguiapp.h>
#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;

View File

@ -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);