#include "log.h" #include static LogLevel current_level = LOG_DEBUG; // LOG_WARN;//LOG_DEBUG; void log_set_level(LogLevel level) { current_level = level; } /* Output log message via USART1 (HAL) */ static void _log_print(LogLevel level, const char *tag, const char *fmt, va_list args) { if (current_level <= level) { char buf[256]; int len = vsnprintf(buf, sizeof(buf) - 2, fmt, args); /* USART1 already inited when log is called */ extern UART_HandleTypeDef huart1; HAL_UART_Transmit(&huart1, (uint8_t *)"[", 1, 100); HAL_UART_Transmit(&huart1, (uint8_t *)tag, strlen(tag), 100); HAL_UART_Transmit(&huart1, (uint8_t *)"] ", 2, 100); HAL_UART_Transmit(&huart1, (uint8_t *)buf, len, 500); HAL_UART_Transmit(&huart1, (uint8_t *)"\r\n", 2, 100); } } void log_debug(const char *fmt, ...) { va_list args; va_start(args, fmt); _log_print(LOG_DEBUG, "DEBUG", fmt, args); va_end(args); } void log_info(const char *fmt, ...) { va_list args; va_start(args, fmt); _log_print(LOG_INFO, "INFO", fmt, args); va_end(args); } void log_warn(const char *fmt, ...) { va_list args; va_start(args, fmt); _log_print(LOG_WARN, "WARN", fmt, args); va_end(args); } void log_error(const char *fmt, ...) { va_list args; va_start(args, fmt); _log_print(LOG_ERROR, "ERROR", fmt, args); va_end(args); }