You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
1.7 KiB
86 lines
1.7 KiB
|
10 months ago
|
#include <bsp_Log.h>
|
||
|
|
#include <stdio.h>
|
||
|
|
|
||
|
|
|
||
|
|
struct UARTHandler* log_UART_Handler;
|
||
|
|
char log_buf[500];
|
||
|
|
void decode_log_received(uint8_t *buffer, uint16_t length);
|
||
|
|
char* EM_LOG_LEVEL_GET(const int level)
|
||
|
|
{
|
||
|
|
|
||
|
|
if (level == LOG_DEBUG)
|
||
|
|
{
|
||
|
|
return "DEBUG";
|
||
|
|
} else if (level == LOG_INFO)
|
||
|
|
{
|
||
|
|
return "INFO";
|
||
|
|
} else if (level == LOG_WARN)
|
||
|
|
{
|
||
|
|
return "WARN";
|
||
|
|
} else if (level == LOG_ERROR)
|
||
|
|
{
|
||
|
|
return "ERROR";
|
||
|
|
} else if (level == LOG_TRACE)
|
||
|
|
{
|
||
|
|
return "TRACE";
|
||
|
|
} else if (level == LOG_FATAL)
|
||
|
|
{
|
||
|
|
|
||
|
|
return "FATAL";
|
||
|
|
}
|
||
|
|
|
||
|
|
return "UNKNOW";
|
||
|
|
}
|
||
|
|
uint8_t Tx_Buf_LOG[2048];
|
||
|
|
uint16_t Size_LOG;
|
||
|
|
char LOG_LEVEL_Char= LOG_TRACE;
|
||
|
|
//char LOG_LEVEL_Char= 8;
|
||
|
|
void log_log(const int level, const char *fun, const int line, const char *fmt,
|
||
|
|
...)
|
||
|
|
{
|
||
|
|
#ifdef OPEN_LOG
|
||
|
|
if (level >= LOG_LEVEL_Char)
|
||
|
|
{
|
||
|
|
va_list arg;
|
||
|
|
va_start(arg, fmt);
|
||
|
|
char buf[100] =
|
||
|
|
{ 0 };
|
||
|
|
vsnprintf(buf, sizeof(buf), fmt, arg);
|
||
|
|
va_end(arg);
|
||
|
|
|
||
|
|
memset(Tx_Buf_LOG,'\0',sizeof(Tx_Buf_LOG));
|
||
|
|
sprintf(Tx_Buf_LOG, "[%-5s] [%s:%4d] %s \r\n", EM_LOG_LEVEL_GET(level), fun, line,\
|
||
|
|
buf);
|
||
|
|
Size_LOG=strlen(Tx_Buf_LOG);
|
||
|
|
|
||
|
|
log_UART_Handler->AddSendList(log_UART_Handler,Tx_Buf_LOG,Size_LOG,100,NULL);
|
||
|
|
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
#endif
|
||
|
|
}
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
void log_intialize(struct UARTHandler* Handler)
|
||
|
|
{
|
||
|
|
|
||
|
|
log_UART_Handler = Handler;
|
||
|
|
log_UART_Handler->Wait_time = 10; //等待10ms 最低不要低于4;
|
||
|
|
//log_UART_Handler->DispacherCallPeriod = 10; //等待10ms 最低不要低于4;
|
||
|
|
log_UART_Handler->dispacherController->DispacherCallTime = 100;
|
||
|
|
log_UART_Handler->UART_Decode=decode_log_received;
|
||
|
|
}
|
||
|
|
|
||
|
|
void decode_log_received(uint8_t *buffer, uint16_t length)
|
||
|
|
{
|
||
|
|
|
||
|
|
if(length==3)
|
||
|
|
{
|
||
|
|
LOG_LEVEL_Char=buffer[2];// 接收三个字节,第三个字节表示log 日志等级,0 时,打印出来的数据最多;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
|