#include #include 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 时,打印出来的数据最多; } }