added ulog logging system

This commit is contained in:
2024-02-10 00:25:18 +01:00
parent f3aaa5dc68
commit 2c77e1211e
3 changed files with 42 additions and 2 deletions

View File

@@ -29,12 +29,14 @@
#include "rng.h"
#include "rtc.h"
#include "sdmmc.h"
#include "tim.h"
#include "usb_device.h"
#include "gpio.h"
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "ulog.h"
#include "stdio.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@@ -65,7 +67,7 @@ static void MPU_Initialize(void);
static void MPU_Config(void);
void MX_FREERTOS_Init(void);
/* USER CODE BEGIN PFP */
void ULOG_SendLPUART(ulog_level_t level, char *msg);
/* USER CODE END PFP */
/* Private user code ---------------------------------------------------------*/
@@ -123,10 +125,17 @@ int main(void)
MX_I2C1_Init();
MX_CRC_Init();
MX_RNG_Init();
MX_TIM2_Init();
/* USER CODE BEGIN 2 */
ULOG_INIT();
ULOG_SUBSCRIBE(ULOG_SendLPUART,ULOG_DEBUG_LEVEL);
ULOG_DEBUG("Setup Logger");
HAL_GPIO_WritePin(Periph_Power_GPIO_Port,Periph_Power_Pin,GPIO_PIN_RESET);
HAL_GPIO_WritePin(CLS_POWER_GPIO_Port, CLS_POWER_Pin, GPIO_PIN_SET);
ULOG_DEBUG("Enable Power on CLS and Periph");
gCLS_DEVICE_ADDRESS = 0b10001;
ULOG_DEBUG("Setting Global CLS address to 0b10001");
ULOG_DEBUG("Init Kernel and start schedule");
/* USER CODE END 2 */
/* Init scheduler */
@@ -243,6 +252,33 @@ void PeriphCommonClock_Config(void)
void MPU_Initialize(void) {
}
#define LOG_TIMEOUT 100
#define ULOG_MAX_TIME_LENGTH 11 // 10 digits max uint32 +1 space
#define ULOG_MAX_LEVEL_LENGTH 16
#define ULOG_MAX_FORMAT_LENGTH 6
#define ULOG_SEND_BUFFER_LENGTH ULOG_MAX_MESSAGE_LENGTH + ULOG_MAX_LEVEL_LENGTH + ULOG_MAX_FORMAT_LENGTH
#define ANSI_COLOR_BLUE "\x1b[34m"
#define ANSI_COLOR_RED "\x1b[31m"
#define ANSI_COLOR_GREEN "\x1b[32m"
#define ANSI_COLOR_RESET "\x1b[0m"
static char ulog_send_buffer[ULOG_SEND_BUFFER_LENGTH] ={0};
/**
* @brief Function for sending messages over LPUART
* @param level: The logging level for the message
* @param msg: The message to be sent
*/
void ULOG_SendLPUART(ulog_level_t level, char *msg) {
uint32_t current_runtime_ms = osKernelGetTickCount();
uint32_t time_part_ms = current_runtime_ms % 1000;
uint32_t time_part_s = current_runtime_ms / 1000;
const char * leven_str = ulog_level_name(level);
uint32_t send_length = snprintf(ulog_send_buffer,ULOG_SEND_BUFFER_LENGTH,"\x1b[34m%5ld:%03ld \x1b[31m[%s]\x1b[0m -- %s\n\r", time_part_s, time_part_ms, leven_str, msg);
HAL_UART_Transmit(&hlpuart1, (const uint8_t*)ulog_send_buffer, send_length, LOG_TIMEOUT);
}
/* USER CODE END 4 */
/* MPU Configuration */