wow-debug文件说明
项目地址:https://gitee.com/wow-iot/wow-iot7 本文件的的功能为输出打印信息,目前架构debug信息按照模块名称进行区别使用,且支持打印级别设置; 加入shell指令,可通过debug XXX on/off 来实时开启或者关闭模块的打印信息;
debug接口
//建议用户标注APP-进程名称—模块名称样式
void wow_debug(const char *mod,DebugLevel_E lev,const char *format, ...);
#if (DEBUG_DEFAULT_LEVEL >= DEBUG_LEVEL_DEBUG)
#define ModDebug_D(mod,...) wow_debug(mod,DEBUG_LEVEL_DEBUG,__VA_ARGS__);
#else
#define ModDebug_D(mod,...)
#endif
#if (DEBUG_DEFAULT_LEVEL >= DEBUG_LEVEL_INFO)
#define ModDebug_I(mod,...) wow_debug(mod,DEBUG_LEVEL_INFO,__VA_ARGS__);
#else
#define ModDebug_I(mod,...)
#endif
#if (DEBUG_DEFAULT_LEVEL >= DEBUG_LEVEL_WARN)
#define ModDebug_W(mod,...) wow_debug(mod,DEBUG_LEVEL_WARN,__VA_ARGS__);
#else
#define ModDebug_W(mod,...)
#endif
#if (DEBUG_DEFAULT_LEVEL >= DEBUG_LEVEL_ERROR)
#define ModDebug_E(mod,...) wow_debug(mod,DEBUG_LEVEL_ERROR,__VA_ARGS__);
#else
#define ModDebug_E(mod,...)
#endif
debug接口实现
void wow_debug(const char *mod,DebugLevel_E lev,const char *format, ...)
{
CHECK_RET_VOID(wow_debug_getStatus((const void*)mod));
va_list ap;
char *str = NULL;;
char buf[DEBUG_BUF_SIZE] = {0};
va_start(ap, format);
vasprintf(&str, format, ap);
va_end(ap);
int size = snprintf(buf,DEBUG_BUF_SIZE-1,"[%s][%s]:%s",mod,debug_level_str[lev],str);
#if WOW_SHELL_TTY_SUPPORT
_wow_shell_tty_write(buf,size);
#endif
#if WOW_SHELL_ETH_SUPPORT
_wow_shell_eth_write(buf,size);
#endif
free(str);
}
shell接口实现
int shell_debug(int argc, char *argv[])
{
char modbuf[MAX_NAME_SIZE] = {0};
char cmdbuf[8] = {0};
CHECK_RET_VAL(argc == 3, -1);
memset(modbuf,0,sizeof(modbuf));
strncpy(modbuf,argv[1],MIN2(strlen(argv[1]),MAX_NAME_SIZE-1));
memset(cmdbuf,0,sizeof(cmdbuf));
strncpy(cmdbuf,argv[2],7);
if(!strncmp(cmdbuf,"on",2)){
wow_debug_setStatus(modbuf,1);
}
else if(!strncmp(cmdbuf,"off",3)){
wow_debug_setStatus(modbuf,0);
}
else{
return -1;
}
return 0;
}
#define DEBUG_INFO "debug XXX on/off (XXX is the module name)"
WOW_DECLARE_SHELL_IN("debug" ,shell_debug,DEBUG_INFO);