prepare to change integer to string payload type

This commit is contained in:
Bogdan Pilyugin 2023-10-14 13:20:09 +02:00
parent b861881061
commit 32c8a42b89
2 changed files with 40 additions and 15 deletions

View File

@ -58,6 +58,7 @@ typedef enum
SYS_ERROR_PARSE_VARIABLES, SYS_ERROR_PARSE_VARIABLES,
SYS_ERROR_NO_MEMORY = 300, SYS_ERROR_NO_MEMORY = 300,
SYS_ERROR_HANDLER_NOT_SET,
SYS_ERROR_UNKNOWN, SYS_ERROR_UNKNOWN,
} sys_error_code; } sys_error_code;
@ -94,6 +95,7 @@ typedef struct
time_t time; time_t time;
int msgType; int msgType;
int payloadType; int payloadType;
char payloadTypeStr[16];
void *payload; void *payload;
unsigned char sha256[32]; unsigned char sha256[32];
} parsedData; } parsedData;

View File

@ -59,7 +59,20 @@ void regCustomSaveConf(void (*custom_saveconf)(void))
CustomSaveConf = custom_saveconf; CustomSaveConf = custom_saveconf;
} }
static sys_error_code PayloadType_1_Handler(data_message_t *MSG) static sys_error_code PayloadType1000Handler(data_message_t *MSG)
{
return SYS_ERROR_HANDLER_NOT_SET;
}
static sys_error_code PayloadType1001Handler(data_message_t *MSG)
{
return SYS_ERROR_HANDLER_NOT_SET;
}
static sys_error_code PayloadType1002Handler(data_message_t *MSG)
{
return SYS_ERROR_HANDLER_NOT_SET;
}
static sys_error_code PayloadDefaultTypeHandler(data_message_t *MSG)
{ {
struct jReadElement result; struct jReadElement result;
const char *err_br; const char *err_br;
@ -245,7 +258,6 @@ static sys_error_code DataHeaderParser(data_message_t *MSG)
else else
return SYS_ERROR_PARSE_MESSAGEID; return SYS_ERROR_PARSE_MESSAGEID;
jRead(MSG->inputDataBuffer, "{'data'{'srcid'", &result); jRead(MSG->inputDataBuffer, "{'data'{'srcid'", &result);
if (result.elements == 1) if (result.elements == 1)
{ {
@ -254,7 +266,6 @@ static sys_error_code DataHeaderParser(data_message_t *MSG)
else else
strcpy(MSG->parsedData.srcID, "FFFFFFFF"); strcpy(MSG->parsedData.srcID, "FFFFFFFF");
jRead(MSG->inputDataBuffer, "{'data'{'dstid'", &result); jRead(MSG->inputDataBuffer, "{'data'{'dstid'", &result);
if (result.elements == 1) if (result.elements == 1)
{ {
@ -263,7 +274,6 @@ static sys_error_code DataHeaderParser(data_message_t *MSG)
else else
strcpy(MSG->parsedData.dstID, "FFFFFFFF"); strcpy(MSG->parsedData.dstID, "FFFFFFFF");
//Extract 'msgtype' or throw exception //Extract 'msgtype' or throw exception
jRead(MSG->inputDataBuffer, "{'data'{'msgtype'", &result); jRead(MSG->inputDataBuffer, "{'data'{'msgtype'", &result);
if (result.elements == 1) if (result.elements == 1)
@ -282,26 +292,39 @@ static sys_error_code DataHeaderParser(data_message_t *MSG)
if (result.elements == 1) if (result.elements == 1)
{ {
MSG->parsedData.payloadType = atoi((char*) result.pValue); MSG->parsedData.payloadType = atoi((char*) result.pValue);
if (MSG->parsedData.payloadType < 1 && MSG->parsedData.payloadType > 100) jRead_string(MSG->inputDataBuffer, "{'data'{'payloadtype'", MSG->parsedData.payloadTypeStr, 16, 0);
return SYS_ERROR_PARSE_PAYLOADTYPE;
} }
else else
return SYS_ERROR_PARSE_PAYLOADTYPE; return SYS_ERROR_PARSE_PAYLOADTYPE;
sys_error_code err = SYS_ERROR_HANDLER_NOT_SET;
//ToDo move payload type from integer to string
switch (MSG->parsedData.payloadType) switch (MSG->parsedData.payloadType)
{ {
case 1: case 1000:
return PayloadType_1_Handler(MSG); err = PayloadType1000Handler(MSG);
break; break;
default: case 1001:
if (CustomPayloadTypeHandler) err = PayloadType1001Handler(MSG);
CustomPayloadTypeHandler(MSG); break;
else
return SYS_ERROR_PARSE_PAYLOADTYPE; case 1002:
} err = PayloadType1002Handler(MSG);
break;
}
if (err != SYS_ERROR_HANDLER_NOT_SET)
return err;
if (CustomPayloadTypeHandler)
err = CustomPayloadTypeHandler(MSG);
if (err != SYS_ERROR_HANDLER_NOT_SET)
return err;
return PayloadDefaultTypeHandler(MSG);
return SYS_ERROR_UNKNOWN;
} }
esp_err_t ServiceDataHandler(data_message_t *MSG) esp_err_t ServiceDataHandler(data_message_t *MSG)