1. 增加支持读取flash配置信息
This commit is contained in:
parent
a2510a8378
commit
eeb14b7e38
@ -86,7 +86,7 @@
|
||||
#endif
|
||||
#define InitLogData() HDLogInit(NULL)
|
||||
|
||||
enum eLogLevel {
|
||||
typedef enum eLogLevel {
|
||||
kLogLevelSwitch = 0, ///< 日志开关
|
||||
kLogLevelColor, ///< 彩色日志
|
||||
kLogLevelDebug, ///< 常规调试信息
|
||||
@ -96,7 +96,19 @@ enum eLogLevel {
|
||||
kLogLevelHeap, ///< 打印堆大小信息
|
||||
kLogLevelTrace, ///< trace级别日志
|
||||
kLogLevelMax,
|
||||
};
|
||||
} eLogLevel;
|
||||
|
||||
typedef uint8_t (*HDLogFlashOpt_t)(uint8_t isWrite, eLogLevel level, uint8_t value);
|
||||
/**
|
||||
* @brief 设置日志flash读写调用, 注: 配置后必须调用 HDLogOptFlashInit, 否则日志项将处于全开状态
|
||||
* @param call 日志flash读写调用
|
||||
*/
|
||||
void HDLogSetOptFlashCall(HDLogFlashOpt_t call);
|
||||
|
||||
/**
|
||||
* @brief 日志flash初始化, 调用后触发日志flash回调
|
||||
*/
|
||||
void HDLogOptFlashInit();
|
||||
|
||||
/**
|
||||
* @brief 日志初始化
|
||||
|
||||
49
src/HDLog.c
49
src/HDLog.c
@ -57,6 +57,7 @@ static HBIT_DEFINE(sLogItem, kLogLevelMax);
|
||||
static uint32_t (*sGetTime)() = NULL;
|
||||
static HDLogGetTaskType_t sGetCurrTask = NULL;
|
||||
static HDLogGetStackSizeType_t sGetCurrStackSize = NULL;
|
||||
static HDLogFlashOpt_t sFlashCall = NULL;
|
||||
#if USE_SYS_CHECK_HEAP
|
||||
static HDLogGetStackSizeType_t sGetCurrHeapSize = NULL;
|
||||
#endif
|
||||
@ -190,20 +191,56 @@ static void LogShell(HSHELL_FUNC_ARGS)
|
||||
uint8_t lastStatus = HBitGet(sLogItem, key);
|
||||
HBitSet(sLogItem, key, arg1);
|
||||
HSHELL_PRINTFL("logStatus[%d]->[%d]", lastStatus, HBitGet(sLogItem, key));
|
||||
if (sFlashCall != NULL)
|
||||
{
|
||||
sFlashCall(1, key, arg1);
|
||||
}
|
||||
}
|
||||
|
||||
void HDLogSetOptFlashCall(HDLogFlashOpt_t call)
|
||||
{
|
||||
sFlashCall = call;
|
||||
}
|
||||
|
||||
void HDLogOptFlashInit()
|
||||
{
|
||||
if (sFlashCall == NULL)
|
||||
{
|
||||
return ;
|
||||
}
|
||||
|
||||
for (int i = 0; i < kLogLevelMax; ++i)
|
||||
{
|
||||
uint8_t enable = sFlashCall(0, i, 0);
|
||||
HBitSet(sLogItem, i, enable);
|
||||
}
|
||||
}
|
||||
|
||||
void HDLogInit(uint32_t (*getTime)())
|
||||
{
|
||||
sGetTime = getTime;
|
||||
HSHellRegister(sLogMatch, sizeof(sLogMatch) / sizeof(HShellMatch), LogShell, 1);
|
||||
HBitSet(sLogItem, kLogLevelSwitch, 1);
|
||||
HBitSet(sLogItem, kLogLevelDebug, 1);
|
||||
HBitSet(sLogItem, kLogLevelError, 1);
|
||||
HBitSet(sLogItem, kLogLevelHex, 0);
|
||||
HBitSet(sLogItem, kLogLevelStack, 1);
|
||||
if (sFlashCall == NULL)
|
||||
{
|
||||
HBitSet(sLogItem, kLogLevelSwitch, 1);
|
||||
HBitSet(sLogItem, kLogLevelDebug, 1);
|
||||
HBitSet(sLogItem, kLogLevelError, 1);
|
||||
HBitSet(sLogItem, kLogLevelHex, 0);
|
||||
HBitSet(sLogItem, kLogLevelStack, 1);
|
||||
#ifdef USE_RTOS
|
||||
HBitSet(sLogItem, kLogLevelHeap, 1);
|
||||
HBitSet(sLogItem, kLogLevelHeap, 1);
|
||||
#endif
|
||||
}
|
||||
else
|
||||
{
|
||||
// 如果配置了flash调用, 全部打开, 延后读取, 避免flash未初始化
|
||||
for (int i = 0; i < kLogLevelMax; ++i)
|
||||
{
|
||||
HBitSet(sLogItem, i, 1);
|
||||
}
|
||||
|
||||
HBitSet(sLogItem, kLogLevelColor, 0);
|
||||
}
|
||||
|
||||
#if USE_RTOS_LOG_LOCK
|
||||
if (sLogMutex == NULL)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user