📄 mvlog.c
字号:
/*-------------C file-----------------------------*/
#include "mvOs.h"
#include <stdio.h>
#include <stdarg.h>
#if defined (MV_LOG_DEBUG) || defined (MV_LOG_ERROR)
static char* mvLogMsgType[MV_MAX_MESSAGE_TYPE] = {
" (DEBUG) ",
" (DEBUG INIT) " ,
" (DEBUG_INTERRUPTS) ",
" (DEBUG SATA LINK) ",
" (DEBUG UDMA COMMAND) ",
" (DEBUG NON UDMA COMMAND) ",
" (ERROR) ",
" (DEBUG_PM) ",
};
static MV_U8 mvLogFilterMask[MV_MAX_MESSAGE_TYPE] =
{MV_DEBUG_MASK,
MV_DEBUG_INIT_MASK,
MV_DEBUG_INTERRUPTS_MASK,
MV_DEBUG_SATA_LINK_MASK,
MV_DEBUG_UDMA_COMMAND_MASK,
MV_DEBUG_NON_UDMA_COMMAND_MASK,
MV_DEBUG_ERROR_MASK,
MV_DEBUG_PM_MASK};
static MV_LOG_FILTER_HEADER mvLogInstance[MV_MAX_LOG_MODULES] =
{
{MV_FALSE, 0, NULL},
{MV_FALSE, 0, NULL},
{MV_FALSE, 0, NULL},
{MV_FALSE, 0, NULL},
{MV_FALSE, 0, NULL},
{MV_FALSE, 0, NULL},
{MV_FALSE, 0, NULL},
{MV_FALSE, 0, NULL},
};
static char szMessageBuffer[1024];
MV_BOOLEAN mvLogRegisterModule(MV_U8 moduleId, MV_U8 filterMask, char* name)
{
if (moduleId >= MV_MAX_LOG_MODULES)
{
return MV_FALSE;
}
if (mvLogInstance[moduleId].used == MV_TRUE)
{
return MV_FALSE;
}
if (name == NULL)
{
return MV_FALSE;
}
mvLogInstance[moduleId].filterMask = filterMask;
mvLogInstance[moduleId].name = name;
mvLogInstance[moduleId].used = MV_TRUE;
return MV_TRUE;
}
MV_BOOLEAN mvLogSetModuleFilter(MV_U8 moduleId, MV_U8 filterMask)
{
if (moduleId >= MV_MAX_LOG_MODULES)
{
return MV_FALSE;
}
if (mvLogInstance[moduleId].used == MV_FALSE)
{
return MV_FALSE;
}
mvLogInstance[moduleId].filterMask = filterMask;
return MV_TRUE;
}
MV_U8 mvLogGetModuleFilter(MV_U8 moduleId)
{
if (moduleId >= MV_MAX_LOG_MODULES)
{
return 0;
}
if (mvLogInstance[moduleId].used == MV_FALSE)
{
return 0;
}
return mvLogInstance[moduleId].filterMask;
}
void mvLogMsg(MV_U8 moduleId, MV_U8 type, char* format, ...)
{
int len;
va_list args;
if (moduleId >= MV_MAX_LOG_MODULES)
{
return;
}
if (type >= MV_MAX_MESSAGE_TYPE)
{
return;
}
if ((moduleId != MV_RAW_MSG_ID) &&
((mvLogInstance[moduleId].used == MV_FALSE) ||
((mvLogInstance[moduleId].filterMask & mvLogFilterMask[type]) == 0)))
{
return;
}
if (moduleId != MV_RAW_MSG_ID)
{
len = sprintf(szMessageBuffer, "%s%s",
mvLogInstance[moduleId].name, mvLogMsgType[type]);
}
else
{
len = 0;
}
va_start(args, format);
vsprintf(&szMessageBuffer[len], format, args);
va_end(args);
MV_LOG_PRINT(szMessageBuffer);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -