1 /* SPDX-License-Identifier: BSD-3-Clause */
2 /*
3  * Copyright (c) 2018-2021 Rockchip Electronics Co., Ltd.
4  */
5 
6 #ifndef _HAL_DEBUG_H_
7 #define _HAL_DEBUG_H_
8 
9 /** @addtogroup RK_HAL_Driver
10  *  @{
11  */
12 
13 /** @addtogroup DEBUG
14  *  @{
15  */
16 
17 /***************************** MACRO Definition ******************************/
18 
19 /* Run only for debugging, please refer to how-to-use for the definition of the specification. */
20 //#define HAL_DBG_USING_RTT_SERIAL
21 //#define HAL_DBG_USING_LIBC_PRINTF
22 #ifdef HAL_DBG_USING_RTT_SERIAL
23 #include <rthw.h>
24 #include <rtthread.h>
25 
26 #define HAL_SYSLOG rt_kprintf
27 #elif defined(HAL_DBG_USING_LIBC_PRINTF)
28 #define HAL_SYSLOG printf
29 #endif
30 
31 /** @defgroup DEBUG_Exported_Definition_Group1 Basic Definition
32  *  @{
33  */
34 
35 #ifndef HAL_SYSLOG
36 #define HAL_SYSLOG HAL_DBG_Printf
37 #endif
38 
39 #if defined(HAL_DBG_ON) && defined(HAL_DBG_INFO_ON)
40 #define HAL_DBG(fmt, arg...) HAL_SYSLOG("[HAL INFO] " fmt, ##arg)
41 #else
42 #define HAL_DBG(fmt, arg...) do { if (0) HAL_SYSLOG("[HAL INFO] " fmt, ##arg); } while (0)
43 #endif
44 
45 #if defined(HAL_DBG_ON) && defined(HAL_DBG_WRN_ON)
46 #define HAL_DBG_WRN(fmt, arg...) HAL_SYSLOG("[HAL WARNING] " fmt, ##arg)
47 #else
48 #define HAL_DBG_WRN(fmt, arg...) do { if (0) HAL_SYSLOG("[HAL WARNING] " fmt, ##arg); } while (0)
49 #endif
50 
51 #if defined(HAL_DBG_ON) && defined(HAL_DBG_ERR_ON)
52 #define HAL_DBG_ERR(fmt, arg...) HAL_SYSLOG("[HAL ERROR] " fmt, ##arg)
53 #else
54 #define HAL_DBG_ERR(fmt, arg...) do { if (0) HAL_SYSLOG("[HAL ERROR] " fmt, ##arg); } while (0)
55 #endif
56 
57 #if defined(HAL_DBG_ON) && defined(HAL_ASSERT_ON)
58 #define HAL_ASSERT(expr)                                        \
59     do {                                                        \
60         if (!(expr))                                            \
61             HAL_AssertFailed((const char *)__FILE__, __LINE__); \
62     } while (0)
63 #else
64 #define HAL_ASSERT(expr)
65 #endif
66 
67 /***************************** Structure Definition **************************/
68 
69 /** @} */
70 /***************************** Function Declare ******************************/
71 /** @defgroup DEBUG_Public_Function_Declare Public Function Declare
72  *  @{
73  */
74 
75 void HAL_AssertFailed(const char *file, uint32_t line);
76 HAL_Status HAL_DBG_HEX(char *s, void *buf, uint32_t width, uint32_t len);
77 #ifdef __GNUC__
78 __attribute__((__format__(printf, 1, 2)))
79 #endif
80 int32_t HAL_DBG_Printf(const char *format, ...);
81 
82 /** @} */
83 
84 #endif
85 
86 /** @} */
87 
88 /** @} */
89