implemented original JSON types in the payload
This commit is contained in:
parent
581e2a6ad5
commit
e689f4a2e1
|
|
@ -92,8 +92,8 @@ typedef struct
|
||||||
int err_code;
|
int err_code;
|
||||||
} data_message_t;
|
} data_message_t;
|
||||||
|
|
||||||
esp_err_t GetConfVar(char* name, char* val);
|
esp_err_t GetConfVar(char* name, char* val, rest_var_types *tp);
|
||||||
esp_err_t SetConfVar(char* name, char* val);
|
esp_err_t SetConfVar(char* name, char* val, rest_var_types *tp);
|
||||||
|
|
||||||
esp_err_t SysServiceDataHandler(data_message_t *MSG);
|
esp_err_t SysServiceDataHandler(data_message_t *MSG);
|
||||||
sys_error_code SysVarsPayloadHandler(data_message_t *MSG);
|
sys_error_code SysVarsPayloadHandler(data_message_t *MSG);
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
#include "SystemApplication.h"
|
#include "SystemApplication.h"
|
||||||
#include <SysConfiguration.h>
|
#include <SysConfiguration.h>
|
||||||
#include <webguiapp.h>
|
#include <webguiapp.h>
|
||||||
|
#include "esp_wifi.h"
|
||||||
|
|
||||||
extern SYS_CONFIG SysConfig;
|
extern SYS_CONFIG SysConfig;
|
||||||
|
|
||||||
|
|
@ -41,18 +42,36 @@ static void funct_time(char *argres)
|
||||||
snprintf(argres, MAX_DYNVAR_LENGTH, "%d", (int) now);
|
snprintf(argres, MAX_DYNVAR_LENGTH, "%d", (int) now);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void funct_wifiscan(char *argres)
|
||||||
|
{
|
||||||
|
if (atoi(argres))
|
||||||
|
WiFiScan();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void funct_wifiscanres(char *argres)
|
||||||
|
{
|
||||||
|
int arg = atoi(argres);
|
||||||
|
wifi_ap_record_t *R = GetWiFiAPRecord(arg);
|
||||||
|
if (!R)
|
||||||
|
return;
|
||||||
|
snprintf(argres, MAX_DYNVAR_LENGTH, "{\"ssid\":\"%s\",\"rssi\":%i,\"ch\":%d}", R->ssid, R->rssi,
|
||||||
|
R->primary);
|
||||||
|
}
|
||||||
|
|
||||||
const rest_var_t ConfigVariables[] =
|
const rest_var_t ConfigVariables[] =
|
||||||
{
|
{
|
||||||
{ 0, "netname", &SysConfig.NetBIOSName, VAR_STRING, 3, 31 },
|
{ 0, "netname", &SysConfig.NetBIOSName, VAR_STRING, 3, 31 },
|
||||||
{ 1, "otaurl", &SysConfig.OTAURL, VAR_STRING, 3, 128 },
|
{ 1, "otaurl", &SysConfig.OTAURL, VAR_STRING, 3, 128 },
|
||||||
{ 2, "ledenab", &SysConfig.Flags1.bIsLedsEnabled, VAR_BOOL, 0, 1 },
|
{ 2, "ledenab", &SysConfig.Flags1.bIsLedsEnabled, VAR_BOOL, 0, 1 },
|
||||||
{ 3, "otaint", &SysConfig.OTAAutoInt, VAR_INT, 0, 65535 },
|
{ 3, "otaint", &SysConfig.OTAAutoInt, VAR_INT, 0, 65535 },
|
||||||
{ 4, "time", &funct_time, VAR_FUNCT, 0, 65535 },
|
{ 4, "time", &funct_time, VAR_FUNCT, 0, 0 },
|
||||||
{ 5, "addone", &funct_addone, VAR_FUNCT, 0, 65535 }
|
{ 5, "addone", &funct_addone, VAR_FUNCT, 0, 0 },
|
||||||
|
{ 6, "wifiscan", &funct_wifiscan, VAR_FUNCT, 0, 0 },
|
||||||
|
{ 7, "wifiscanres", &funct_wifiscanres, VAR_FUNCT, 0, 0 }
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
esp_err_t SetConfVar(char *name, char *val)
|
esp_err_t SetConfVar(char *name, char *val, rest_var_types *tp)
|
||||||
{
|
{
|
||||||
rest_var_t *V = NULL;
|
rest_var_t *V = NULL;
|
||||||
for (int i = 0; i < sizeof(ConfigVariables) / sizeof(rest_var_t); ++i)
|
for (int i = 0; i < sizeof(ConfigVariables) / sizeof(rest_var_t); ++i)
|
||||||
|
|
@ -66,6 +85,7 @@ esp_err_t SetConfVar(char *name, char *val)
|
||||||
if (!V)
|
if (!V)
|
||||||
return ESP_ERR_NOT_FOUND;
|
return ESP_ERR_NOT_FOUND;
|
||||||
int constr;
|
int constr;
|
||||||
|
*tp = V->vartype;
|
||||||
switch (V->vartype)
|
switch (V->vartype)
|
||||||
{
|
{
|
||||||
case VAR_BOOL:
|
case VAR_BOOL:
|
||||||
|
|
@ -96,7 +116,7 @@ esp_err_t SetConfVar(char *name, char *val)
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
esp_err_t GetConfVar(char *name, char *val)
|
esp_err_t GetConfVar(char *name, char *val, rest_var_types *tp)
|
||||||
{
|
{
|
||||||
rest_var_t *V = NULL;
|
rest_var_t *V = NULL;
|
||||||
for (int i = 0; i < sizeof(ConfigVariables) / sizeof(rest_var_t); ++i)
|
for (int i = 0; i < sizeof(ConfigVariables) / sizeof(rest_var_t); ++i)
|
||||||
|
|
@ -109,6 +129,7 @@ esp_err_t GetConfVar(char *name, char *val)
|
||||||
}
|
}
|
||||||
if (!V)
|
if (!V)
|
||||||
return ESP_ERR_NOT_FOUND;
|
return ESP_ERR_NOT_FOUND;
|
||||||
|
*tp = V->vartype;
|
||||||
switch (V->vartype)
|
switch (V->vartype)
|
||||||
{
|
{
|
||||||
case VAR_BOOL:
|
case VAR_BOOL:
|
||||||
|
|
@ -127,7 +148,7 @@ esp_err_t GetConfVar(char *name, char *val)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val = V->ref;
|
//val = V->ref;
|
||||||
return ESP_OK;
|
return ESP_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -142,21 +142,29 @@ static sys_error_code SysPayloadTypeVarsHandler(data_message_t *MSG)
|
||||||
jwArr_object();
|
jwArr_object();
|
||||||
if (MSG->parsedData.msgType == DATA_MESSAGE_TYPE_COMMAND)
|
if (MSG->parsedData.msgType == DATA_MESSAGE_TYPE_COMMAND)
|
||||||
{ //Write variables
|
{ //Write variables
|
||||||
esp_err_t res = SetConfVar(VarName, VarValue);
|
rest_var_types tp;
|
||||||
|
esp_err_t res = SetConfVar(VarName, VarValue, &tp);
|
||||||
if (res == ESP_OK)
|
if (res == ESP_OK)
|
||||||
GetConfVar(VarName, VarValue);
|
GetConfVar(VarName, VarValue, &tp);
|
||||||
else
|
else
|
||||||
strcpy(VarValue, esp_err_to_name(res));
|
strcpy(VarValue, esp_err_to_name(res));
|
||||||
jwObj_string("name", VarName);
|
jwObj_string("name", VarName);
|
||||||
|
if (tp == VAR_STRING)
|
||||||
jwObj_string("val", VarValue);
|
jwObj_string("val", VarValue);
|
||||||
|
else
|
||||||
|
jwObj_raw("val", VarValue);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{ //Read variables
|
{ //Read variables
|
||||||
esp_err_t res = GetConfVar(VarName, VarValue);
|
rest_var_types tp;
|
||||||
|
esp_err_t res = GetConfVar(VarName, VarValue, &tp);
|
||||||
if (res != ESP_OK)
|
if (res != ESP_OK)
|
||||||
strcpy(VarValue, esp_err_to_name(res));
|
strcpy(VarValue, esp_err_to_name(res));
|
||||||
jwObj_string("name", VarName);
|
jwObj_string("name", VarName);
|
||||||
|
if (tp == VAR_STRING)
|
||||||
jwObj_string("val", VarValue);
|
jwObj_string("val", VarValue);
|
||||||
|
else
|
||||||
|
jwObj_raw("val", VarValue);
|
||||||
}
|
}
|
||||||
jwEnd();
|
jwEnd();
|
||||||
}
|
}
|
||||||
|
|
@ -171,25 +179,23 @@ static sys_error_code SysPayloadTypeVarsHandler(data_message_t *MSG)
|
||||||
jwObj_string("error_descr", (char*) err_desc);
|
jwObj_string("error_descr", (char*) err_desc);
|
||||||
jwEnd();
|
jwEnd();
|
||||||
|
|
||||||
|
char *datap = strstr(MSG->outputDataBuffer, "\"data\":");
|
||||||
char* datap = strstr(MSG->outputDataBuffer, "\"data\":");
|
if (datap)
|
||||||
if(datap)
|
|
||||||
{
|
{
|
||||||
datap += sizeof("\"data\":") - 1;
|
datap += sizeof("\"data\":") - 1;
|
||||||
SHA256hmacHash((unsigned char*) datap , strlen(datap), (unsigned char*) "mykey", sizeof("mykey"),
|
SHA256hmacHash((unsigned char*) datap, strlen(datap), (unsigned char*) "mykey", sizeof("mykey"),
|
||||||
MSG->parsedData.sha256);
|
MSG->parsedData.sha256);
|
||||||
unsigned char sha_print[32 * 2 + 1];
|
unsigned char sha_print[32 * 2 + 1];
|
||||||
BytesToStr(MSG->parsedData.sha256, sha_print, 32);
|
BytesToStr(MSG->parsedData.sha256, sha_print, 32);
|
||||||
sha_print[32 * 2] = 0x00;
|
sha_print[32 * 2] = 0x00;
|
||||||
ESP_LOGI(TAG, "SHA256 of DATA object is %s", sha_print);
|
ESP_LOGI(TAG, "SHA256 of DATA object is %s", sha_print);
|
||||||
jwObj_string("signature", (char*)sha_print);
|
jwObj_string("signature", (char*) sha_print);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return SYS_ERROR_SHA256_DATA;
|
return SYS_ERROR_SHA256_DATA;
|
||||||
jwEnd();
|
jwEnd();
|
||||||
jwClose();
|
jwClose();
|
||||||
|
|
||||||
|
|
||||||
jRead(MSG->inputDataBuffer, "{'data'{'payload'{'applytype'", &result);
|
jRead(MSG->inputDataBuffer, "{'data'{'payload'{'applytype'", &result);
|
||||||
if (result.elements == 1)
|
if (result.elements == 1)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user