Midnight Sun Firmware
Loading...
Searching...
No Matches
log.h
1
#pragma once
2
3
/************************************************************************************************
4
* @file log.h
5
*
6
* @brief Header file for the logging library used to debug all modules
7
*
8
* @date 2024-11-02
9
* @author Midnight Sun Team #24 - MSXVI
10
************************************************************************************************/
11
12
/* Standard library Headers */
13
#include <stdio.h>
14
#include <stdlib.h>
15
16
/* Inter-component Headers */
17
#include "FreeRTOS.h"
18
#include "task.h"
19
20
/* Intra-component Headers */
21
#include "gpio.h"
22
#include "ms_semaphore.h"
23
#include "tasks.h"
24
#include "uart.h"
25
32
#define MAX_LOG_SIZE (size_t)200
33
#define LOG_TIMEOUT_MS 10
34
#define MS_LOG 0
35
36
#ifdef STM32L433xx
37
#define LOG_UART_PORT UART_PORT_1
38
#define LOG_GPIO_PORT GPIO_PORT_B
39
#define LOG_TX_PIN 6
40
#define LOG_RX_PIN 7
41
#endif
42
43
#ifdef STM32L4P5xx
44
#define LOG_UART_PORT UART_PORT_1
45
#define LOG_GPIO_PORT GPIO_PORT_A
46
#define LOG_TX_PIN 9
47
#define LOG_RX_PIN 10
48
#endif
49
50
#ifdef STM32L496xx
51
#define LOG_UART_PORT UART_PORT_3
52
#define LOG_GPIO_PORT GPIO_PORT_C
53
#define LOG_TX_PIN 10
54
#define LOG_RX_PIN 11
55
#endif
56
57
#ifndef LOG_UART_PORT
58
#define LOG_UART_PORT UART_PORT_1
59
#endif
60
61
#ifndef LOG_GPIO_PORT
62
#define LOG_GPIO_PORT GPIO_PORT_B
63
#endif
64
65
#ifndef LOG_TX_PIN
66
#define LOG_TX_PIN 6
67
#endif
68
69
#ifndef LOG_RX_PIN
70
#define LOG_RX_PIN 7
71
#endif
72
73
#ifndef IN_ORDER_LOGS
74
#define IN_ORDER_LOGS 1
75
#endif
76
77
typedef
enum
{
78
LOG_LEVEL_DEBUG
= 0,
79
LOG_LEVEL_WARN
,
80
LOG_LEVEL_CRITICAL
,
81
NUM_LOG_LEVELS
,
82
}
LogLevel
;
83
84
extern
char
g_log_buffer[MAX_LOG_SIZE];
85
extern
UartSettings
log_uart_settings;
86
87
#define LOG_DEBUG(fmt, ...) LOG(LOG_LEVEL_DEBUG, fmt, ##__VA_ARGS__)
88
#define LOG_WARN(fmt, ...) LOG(LOG_LEVEL_WARN, fmt, ##__VA_ARGS__)
89
#define LOG_CRITICAL(fmt, ...) LOG(LOG_LEVEL_CRITICAL, fmt, ##__VA_ARGS__)
90
91
#define log_init() \
92
{ uart_init(LOG_UART_PORT, &log_uart_settings); }
93
94
#ifdef MS_PLATFORM_X86
95
#define LOG(level, fmt, ...) printf("[%u] %s:%u: " fmt, (level), __FILE__, __LINE__, ##__VA_ARGS__)
96
#elif MS_DEBUG_LOG
97
#define LOG(level, fmt, ...) \
98
do { \
99
if (xTaskGetSchedulerState() == taskSCHEDULER_RUNNING) { \
100
size_t msg_size = (size_t)snprintf(g_log_buffer, MAX_LOG_SIZE, "\r[%u] %s:%u: " fmt, (level), __FILE__, __LINE__, ##__VA_ARGS__); \
101
uart_tx(LOG_UART_PORT, (uint8_t *)g_log_buffer, msg_size); \
102
} \
103
} while (0)
104
#else
105
#define LOG(level, fmt, ...) \
106
do { \
107
} while (0);
108
#endif
109
LogLevel
LogLevel
Definition
log.h:77
LOG_LEVEL_CRITICAL
@ LOG_LEVEL_CRITICAL
Definition
log.h:80
NUM_LOG_LEVELS
@ NUM_LOG_LEVELS
Definition
log.h:81
LOG_LEVEL_DEBUG
@ LOG_LEVEL_DEBUG
Definition
log.h:78
LOG_LEVEL_WARN
@ LOG_LEVEL_WARN
Definition
log.h:79
UartSettings
UART Settings.
Definition
network.h:67
libraries
ms-common
inc
log.h
Generated by
1.9.8