记录一个开发日常
用##统一某类函数的名字
H文件
//统一解包函数定义
#define DEF_PARSE(name) \
ParseRet Parse##name (uint8_t *p_mes,uint8_t len_mes)
//统一打包函数定义
#define DEF_PACK(name) \
PackRet Pack##name ()
//统一解包函数名格式
#define PARSE(name) \
Parse##name
//统一打包函数名格式
#define PACK(name) \
Pack##name
//指令解析函数返回值
typedef int ParseRet;
//指令打包函数返回值
typedef int PackRet;
//指令解析函数 p_mes:消息体 mes_len:消息体的长度
typedef ParseRet (* ParseFun)(uint8_t *p_mes,uint8_t len_mes);
//指令回复函数
typedef PackRet (* PackFun)();
//指令表
typedef struct {
const uint16_t cmd; //指令
ParseFun parse; //指令解析函数
PackFun pack; //指令回复函数
const uint8_t packLen;
}CmdNode;
C文件
/*--------------------------------------
函数功能: 回复获取设备信息
---------------------------------------*/
DEF_PACK(ReplyGetDevMess)
{
........
return 0;
}
/*--------------------------------------
函数功能: 解析获取设备信息
---------------------------------------*/
DEF_PARSE(GetDevMess)
{
.......
return 0;
}
CmdNode g_CmdTable[] =
{
{GET_DEV_MESS, PARSE(GetDevMess), PACK(ReplyGetDevMess), 55},
};