#pragma once #include "zbase.h" extern bool g_xs_enable_log; extern uint32_t zget_ticket(void); extern void zdelay_ms(int ms); #define ZLOG_RELEASE(TAG, fmt, ...) \ if (g_xs_enable_log) { \ zlog(TAG "" fmt "\n", ##__VA_ARGS__); \ } #define ZLOGI(TAG, fmt, ...) \ if (g_xs_enable_log) { \ zlog("%08lu INFO [%-8s] " fmt "\n", zget_ticket(), TAG, ##__VA_ARGS__); \ } #define ZLOGD(TAG, fmt, ...) \ if (g_xs_enable_log) { \ zlog("%08lu DEBU [%-8s] " fmt "\n", zget_ticket(), TAG, ##__VA_ARGS__); \ } #define ZLOGE(TAG, fmt, ...) \ if (g_xs_enable_log) { \ zlog("%08lu ERRO [%-8s] " fmt "\n", zget_ticket(), TAG, ##__VA_ARGS__); \ } #define ZLOGW(TAG, fmt, ...) \ if (g_xs_enable_log) { \ zlog("%08lu WARN [%-8s] " fmt "\n", zget_ticket(), TAG, ##__VA_ARGS__); \ } #define ASSERT(cond, info) \ if (!(cond)) { \ while (1) { \ zlog("ASSERT: %s [%s:%d] %s\n", #cond, __FILE__, __LINE__, info); \ zdelay_ms(1000); \ } \ } #define ZASSERT(cond) ASSERT(cond, "") #define ZASSERT_INFO(cond, info) ASSERT(cond, info) #define ZARRAY_SIZE(arr) (sizeof(arr) / sizeof(arr[0])) void zlog_init(UART_HandleTypeDef* uart); void zlog(const char* fmt, ...); void zlog_raw(const char* info); void zlog_enable(bool enable);