1. 增加支持读取flash配置信息
This commit is contained in:
parent
a2510a8378
commit
eeb14b7e38
@ -86,7 +86,7 @@
|
|||||||
#endif
|
#endif
|
||||||
#define InitLogData() HDLogInit(NULL)
|
#define InitLogData() HDLogInit(NULL)
|
||||||
|
|
||||||
enum eLogLevel {
|
typedef enum eLogLevel {
|
||||||
kLogLevelSwitch = 0, ///< 日志开关
|
kLogLevelSwitch = 0, ///< 日志开关
|
||||||
kLogLevelColor, ///< 彩色日志
|
kLogLevelColor, ///< 彩色日志
|
||||||
kLogLevelDebug, ///< 常规调试信息
|
kLogLevelDebug, ///< 常规调试信息
|
||||||
@ -96,7 +96,19 @@ enum eLogLevel {
|
|||||||
kLogLevelHeap, ///< 打印堆大小信息
|
kLogLevelHeap, ///< 打印堆大小信息
|
||||||
kLogLevelTrace, ///< trace级别日志
|
kLogLevelTrace, ///< trace级别日志
|
||||||
kLogLevelMax,
|
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 日志初始化
|
* @brief 日志初始化
|
||||||
|
|||||||
37
src/HDLog.c
37
src/HDLog.c
@ -57,6 +57,7 @@ static HBIT_DEFINE(sLogItem, kLogLevelMax);
|
|||||||
static uint32_t (*sGetTime)() = NULL;
|
static uint32_t (*sGetTime)() = NULL;
|
||||||
static HDLogGetTaskType_t sGetCurrTask = NULL;
|
static HDLogGetTaskType_t sGetCurrTask = NULL;
|
||||||
static HDLogGetStackSizeType_t sGetCurrStackSize = NULL;
|
static HDLogGetStackSizeType_t sGetCurrStackSize = NULL;
|
||||||
|
static HDLogFlashOpt_t sFlashCall = NULL;
|
||||||
#if USE_SYS_CHECK_HEAP
|
#if USE_SYS_CHECK_HEAP
|
||||||
static HDLogGetStackSizeType_t sGetCurrHeapSize = NULL;
|
static HDLogGetStackSizeType_t sGetCurrHeapSize = NULL;
|
||||||
#endif
|
#endif
|
||||||
@ -190,12 +191,37 @@ static void LogShell(HSHELL_FUNC_ARGS)
|
|||||||
uint8_t lastStatus = HBitGet(sLogItem, key);
|
uint8_t lastStatus = HBitGet(sLogItem, key);
|
||||||
HBitSet(sLogItem, key, arg1);
|
HBitSet(sLogItem, key, arg1);
|
||||||
HSHELL_PRINTFL("logStatus[%d]->[%d]", lastStatus, HBitGet(sLogItem, key));
|
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)())
|
void HDLogInit(uint32_t (*getTime)())
|
||||||
{
|
{
|
||||||
sGetTime = getTime;
|
sGetTime = getTime;
|
||||||
HSHellRegister(sLogMatch, sizeof(sLogMatch) / sizeof(HShellMatch), LogShell, 1);
|
HSHellRegister(sLogMatch, sizeof(sLogMatch) / sizeof(HShellMatch), LogShell, 1);
|
||||||
|
if (sFlashCall == NULL)
|
||||||
|
{
|
||||||
HBitSet(sLogItem, kLogLevelSwitch, 1);
|
HBitSet(sLogItem, kLogLevelSwitch, 1);
|
||||||
HBitSet(sLogItem, kLogLevelDebug, 1);
|
HBitSet(sLogItem, kLogLevelDebug, 1);
|
||||||
HBitSet(sLogItem, kLogLevelError, 1);
|
HBitSet(sLogItem, kLogLevelError, 1);
|
||||||
@ -204,6 +230,17 @@ void HDLogInit(uint32_t (*getTime)())
|
|||||||
#ifdef USE_RTOS
|
#ifdef USE_RTOS
|
||||||
HBitSet(sLogItem, kLogLevelHeap, 1);
|
HBitSet(sLogItem, kLogLevelHeap, 1);
|
||||||
#endif
|
#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 USE_RTOS_LOG_LOCK
|
||||||
if (sLogMutex == NULL)
|
if (sLogMutex == NULL)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user