14 Star 9 Fork 0

zhangruoxu/demo

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
debug_lib.c 4.02 KB
一键复制 编辑 原始数据 按行查看 历史
zhangruoxu 提交于 2023-06-10 17:24 . 123
#include <stdarg.h>
#include "basetype.h"
#include "common.h"
//"(undo) debug device on"--->g_uiDebugFlag |= DEBUG_DEVICE;
UINT32 g_uiDebugFlag = 0;
/*
description: 实现将模块名转换为对应的模块ID的功能。
input:
pucModuleName: 模块名,一个无符号8位字符数组。
output: 无
return: 对应模块名的模块ID,一个无符号32位整数。
tip:如果模块名不匹配,则返回最大模块ID。
*/
UINT32 debuglib_modulenametoint(UINT8 *pucModuleName)
{
if (0 == strcmp("device", pucModuleName))
{
return MODULE_DEVICE;
}
if (0 == strcmp("route", pucModuleName))
{
return MODULE_ROUTE;
}
if (0 == strcmp("mac-table", pucModuleName))
{
return MODULE_MACTABLE;
}
if (0 == strcmp("packet", pucModuleName))
{
return MODULE_PACKET;
}
if (0 == strcmp("arp", pucModuleName))
{
return MODULE_ARP;
}
return MODULE_MAX;
}
/*
description: 设置调试模块。
input:
pucModuleName: 调试模块名,一个指向无符号8位整数的指针。
output: 无
return:
若调试模块名为"all",则设置所有模块为调试模式,返回ERROR_SUCCESS;
否则,将对应模块设置为调试模式,返回ERROR_SUCCESS;
若调试模块名不在指定列表中,返回MODULE_MAX。
tip:无
*/
UINT32 DebugLib_Set(UINT8 *pucModuleName)
{
UINT32 uiModuleId;
if (0 == strcmp("all", pucModuleName))
{
g_uiDebugFlag = 0xFFFFFFFF;
}
else
{
uiModuleId = debuglib_modulenametoint(pucModuleName);
if (uiModuleId != MODULE_MAX)
{
g_uiDebugFlag |= (1 << uiModuleId);
}
else
{
return MODULE_MAX;
}
}
return ERROR_SUCCESS;
}
/*
description: 取消设置指定模块的调试标志位。
input:
pucModuleName: 模块名,一个指向字符数组的指针。
output: 无
return:
成功:ERROR_SUCCESS(0)
失败:MODULE_MAX(4294967295)
tip:无
*/
UINT32 DebugLib_UnSet(UINT8 *pucModuleName)
{
UINT32 uiModuleId;
if (0 == strcmp("all", pucModuleName))
{
g_uiDebugFlag = 0;
}
else
{
uiModuleId = debuglib_modulenametoint(pucModuleName);
if (uiModuleId != MODULE_MAX)
{
g_uiDebugFlag &= (~(1 << uiModuleId));
}
else
{
return MODULE_MAX;
}
}
return ERROR_SUCCESS;
}
/*
description: 获取调试标志位。
input: 无
output: 无
return: 调试标志位。
tip:无
*/
UINT32 DebugLib_Get(VOID)
{
return g_uiDebugFlag;
}
/*
description: 按照指定模块ID打印输出调试信息。
input:
uiModuleId: 模块ID,一个无符号32位整数。
format: 字符串格式化信息。
...: 可变参数列表。
output: 无
return: 无
tip:无。
*/
VOID DebugLib_Printf(UINT32 uiModuleId, const char *format, ...)
{
if ((1 << uiModuleId) & g_uiDebugFlag)
{
va_list argPtr;
int count;
va_start(argPtr, format); /* 获取可变参数列表 */
fflush(stdout); /* 强制刷新输出缓冲区 */
count = vfprintf(stderr, format, argPtr); /* 将信息输出到标准出错流设备 */
va_end(argPtr); /* 可变参数列表结束 */
}
return;
}
// DebugPrintf(DEBUG_DEVICE, args);
// static int debugLevel = 0;/*调试等级*/
///*与主函数内加上这个来进行等级划分,建议有需要再使用这部分内容,如不明白请看说明或联系yyh*/
///*
// if (argc < 2)
// {
// debugLevel = 0;
// }
// else
// {
// debugLevel = stoi(argv[1]);
// }
//*/
//
///*
// Input:你想要打印到日志的变量
// Output:你输入的变量
// Return: NULL
// 函数功能:打印日志用于调试*/
// static void DebugPrintf(const char* format, ...)
//{
// if (debugLevel >= 0)//不考虑等级功能把此处改成0为打印日志,1为不打印日志
// {
// va_list argPtr;
// int count;
//
// va_start(argPtr, format); /* 获取可变参数列表 */
// fflush(stdout); /* 强制刷新输出缓冲区 */
// count = vfprintf(stderr, format, argPtr); /* 将信息输出到标准出错流设备 */
// va_end(argPtr); /* 可变参数列表结束 */
// }
// }
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/zhangruoxudada/demo.git
git@gitee.com:zhangruoxudada/demo.git
zhangruoxudada
demo
demo
master

搜索帮助

0d507c66 1850385 C8b1a773 1850385