|
|
@ -4,14 +4,14 @@ using namespace iflytop; |
|
|
|
using namespace std; |
|
|
|
#define TAG "ZIProtocolParser"
|
|
|
|
|
|
|
|
#define PROCESS_PACKET_BEGIN(var_cmdid, var_moduleType) \
|
|
|
|
int32_t* param = (int32_t*)data; \ |
|
|
|
int paramNum = (len - sizeof(cmd_header_t)) / sizeof(int32_t); \ |
|
|
|
if (cmdid == var_cmdid) { \ |
|
|
|
auto* mod = dynamic_cast<var_moduleType*>(module); \ |
|
|
|
if (mod == nullptr) { \ |
|
|
|
m_cancmder->sendErrorAck(rxcmd, err::kce_operation_not_support); \ |
|
|
|
return; \ |
|
|
|
#define PROCESS_PACKET_BEGIN(var_cmdid, var_moduleType) \
|
|
|
|
int32_t* param __attribute__((__unused__)) = (int32_t*)data; \ |
|
|
|
int paramNum __attribute__((__unused__)) = (len - sizeof(cmd_header_t)) / sizeof(int32_t); \ |
|
|
|
if (cmdid == var_cmdid) { \ |
|
|
|
auto* mod = dynamic_cast<var_moduleType*>(module); \ |
|
|
|
if (mod == nullptr) { \ |
|
|
|
m_cancmder->sendErrorAck(rxcmd, err::kce_operation_not_support); \ |
|
|
|
return; \ |
|
|
|
} |
|
|
|
|
|
|
|
#define CHECK_PARAM_NUM(num) \
|
|
|
@ -30,11 +30,13 @@ using namespace std; |
|
|
|
} |
|
|
|
|
|
|
|
#define PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, XP, XACK, ...) \
|
|
|
|
PROCESS_PACKET_BEGIN(var_cmdid, var_moduleType) \ |
|
|
|
CHECK_PARAM_NUM(XP) \ |
|
|
|
int32_t ack[XACK + 1] = {0}; \ |
|
|
|
int32_t ecode = mod->var_funcname(__VA_ARGS__); \ |
|
|
|
PROCESS_PACKET_XX_END(XACK) |
|
|
|
{ \ |
|
|
|
PROCESS_PACKET_BEGIN(var_cmdid, var_moduleType) \ |
|
|
|
CHECK_PARAM_NUM(XP) \ |
|
|
|
int32_t ack[XACK + 1] = {0}; \ |
|
|
|
int32_t ecode = mod->var_funcname(__VA_ARGS__); \ |
|
|
|
PROCESS_PACKET_XX_END(XACK) \ |
|
|
|
} |
|
|
|
|
|
|
|
#define PROCESS_PACKET_00(var_cmdid, var_moduleType, var_funcname) PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, 0, 0)
|
|
|
|
#define PROCESS_PACKET_01(var_cmdid, var_moduleType, var_funcname) PROCESS_PACKET_XX(var_cmdid, var_moduleType, var_funcname, 0, 1, &ack[1])
|
|
|
|