T-Box Basic dev
Loading...
Searching...
No Matches
macros.h
Go to the documentation of this file.
1
12
13#ifndef __TBOX_MACROS_H__
14#define __TBOX_MACROS_H__
15
21
22/**********************************************************
23 * MCU 日志专用宏
24 **********************************************************/
25#define TBOX_LOG_MCU(fmt, ...) tbox_log_write_id(TBOX_LOG_ID_MCU, TBOX_LOG_LEVEL_INFO, fmt, ##__VA_ARGS__)
26
27/**********************************************************
28 * 日志输出宏
29 **********************************************************/
30#define TBOX_LOGD(tag, fmt, ...) tbox_log_write(TBOX_LOG_LEVEL_DEBUG, "%-4s | " fmt, tag, ##__VA_ARGS__)
31#define TBOX_LOGI(tag, fmt, ...) tbox_log_write(TBOX_LOG_LEVEL_INFO, "%-4s | " fmt, tag, ##__VA_ARGS__)
32#define TBOX_LOGN(tag, fmt, ...) tbox_log_write(TBOX_LOG_LEVEL_NOTICE, "%-4s | " fmt, tag, ##__VA_ARGS__)
33#define TBOX_LOGW(tag, fmt, ...) tbox_log_write(TBOX_LOG_LEVEL_WARN, "%-4s | " fmt, tag, ##__VA_ARGS__)
34#define TBOX_LOGE(tag, fmt, ...) tbox_log_write(TBOX_LOG_LEVEL_ERROR, "%-4s | " fmt, tag, ##__VA_ARGS__)
35#define TBOX_LOGF(tag, fmt, ...) tbox_log_write(TBOX_LOG_LEVEL_FATAL, "%-4s | " fmt, tag, ##__VA_ARGS__)
36
37/**********************************************************
38 * 向指定日志 ID 输出日志
39 **********************************************************/
40#define TBOX_LOGD_ID(id, tag, fmt, ...) tbox_log_write_id(id, TBOX_LOG_LEVEL_DEBUG, "%-4s | " fmt, tag, ##__VA_ARGS__)
41#define TBOX_LOGI_ID(id, tag, fmt, ...) tbox_log_write_id(id, TBOX_LOG_LEVEL_INFO, "%-4s | " fmt, tag, ##__VA_ARGS__)
42#define TBOX_LOGN_ID(id, tag, fmt, ...) tbox_log_write_id(id, TBOX_LOG_LEVEL_NOTICE, "%-4s | " fmt, tag, ##__VA_ARGS__)
43#define TBOX_LOGW_ID(id, tag, fmt, ...) tbox_log_write_id(id, TBOX_LOG_LEVEL_WARN, "%-4s | " fmt, tag, ##__VA_ARGS__)
44#define TBOX_LOGE_ID(id, tag, fmt, ...) tbox_log_write_id(id, TBOX_LOG_LEVEL_ERROR, "%-4s | " fmt, tag, ##__VA_ARGS__)
45#define TBOX_LOGF_ID(id, tag, fmt, ...) tbox_log_write_id(id, TBOX_LOG_LEVEL_FATAL, "%-4s | " fmt, tag, ##__VA_ARGS__)
46
47/**********************************************************
48 * 输出十六进制值
49 **********************************************************/
50#define TBOX_LOGD_X8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_DEBUG, "%-4s | %s=0x%02X", tag, #value, value)
51#define TBOX_LOGI_X8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_INFO, "%-4s | %s=0x%02X", tag, #value, value)
52#define TBOX_LOGN_X8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_NOTICE, "%-4s | %s=0x%02X", tag, #value, value)
53#define TBOX_LOGW_X8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_WARN, "%-4s | %s=0x%02X", tag, #value, value)
54#define TBOX_LOGE_X8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_ERROR, "%-4s | %s=0x%02X", tag, #value, value)
55#define TBOX_LOGF_X8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_FATAL, "%-4s | %s=0x%02X", tag, #value, value)
56
57/**********************************************************
58 * 向指定日志 ID 输出十六进制值
59 **********************************************************/
60#define TBOX_LOGD_X8_ID(id, tag, value) \
61 tbox_log_write_id(id, TBOX_LOG_LEVEL_DEBUG, "%-4s | %s=0x%02X", tag, #value, value)
62#define TBOX_LOGI_X8_ID(id, tag, value) \
63 tbox_log_write_id(id, TBOX_LOG_LEVEL_INFO, "%-4s | %s=0x%02X", tag, #value, value)
64#define TBOX_LOGN_X8_ID(id, tag, value) \
65 tbox_log_write_id(id, TBOX_LOG_LEVEL_NOTICE, "%-4s | %s=0x%02X", tag, #value, value)
66#define TBOX_LOGW_X8_ID(id, tag, value) \
67 tbox_log_write_id(id, TBOX_LOG_LEVEL_WARN, "%-4s | %s=0x%02X", tag, #value, value)
68#define TBOX_LOGE_X8_ID(id, tag, value) \
69 tbox_log_write_id(id, TBOX_LOG_LEVEL_ERROR, "%-4s | %s=0x%02X", tag, #value, value)
70#define TBOX_LOGF_X8_ID(id, tag, value) \
71 tbox_log_write_id(id, TBOX_LOG_LEVEL_FATAL, "%-4s | %s=0x%02X", tag, #value, value)
72
73/**********************************************************
74 * 输出无符号 8 位值
75 **********************************************************/
76#define TBOX_LOGD_U8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_DEBUG, "%-4s | %s=0x%02X", tag, #value, value)
77#define TBOX_LOGI_U8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_INFO, "%-4s | %s=0x%02X", tag, #value, value)
78#define TBOX_LOGN_U8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_NOTICE, "%-4s | %s=0x%02X", tag, #value, value)
79#define TBOX_LOGW_U8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_WARN, "%-4s | %s=0x%02X", tag, #value, value)
80#define TBOX_LOGE_U8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_ERROR, "%-4s | %s=0x%02X", tag, #value, value)
81#define TBOX_LOGF_U8(tag, value) tbox_log_write(TBOX_LOG_LEVEL_FATAL, "%-4s | %s=0x%02X", tag, #value, value)
82
83/**********************************************************
84 * 向指定日志 ID 输出无符号 8 位值
85 **********************************************************/
86#define TBOX_LOGD_U8_ID(id, tag, value) \
87 tbox_log_write_id(id, TBOX_LOG_LEVEL_DEBUG, "%-4s | %s=0x%02X", tag, #value, value)
88#define TBOX_LOGI_U8_ID(id, tag, value) \
89 tbox_log_write_id(id, TBOX_LOG_LEVEL_INFO, "%-4s | %s=0x%02X", tag, #value, value)
90#define TBOX_LOGN_U8_ID(id, tag, value) \
91 tbox_log_write_id(id, TBOX_LOG_LEVEL_NOTICE, "%-4s | %s=0x%02X", tag, #value, value)
92#define TBOX_LOGW_U8_ID(id, tag, value) \
93 tbox_log_write_id(id, TBOX_LOG_LEVEL_WARN, "%-4s | %s=0x%02X", tag, #value, value)
94#define TBOX_LOGE_U8_ID(id, tag, value) \
95 tbox_log_write_id(id, TBOX_LOG_LEVEL_ERROR, "%-4s | %s=0x%02X", tag, #value, value)
96#define TBOX_LOGF_U8_ID(id, tag, value) \
97 tbox_log_write_id(id, TBOX_LOG_LEVEL_FATAL, "%-4s | %s=0x%02X", tag, #value, value)
98
99/**********************************************************
100 * 输出十六进制 16 位值
101 **********************************************************/
102#define TBOX_LOGD_X16(tag, value) tbox_log_write(TBOX_LOG_LEVEL_DEBUG, "%-4s | %s=0x%04X", tag, #value, value)
103#define TBOX_LOGI_X16(tag, value) tbox_log_write(TBOX_LOG_LEVEL_INFO, "%-4s | %s=0x%04X", tag, #value, value)
104#define TBOX_LOGN_X16(tag, value) tbox_log_write(TBOX_LOG_LEVEL_NOTICE, "%-4s | %s=0x%04X", tag, #value, value)
105#define TBOX_LOGW_X16(tag, value) tbox_log_write(TBOX_LOG_LEVEL_WARN, "%-4s | %s=0x%04X", tag, #value, value)
106#define TBOX_LOGE_X16(tag, value) tbox_log_write(TBOX_LOG_LEVEL_ERROR, "%-4s | %s=0x%04X", tag, #value, value)
107#define TBOX_LOGF_X16(tag, value) tbox_log_write(TBOX_LOG_LEVEL_FATAL, "%-4s | %s=0x%04X", tag, #value, value)
108
109/**********************************************************
110 * 向指定日志 ID 输出十六进制 16 位值
111 **********************************************************/
112#define TBOX_LOGD_X16_ID(id, tag, value) \
113 tbox_log_write_id(id, TBOX_LOG_LEVEL_DEBUG, "%-4s | %s=0x%04X", tag, #value, value)
114#define TBOX_LOGI_X16_ID(id, tag, value) \
115 tbox_log_write_id(id, TBOX_LOG_LEVEL_INFO, "%-4s | %s=0x%04X", tag, #value, value)
116#define TBOX_LOGN_X16_ID(id, tag, value) \
117 tbox_log_write_id(id, TBOX_LOG_LEVEL_NOTICE, "%-4s | %s=0x%04X", tag, #value, value)
118#define TBOX_LOGW_X16_ID(id, tag, value) \
119 tbox_log_write_id(id, TBOX_LOG_LEVEL_WARN, "%-4s | %s=0x%04X", tag, #value, value)
120#define TBOX_LOGE_X16_ID(id, tag, value) \
121 tbox_log_write_id(id, TBOX_LOG_LEVEL_ERROR, "%-4s | %s=0x%04X", tag, #value, value)
122#define TBOX_LOGF_X16_ID(id, tag, value) \
123 tbox_log_write_id(id, TBOX_LOG_LEVEL_FATAL, "%-4s | %s=0x%04X", tag, #value, value)
124
125/**********************************************************
126 * 输出十六进制 32 位值
127 **********************************************************/
128#define TBOX_LOGD_X32(tag, value) tbox_log_write(TBOX_LOG_LEVEL_DEBUG, "%-4s | %s=0x%08X", tag, #value, value)
129#define TBOX_LOGI_X32(tag, value) tbox_log_write(TBOX_LOG_LEVEL_INFO, "%-4s | %s=0x%08X", tag, #value, value)
130#define TBOX_LOGN_X32(tag, value) tbox_log_write(TBOX_LOG_LEVEL_NOTICE, "%-4s | %s=0x%08X", tag, #value, value)
131#define TBOX_LOGW_X32(tag, value) tbox_log_write(TBOX_LOG_LEVEL_WARN, "%-4s | %s=0x%08X", tag, #value, value)
132#define TBOX_LOGE_X32(tag, value) tbox_log_write(TBOX_LOG_LEVEL_ERROR, "%-4s | %s=0x%08X", tag, #value, value)
133#define TBOX_LOGF_X32(tag, value) tbox_log_write(TBOX_LOG_LEVEL_FATAL, "%-4s | %s=0x%08X", tag, #value, value)
134
135/**********************************************************
136 * 向指定日志 ID 输出十六进制 32 位值
137 **********************************************************/
138#define TBOX_LOGD_X32_ID(id, tag, value) \
139 tbox_log_write_id(id, TBOX_LOG_LEVEL_DEBUG, "%-4s | %s=0x%08X", tag, #value, value)
140#define TBOX_LOGI_X32_ID(id, tag, value) \
141 tbox_log_write_id(id, TBOX_LOG_LEVEL_INFO, "%-4s | %s=0x%08X", tag, #value, value)
142#define TBOX_LOGN_X32_ID(id, tag, value) \
143 tbox_log_write_id(id, TBOX_LOG_LEVEL_NOTICE, "%-4s | %s=0x%08X", tag, #value, value)
144#define TBOX_LOGW_X32_ID(id, tag, value) \
145 tbox_log_write_id(id, TBOX_LOG_LEVEL_WARN, "%-4s | %s=0x%08X", tag, #value, value)
146#define TBOX_LOGE_X32_ID(id, tag, value) \
147 tbox_log_write_id(id, TBOX_LOG_LEVEL_ERROR, "%-4s | %s=0x%08X", tag, #value, value)
148#define TBOX_LOGF_X32_ID(id, tag, value) \
149 tbox_log_write_id(id, TBOX_LOG_LEVEL_FATAL, "%-4s | %s=0x%08X", tag, #value, value)
150
151/**********************************************************
152 * 输出无符号 8 位值数组
153 **********************************************************/
154#define TBOX_LOGD_AU8(tag, data, len) tbox_log_write_hex(TBOX_LOG_LEVEL_DEBUG, data, len, "%-4s |", tag)
155#define TBOX_LOGI_AU8(tag, data, len) tbox_log_write_hex(TBOX_LOG_LEVEL_INFO, data, len, "%-4s |", tag)
156#define TBOX_LOGN_AU8(tag, data, len) tbox_log_write_hex(TBOX_LOG_LEVEL_NOTICE, data, len, "%-4s |", tag)
157#define TBOX_LOGW_AU8(tag, data, len) tbox_log_write_hex(TBOX_LOG_LEVEL_WARN, data, len, "%-4s |", tag)
158#define TBOX_LOGE_AU8(tag, data, len) tbox_log_write_hex(TBOX_LOG_LEVEL_ERROR, data, len, "%-4s |", tag)
159#define TBOX_LOGF_AU8(tag, data, len) tbox_log_write_hex(TBOX_LOG_LEVEL_FATAL, data, len, "%-4s |", tag)
160
161/**********************************************************
162 * 向指定日志 ID 输出无符号 8 位值数组
163 **********************************************************/
164#define TBOX_LOGD_AU8_ID(id, tag, data, len) tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_DEBUG, data, len, "%-4s |", tag)
165#define TBOX_LOGI_AU8_ID(id, tag, data, len) tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_INFO, data, len, "%-4s |", tag)
166#define TBOX_LOGN_AU8_ID(id, tag, data, len) tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_NOTICE, data, len, "%-4s |", tag)
167#define TBOX_LOGW_AU8_ID(id, tag, data, len) tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_WARN, data, len, "%-4s |", tag)
168#define TBOX_LOGE_AU8_ID(id, tag, data, len) tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_ERROR, data, len, "%-4s |", tag)
169#define TBOX_LOGF_AU8_ID(id, tag, data, len) tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_FATAL, data, len, "%-4s |", tag)
170
171/**********************************************************
172 * 输出带说明信息的无符号 8 位值数组
173 **********************************************************/
174#define TBOX_LOGD_MAU8(tag, data, len, msg) tbox_log_write_hex(TBOX_LOG_LEVEL_DEBUG, data, len, "%-4s | %s", tag, msg)
175#define TBOX_LOGI_MAU8(tag, data, len, msg) tbox_log_write_hex(TBOX_LOG_LEVEL_INFO, data, len, "%-4s | %s", tag, msg)
176#define TBOX_LOGN_MAU8(tag, data, len, msg) tbox_log_write_hex(TBOX_LOG_LEVEL_NOTICE, data, len, "%-4s | %s", tag, msg)
177#define TBOX_LOGW_MAU8(tag, data, len, msg) tbox_log_write_hex(TBOX_LOG_LEVEL_WARN, data, len, "%-4s | %s", tag, msg)
178#define TBOX_LOGE_MAU8(tag, data, len, msg) tbox_log_write_hex(TBOX_LOG_LEVEL_ERROR, data, len, "%-4s | %s", tag, msg)
179#define TBOX_LOGF_MAU8(tag, data, len, msg) tbox_log_write_hex(TBOX_LOG_LEVEL_FATAL, data, len, "%-4s | %s", tag, msg)
180
181/**********************************************************
182 * 向指定日志 ID 输出带说明信息的无符号 8 位值数组
183 **********************************************************/
184#define TBOX_LOGD_MAU8_ID(id, tag, data, len, msg) \
185 tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_DEBUG, data, len, "%-4s | %s", tag, msg)
186#define TBOX_LOGI_MAU8_ID(id, tag, data, len, msg) \
187 tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_INFO, data, len, "%-4s | %s", tag, msg)
188#define TBOX_LOGN_MAU8_ID(id, tag, data, len, msg) \
189 tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_NOTICE, data, len, "%-4s | %s", tag, msg)
190#define TBOX_LOGW_MAU8_ID(id, tag, data, len, msg) \
191 tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_WARN, data, len, "%-4s | %s", tag, msg)
192#define TBOX_LOGE_MAU8_ID(id, tag, data, len, msg) \
193 tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_ERROR, data, len, "%-4s | %s", tag, msg)
194#define TBOX_LOGF_MAU8_ID(id, tag, data, len, msg) \
195 tbox_log_write_hex_id(id, TBOX_LOG_LEVEL_FATAL, data, len, "%-4s | %s", tag, msg)
196
197/**********************************************************
198 * 条件检查宏
199 **********************************************************/
200
224#define TBOX_CHECK_OR_GOTO(tag, expr, label) \
225 do \
226 { \
227 if (!(expr)) \
228 { \
229 TBOX_LOGE(tag, "check failed: %s", #expr); \
230 goto label; \
231 } \
232 } while (0)
233
259#define TBOX_CHECK_OR_GOTO_WITH_STATUS(tag, expr, label, status, value) \
260 do \
261 { \
262 if (!(expr)) \
263 { \
264 TBOX_LOGE(tag, "check failed: %s", #expr); \
265 (status) = (value); \
266 goto label; \
267 } \
268 } while (0)
269
284#define TBOX_CHECK_OR_BREAK(tag, expr) \
285 do \
286 { \
287 if (!(expr)) \
288 { \
289 TBOX_LOGE(tag, "check failed: %s", #expr); \
290 break; \
291 } \
292 } while (0)
293
312#define TBOX_CHECK_OR_BREAK_WITH_STATUS(tag, expr, status, value) \
313 do \
314 { \
315 if (!(expr)) \
316 { \
317 TBOX_LOGE(tag, "check failed: %s", #expr); \
318 (status) = (value); \
319 break; \
320 } \
321 } while (0)
322
337#define TBOX_CHECK_OR_CONTINUE(tag, expr) \
338 do \
339 { \
340 if (!(expr)) \
341 { \
342 TBOX_LOGE(tag, "check failed: %s", #expr); \
343 continue; \
344 } \
345 } while (0)
346
365#define TBOX_CHECK_OR_CONTINUE_WITH_STATUS(tag, expr, status, value) \
366 do \
367 { \
368 if (!(expr)) \
369 { \
370 TBOX_LOGE(tag, "check failed: %s", #expr); \
371 (status) = (value); \
372 continue; \
373 } \
374 } while (0)
375
390#define TBOX_CHECK_OR_RETURN(tag, expr) \
391 do \
392 { \
393 if (!(expr)) \
394 { \
395 TBOX_LOGE(tag, "check failed: %s", #expr); \
396 return; \
397 } \
398 } while (0)
399
416#define TBOX_CHECK_OR_RETURN_WITH_VALUE(tag, expr, value) \
417 do \
418 { \
419 if (!(expr)) \
420 { \
421 TBOX_LOGE(tag, "check failed: %s", #expr); \
422 return (value); \
423 } \
424 } while (0)
425
429
430#endif /* __TBOX_MACROS_H__ */