/** ****************************************************************************** * @file tae32f53xx_dbg.h * @author MCD Application Team * @brief The macro definitions for dbg * ============================================================================== ##### How to use ##### ============================================================================== * * If you want to use debug macro, you can use as following steps: * * Step 1: Macros in "tae32f53xx_dbg_conf.h" * a. Define the TAE_USING_DBG to enable the feature * #define TAE_USING_DBG * * b. Define the print interface for dbg * #define TAE_DBG_PRINT(...) printf(__VA_ARGS__) * * c. Other optional macros define, such as TAE_USING_DBG_COLOR * * Step 2: Macros in your C/C++ file * a. Define the debug tag and level for dbg. If you did not define this, default definition will be used. * #define DBG_TAG "TAG" // must be string * #define DBG_LVL DBG_INFO // others DBG_ERROR, DBG_WARNING, DBG_LOG. * DBG_LOG > DBG_INFO > DBG_WARNING > DBG_ERROR * * b. Include this header file * #include "tae32f53xx_dbg.h" // this must after of DBG_LVL, DBG_TAG or other options * * Step 3: LOG_X macro to print out logs in your C/C++ file * PLEASE NOTE: LOG_X is related to the DBG_LVL that defined in Step 2. Using LOG_X * witch higher then DBG_LVL will be ignored. * LOG_D("this is a debug log!"); * LOG_I("this is a info log!") * LOG_W("this is a warning log!") * LOG_E("this is a error log!"); * ****************************************************************************** * @attention * *

© Copyright (c) 2020 Tai-Action. * All rights reserved.

* * This software is licensed by Tai-Action under BSD 3-Clause license, * the "License"; You may not use this file except in compliance with the * License. You may obtain a copy of the License at: * opensource.org/licenses/BSD-3-Clause * ****************************************************************************** */ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef _TAE32F53XX_DBG_H_ #define _TAE32F53XX_DBG_H_ #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /* Includes ------------------------------------------------------------------*/ #include "tae32f53xx_dbg_conf.h" /** @addtogroup TAE_Utilities * @{ */ /** @defgroup TAE_Debug TAE Debug * @brief TAE Debug * @{ */ /* Exported types ------------------------------------------------------------*/ /* Exported constants --------------------------------------------------------*/ /** @defgroup TAE_Debug_Exported_Constants TAE Debug Exported Constants * @brief TAE Debug Exported Constants * @{ */ #ifdef TAE_USING_DBG /* DEBUG level */ #define DBG_NONE 0 #define DBG_ERROR 1 #define DBG_WARNING 2 #define DBG_INFO 3 #define DBG_LOG 4 /* The color for terminal (foreground) */ #define BLACK 30 #define RED 31 #define GREEN 32 #define YELLOW 33 #define BLUE 34 #define PURPLE 35 #define CYAN 36 #define WHITE 37 #define CLEAR_ALL 0 #ifndef DBG_TAG #define DBG_TAG "DBG" #endif #ifndef DBG_LVL #define DBG_LVL DBG_WARNING #endif #ifndef TAE_DBG_PRINT #define TAE_DBG_PRINT(fmt, ...) #endif #endif /* TAE_USING_DBG */ /** * @} */ /* Exported macro ------------------------------------------------------------*/ /** @defgroup TAE_Debug_Exported_Macros TAE Debug Exported Macros * @brief TAE Debug Exported Macros * @{ */ #ifdef TAE_USING_DBG #ifdef TAE_USING_DBG_COLOR #define _DBG_COLOR(color) TAE_DBG_PRINT("\033["#color"m") #define _DBG_LOG_HEAD(lvl_name, color) TAE_DBG_PRINT("\033["#color"m[" lvl_name "@" DBG_TAG "] ") #define _DBG_LOG_END() TAE_DBG_PRINT("\033[0m") #else #define _DBG_COLOR(color) #define _DBG_LOG_HEAD(lvl_name, color) TAE_DBG_PRINT("[" lvl_name "@" DBG_TAG "] ") #define _DBG_LOG_END() TAE_DBG_PRINT("") #endif /* TAE_USING_DBG_COLOR */ #define DBG_LogRaw(...) TAE_DBG_PRINT(__VA_ARGS__) #define DBG_Log(lvl_name, color, fmt, ...) \ do { \ _DBG_LOG_HEAD(lvl_name, color); \ TAE_DBG_PRINT(fmt, ##__VA_ARGS__); \ _DBG_COLOR(0); \ } while (0) #define DBG_LogLine(lvl_name, color, fmt, ...) \ do { \ _DBG_LOG_HEAD(lvl_name, color); \ TAE_DBG_PRINT(fmt, ##__VA_ARGS__); \ _DBG_COLOR(0); \ _DBG_LOG_END(); \ } while (0) #define DBG_Here() \ if ((DBG_LVL) >= DBG_INFO) { \ _DBG_LOG_HEAD("I", 32); \ TAE_DBG_PRINT("Here is %s:%d", __FUNCTION__, \ __LINE__); \ _DBG_COLOR(0); \ _DBG_LOG_END(); \ } #define DBG_Enter() \ if ((DBG_LVL) >= DBG_INFO) { \ _DBG_LOG_HEAD("I", 32); \ TAE_DBG_PRINT("Enter function %s", __FUNCTION__); \ _DBG_COLOR(0); \ _DBG_LOG_END(); \ } #define DBG_Exit() \ if ((DBG_LVL) >= DBG_INFO) { \ _DBG_LOG_HEAD("I", 32); \ TAE_DBG_PRINT("Exit function %s", __FUNCTION__); \ _DBG_COLOR(0); \ _DBG_LOG_END(); \ } #else #define DBG_Log(level, fmt, ...) #define DBG_LogLine(lvl_name, color, fmt, ...) #define DBG_LogRaw(...) #define DBG_Here() #define DBG_Enter() #define DBG_Exit() #endif /* TAE_USING_DBG */ #if (DBG_LVL >= DBG_LOG) #define LOG_D(fmt, ...) DBG_LogLine("D", CLEAR_ALL, fmt, ##__VA_ARGS__) #else #define LOG_D(fmt, ...) #endif #if (DBG_LVL >= DBG_INFO) #define LOG_I(fmt, ...) DBG_LogLine("I", GREEN, fmt, ##__VA_ARGS__) #else #define LOG_I(fmt, ...) #endif #if (DBG_LVL >= DBG_WARNING) #define LOG_W(fmt, ...) DBG_LogLine("W", YELLOW, fmt, ##__VA_ARGS__) #else #define LOG_W(fmt, ...) #endif #if (DBG_LVL >= DBG_ERROR) #define LOG_E(fmt, ...) DBG_LogLine("E", RED, fmt, ##__VA_ARGS__) #else #define LOG_E(fmt, ...) #endif #define LOG_R(...) DBG_LogRaw(__VA_ARGS__) #define LOG_Enter() DBG_Enter() #define LOG_Exit() DBG_Exit() #define LOG_Here() DBG_Here() /** * @} */ /* Exported functions --------------------------------------------------------*/ /* Private types -------------------------------------------------------------*/ /* Private variables ---------------------------------------------------------*/ /* Private constants ---------------------------------------------------------*/ /* Private macros ------------------------------------------------------------*/ /* Private functions ---------------------------------------------------------*/ /** * @} */ /** * @} */ #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* _TAE32F53XX_DBG_H_ */ /************************* (C) COPYRIGHT Tai-Action *****END OF FILE***********/