refactor: convert log macros to functions
reduces program size by ~1/3rd 33k -> 19k
This commit is contained in:
parent
6145508e8b
commit
11a2121fd8
@ -93,8 +93,7 @@ static inline void __swo_print(unsigned int channel, const char *str) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[[maybe_unused]]
|
static inline void debug_clear_console() {
|
||||||
static void debug_clear_console() {
|
|
||||||
for (int i = 0; i < LOG_LEVEL_NOISY; i++) {
|
for (int i = 0; i < LOG_LEVEL_NOISY; i++) {
|
||||||
#if USE_ANSI_ESCAPE_CODES
|
#if USE_ANSI_ESCAPE_CODES
|
||||||
__swo_print(i, "\033[2J\033[;H"); // clear screen
|
__swo_print(i, "\033[2J\033[;H"); // clear screen
|
||||||
@ -104,44 +103,58 @@ static void debug_clear_console() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#define debug_log(level, msg, ...) \
|
[[gnu::format(printf, 2, 3)]]
|
||||||
do { \
|
static inline void debug_log(unsigned int level, const char *msg, ...) {
|
||||||
if (DEBUG_CHANNEL_ENABLED(level)) { \
|
if (!DEBUG_CHANNEL_ENABLED(level)) {
|
||||||
char __swo_buffer[MAX_MESSAGE_LENGTH]; \
|
return;
|
||||||
size_t len = \
|
}
|
||||||
snprintf(__swo_buffer, sizeof(__swo_buffer), msg, ##__VA_ARGS__); \
|
|
||||||
__swo_putc('\n', level); \
|
char __swo_buffer[MAX_MESSAGE_LENGTH];
|
||||||
/* Print timestamp if enabled */ \
|
va_list args;
|
||||||
if (PRINT_TIMESTAMP) { \
|
va_start(args, msg);
|
||||||
char __time_buffer[16]; \
|
size_t len = vsnprintf(__swo_buffer, sizeof(__swo_buffer), msg, args);
|
||||||
if (USE_ANSI_ESCAPE_CODES) { \
|
va_end(args);
|
||||||
snprintf(__time_buffer, sizeof(__time_buffer), \
|
|
||||||
"\033[90m[%lu]\033[0m ", HAL_GetTick()); \
|
__swo_putc('\n', level);
|
||||||
} else { \
|
|
||||||
snprintf(__time_buffer, sizeof(__time_buffer), "[%lu] ", \
|
/* Print timestamp if enabled */
|
||||||
HAL_GetTick()); \
|
if (PRINT_TIMESTAMP) {
|
||||||
} \
|
char __time_buffer[16];
|
||||||
__swo_print(level, __time_buffer); \
|
if (USE_ANSI_ESCAPE_CODES) {
|
||||||
} \
|
snprintf(__time_buffer, sizeof(__time_buffer),
|
||||||
__swo_print(level, log_level_names[level]); \
|
"\033[90m[%lu]\033[0m ", HAL_GetTick());
|
||||||
__swo_print(level, __swo_buffer); \
|
} else {
|
||||||
if (len >= sizeof(__swo_buffer)) { \
|
snprintf(__time_buffer, sizeof(__time_buffer), "[%lu] ",
|
||||||
__swo_print(level, " [message length exceeded] "); \
|
HAL_GetTick());
|
||||||
} \
|
}
|
||||||
} \
|
__swo_print(level, __time_buffer);
|
||||||
} while (0)
|
}
|
||||||
|
|
||||||
|
__swo_print(level, log_level_names[level]);
|
||||||
|
__swo_print(level, __swo_buffer);
|
||||||
|
|
||||||
|
if (len >= sizeof(__swo_buffer)) {
|
||||||
|
__swo_print(level, " [message length exceeded] ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#define debug_log_cont(level, msg, ...) \
|
[[gnu::format(printf, 2, 3)]]
|
||||||
do { \
|
static inline void debug_log_cont(unsigned int level, const char *msg, ...) {
|
||||||
if (DEBUG_CHANNEL_ENABLED(level)) { \
|
if (!DEBUG_CHANNEL_ENABLED(level)) {
|
||||||
char __swo_buffer[MAX_MESSAGE_LENGTH]; \
|
return;
|
||||||
size_t len = \
|
}
|
||||||
snprintf(__swo_buffer, sizeof(__swo_buffer), msg, ##__VA_ARGS__); \
|
|
||||||
__swo_print(level, __swo_buffer); \
|
char __swo_buffer[MAX_MESSAGE_LENGTH];
|
||||||
if (len >= sizeof(__swo_buffer)) { \
|
va_list args;
|
||||||
__swo_print(level, " [message length exceeded] "); \
|
va_start(args, msg);
|
||||||
} \
|
size_t len = vsnprintf(__swo_buffer, sizeof(__swo_buffer), msg, args);
|
||||||
} \
|
va_end(args);
|
||||||
} while (0)
|
|
||||||
|
__swo_print(level, __swo_buffer);
|
||||||
|
|
||||||
|
if (len >= sizeof(__swo_buffer)) {
|
||||||
|
__swo_print(level, " [message length exceeded] ");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* __SWO_LOG_H */
|
#endif /* __SWO_LOG_H */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user