1. 增加支持读取flash配置信息

This commit is contained in:
coffee 2025-08-11 16:33:30 +08:00
parent a2510a8378
commit eeb14b7e38
2 changed files with 57 additions and 8 deletions

View File

@ -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

View File

@ -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)