1
0
mirror of https://github.com/NevermindZZT/letter-shell.git synced 2025-01-21 10:02:54 +08:00

新增 log组件适配shell锁

This commit is contained in:
靳春幸 2021-12-24 12:17:45 +08:00
parent 5d3607af91
commit e70221db15

View File

@ -27,6 +27,58 @@
Log *logList[LOG_MAX_NUMBER] = {0}; Log *logList[LOG_MAX_NUMBER] = {0};
static char logBuffer[LOG_BUFFER_SIZE]; static char logBuffer[LOG_BUFFER_SIZE];
#if SHELL_USING_LOCK == 1
/**
* @brief log对象
* @param log log对象
*/
static void logLock(Log *log)
{
if (log == LOG_ALL_OBJ)
{
for (short i = 0; i < LOG_MAX_NUMBER; i++)
{
if (logList[i] && logList[i]->active)
{
if (logList[i]->shell)
{
SHELL_LOCK(logList[i]->shell);
}
}
}
}
else if (log->shell)
{
SHELL_LOCK(log->shell);
}
}
/**
* @brief log对象
* @param log log对象
*/
static void logUnlock(Log *log)
{
if (log == LOG_ALL_OBJ)
{
for (short i = 0; i < LOG_MAX_NUMBER; i++)
{
if (logList[i] && logList[i]->active)
{
if (logList[i]->shell)
{
SHELL_UNLOCK(logList[i]->shell);
}
}
}
}
else if (log->shell)
{
SHELL_UNLOCK(log->shell);
}
}
#endif /* SHELL_USING_LOCK == 1 */
/** /**
* @brief log对象 * @brief log对象
* *
@ -102,6 +154,9 @@ logSetLevel, logSetLevel, set log level\r\n logSetLevel [log] [level]);
*/ */
static void logWriteBuffer(Log *log, LogLevel level, char *buffer, short len) static void logWriteBuffer(Log *log, LogLevel level, char *buffer, short len)
{ {
#if SHELL_USING_LOCK == 1
logLock(log);
#endif /* SHELL_USING_LOCK == 1 */
if (log == LOG_ALL_OBJ) if (log == LOG_ALL_OBJ)
{ {
for (short i = 0; i < LOG_MAX_NUMBER; i++) for (short i = 0; i < LOG_MAX_NUMBER; i++)
@ -118,6 +173,9 @@ static void logWriteBuffer(Log *log, LogLevel level, char *buffer, short len)
{ {
log->write(logBuffer, len); log->write(logBuffer, len);
} }
#if SHELL_USING_LOCK == 1
logUnlock(log);
#endif /* SHELL_USING_LOCK == 1 */
} }
/** /**
@ -132,15 +190,20 @@ void logWrite(Log *log, LogLevel level, char *fmt, ...)
{ {
va_list vargs; va_list vargs;
short len; short len;
#if SHELL_USING_LOCK == 1
logLock(log);
#endif /* SHELL_USING_LOCK == 1 */
va_start(vargs, fmt); va_start(vargs, fmt);
len = vsnprintf(logBuffer, LOG_BUFFER_SIZE - 1, fmt, vargs); len = vsnprintf(logBuffer, LOG_BUFFER_SIZE - 1, fmt, vargs);
va_end(vargs); va_end(vargs);
logWriteBuffer(log, level, logBuffer, len); logWriteBuffer(log, level, logBuffer, len);
#if SHELL_USING_LOCK == 1
logUnlock(log);
#endif /* SHELL_USING_LOCK == 1 */
} }
/** /**
* @brief 16 * @brief 16
* *
@ -159,7 +222,9 @@ void logHexDump(Log *log, LogLevel level, void *base, unsigned int length)
{ {
return; return;
} }
#if SHELL_USING_LOCK == 1
logLock(log);
#endif /* SHELL_USING_LOCK == 1 */
len = snprintf(logBuffer, LOG_BUFFER_SIZE - 1, "memory of 0x%08x, size: %d:\r\n%s", len = snprintf(logBuffer, LOG_BUFFER_SIZE - 1, "memory of 0x%08x, size: %d:\r\n%s",
(unsigned int)base, length, memPrintHead); (unsigned int)base, length, memPrintHead);
logWriteBuffer(log, level, logBuffer, len); logWriteBuffer(log, level, logBuffer, len);
@ -216,6 +281,9 @@ void logHexDump(Log *log, LogLevel level, void *base, unsigned int length)
length -= 16; length -= 16;
printLen = 0; printLen = 0;
} }
#if SHELL_USING_LOCK == 1
logUnlock(log);
#endif /* SHELL_USING_LOCK == 1 */
} }
#if SHELL_USING_COMPANION == 1 #if SHELL_USING_COMPANION == 1
SHELL_EXPORT_CMD_AGENCY( SHELL_EXPORT_CMD_AGENCY(