RT-Thread RTOS
1.2.0
An open source embedded real-time operating system
载入中...
搜索中...
未找到
rtdbg.h
浏览该文件的文档.
1
/*
2
* Copyright (c) 2006-2021, RT-Thread Development Team
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*
6
* Change Logs:
7
* Date Author Notes
8
* 2016-11-12 Bernard The first version
9
* 2018-05-25 armink Add simple API, such as LOG_D, LOG_E
10
*/
11
12
/*
13
* The macro definitions for debug
14
*
15
* These macros are defined in static. If you want to use debug macro, you can
16
* use as following code:
17
*
18
* In your C/C++ file, enable/disable DEBUG_ENABLE macro, and then include this
19
* header file.
20
*
21
* #define DBG_TAG "MOD_TAG"
22
* #define DBG_LVL DBG_INFO
23
* #include <rtdbg.h> // must after of DBG_LVL, DBG_TAG or other options
24
*
25
* Then in your C/C++ file, you can use LOG_X macro to print out logs:
26
* LOG_D("this is a debug log!");
27
* LOG_E("this is a error log!");
28
*/
29
30
#ifndef RT_DBG_H__
31
#define RT_DBG_H__
32
33
#include <rtconfig.h>
34
35
#ifdef __cplusplus
36
extern
"C"
{
37
#endif
38
39
/* the debug log will force enable when RT_USING_DEBUG macro is defined */
40
#if defined(RT_USING_DEBUG) && !defined(DBG_ENABLE)
41
#define DBG_ENABLE
42
#endif
43
44
/* it will force output color log when RT_DEBUGING_COLOR macro is defined */
45
#if defined(RT_DEBUGING_COLOR) && !defined(DBG_COLOR)
46
#define DBG_COLOR
47
#endif
48
49
/* for dlog */
50
#ifdef PKG_USING_DLOG
51
#include <dlog.h>
52
#else
53
#define DLOG(...)
54
#endif
55
56
#if defined(RT_USING_ULOG)
57
/* using ulog compatible with rtdbg */
58
#include <ulog.h>
59
#else
60
61
/* DEBUG level */
62
#define DBG_ERROR 0
63
#define DBG_WARNING 1
64
#define DBG_INFO 2
65
#define DBG_LOG 3
66
67
#ifdef DBG_TAG
68
#ifndef DBG_SECTION_NAME
69
#define DBG_SECTION_NAME DBG_TAG
70
#endif
71
#else
72
/* compatible with old version */
73
#ifndef DBG_SECTION_NAME
74
#define DBG_SECTION_NAME "DBG"
75
#endif
76
#endif
/* DBG_TAG */
77
78
#ifdef DBG_ENABLE
79
80
#ifdef DBG_LVL
81
#ifndef DBG_LEVEL
82
#define DBG_LEVEL DBG_LVL
83
#endif
84
#else
85
/* compatible with old version */
86
#ifndef DBG_LEVEL
87
#define DBG_LEVEL DBG_WARNING
88
#endif
89
#endif
/* DBG_LVL */
90
91
/*
92
* The color for terminal (foreground)
93
* BLACK 30
94
* RED 31
95
* GREEN 32
96
* YELLOW 33
97
* BLUE 34
98
* PURPLE 35
99
* CYAN 36
100
* WHITE 37
101
*/
102
#ifdef DBG_COLOR
103
#define _DBG_COLOR(n) rt_kprintf("\033["#n"m")
104
#define _DBG_LOG_HDR(lvl_name, color_n) \
105
rt_kprintf("\033["#color_n"m[" lvl_name "/" DBG_SECTION_NAME "] ")
106
#define _DBG_LOG_X_END \
107
rt_kprintf("\033[0m\n")
108
#else
109
#define _DBG_COLOR(n)
110
#define _DBG_LOG_HDR(lvl_name, color_n) \
111
rt_kprintf("[" lvl_name "/" DBG_SECTION_NAME "] ")
112
#define _DBG_LOG_X_END \
113
rt_kprintf("\n")
114
#endif
/* DBG_COLOR */
115
116
#define dbg_log_line(lvl, color_n, fmt, ...) \
117
do \
118
{ \
119
_DBG_LOG_HDR(lvl, color_n); \
120
rt_kprintf(fmt, ##__VA_ARGS__); \
121
_DBG_LOG_X_END; \
122
} \
123
while (0)
124
125
#define dbg_raw(...) rt_kprintf(__VA_ARGS__);
126
127
#else
128
#define dbg_log_line(lvl, color_n, fmt, ...)
129
#define dbg_raw(...)
130
#endif
/* DBG_ENABLE */
131
132
#if (DBG_LEVEL >= DBG_LOG)
133
#define LOG_D(fmt, ...) dbg_log_line("D", 0, fmt, ##__VA_ARGS__)
134
#else
135
#define LOG_D(...)
136
#endif
137
138
#if (DBG_LEVEL >= DBG_INFO)
139
#define LOG_I(fmt, ...) dbg_log_line("I", 32, fmt, ##__VA_ARGS__)
140
#else
141
#define LOG_I(...)
142
#endif
143
144
#if (DBG_LEVEL >= DBG_WARNING)
145
#define LOG_W(fmt, ...) dbg_log_line("W", 33, fmt, ##__VA_ARGS__)
146
#else
147
#define LOG_W(...)
148
#endif
149
150
#if (DBG_LEVEL >= DBG_ERROR)
151
#define LOG_E(fmt, ...) dbg_log_line("E", 31, fmt, ##__VA_ARGS__)
152
#else
153
#define LOG_E(...)
154
#endif
155
156
#define LOG_RAW(...) dbg_raw(__VA_ARGS__)
157
158
#define LOG_HEX(name, width, buf, size)
159
160
#endif
/* defined(RT_USING_ULOG) && define(DBG_ENABLE) */
161
162
#ifdef __cplusplus
163
}
164
#endif
165
166
#endif
/* RT_DBG_H__ */
include
rtdbg.h
制作者
1.13.1