/* * 模块名称:Unified Debug Logging * 模块功能:提供统一的调试输出宏,支持 DEBUG / INFO / ERROR 三级日志控制 * 参考 FlashDB FDB_DEBUG/FDB_INFO 设计模式 * 使用方法: * 1. 在 dbg_cfg.h 中定义 DBG_ENABLE(总开关)和 DBG_DEBUG_ENABLE(DEBUG 级别) * 2. 每个 .c 文件在包含本文件前定义 DBG_TAG,如: * #define DBG_TAG "[CH395]" * #include "dbg_log.h" * 适用平台:所有 BSP 驱动 * 作者:王建锋 * 创建日期:2026-07-18 * 修改记录: * 2026-07-18 王建锋 创建初始版本 */ #ifndef __DBG_LOG_H #define __DBG_LOG_H #ifdef __cplusplus extern "C" { #endif #include #include "dbg_cfg.h" /* * 总开关:DBG_ENABLE * 定义 → 输出 DBG_ERROR / DBG_INFO;若 DBG_DEBUG_ENABLE 也定义则输出 DBG_DEBUG * 不定义 → 所有输出宏为空操作(release 版本) * 在 net_config.h 或编译器预定义中控制 */ #ifdef DBG_ENABLE /* * 可重定向的打印函数,用户可在编译选项或 net_config.h 中预定义 * #define DBG_PRINT(...) my_printf(__VA_ARGS__) */ #ifndef DBG_PRINT #define DBG_PRINT(...) printf(__VA_ARGS__) #endif /* * 模块标签默认值,每个 .c 文件应在包含本文件前定义 DBG_TAG * #define DBG_TAG "[CH395]" */ #ifndef DBG_TAG #define DBG_TAG "" #endif /* * DBG_ERROR - 错误输出,受 DBG_ENABLE 控制 */ #define DBG_ERROR(fmt, ...) do { \ DBG_PRINT("[ERR]" DBG_TAG " " fmt "\r\n", ##__VA_ARGS__); \ } while (0) /* * DBG_INFO - 信息输出,受 DBG_ENABLE 控制 */ #define DBG_INFO(fmt, ...) do { \ DBG_PRINT(DBG_TAG " " fmt "\r\n", ##__VA_ARGS__); \ } while (0) /* * DBG_DEBUG - 调试输出,需 DBG_ENABLE + DBG_DEBUG_ENABLE 同时定义 */ #ifdef DBG_DEBUG_ENABLE #define DBG_DEBUG(fmt, ...) do { \ DBG_PRINT(DBG_TAG "(%s:%d) " fmt "\r\n", __func__, __LINE__, ##__VA_ARGS__); \ } while (0) #else #define DBG_DEBUG(fmt, ...) #endif #else /* DBG_ENABLE not defined — all debug output disabled */ #define DBG_ERROR(fmt, ...) #define DBG_INFO(fmt, ...) #define DBG_DEBUG(fmt, ...) #endif /* DBG_ENABLE */ #ifdef __cplusplus } #endif #endif /* __DBG_LOG_H */