Chirp SonicLib  4.5.2
ch_log.h
Go to the documentation of this file.
1 
10 /*
11  Copyright 2016-2023, InvenSense, Inc. All rights reserved.
12 
13  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
14  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
15  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
16  DISCLAIMED.
17 */
18 #ifndef CH_LOG_H_
19 #define CH_LOG_H_
20 
21 #ifdef __cplusplus
22 extern "C" {
23 #endif
24 
25 #define CH_LOG_LEVEL_TRACE 0
26 #define CH_LOG_LEVEL_DEBUG 1
27 #define CH_LOG_LEVEL_INFO 2
28 #define CH_LOG_LEVEL_WARNING 3
29 #define CH_LOG_LEVEL_ERROR 4
30 #define CH_LOG_LEVEL_APP 5
31 #define CH_LOG_LEVEL_DISABLE 6
32 
33 #ifndef CH_LOG_MODULE_LEVEL
34 #define CH_LOG_MODULE_LEVEL CH_LOG_LEVEL_ERROR
35 #endif
36 
37 #ifndef CH_LOG_BUFFER_SIZE
38 /* Size of the internal buffer to save messages before printing */
39 #define CH_LOG_BUFFER_SIZE (200)
40 #endif
41 
42 #define IS_CH_LOG_USED (CH_LOG_MODULE_LEVEL < CH_LOG_LEVEL_DISABLE)
43 #define IS_CH_LOG_LEVEL_USED(level) (level >= CH_LOG_MODULE_LEVEL)
44 
45 #if (CH_LOG_MODULE_LEVEL <= CH_LOG_LEVEL_TRACE)
46 #define CH_LOG_TRACE(...) ch_log_prefix_printf('T', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
47 #define CH_LOG_TRACE_START(...) ch_log_prefix_start('T', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
48 #define CH_LOG_TRACE_MSG(...) ch_log_msg(__VA_ARGS__)
49 #define CH_LOG_TRACE_END() ch_log_end()
50 #else
51 #define CH_LOG_TRACE(...)
52 #define CH_LOG_TRACE_START(...)
53 #define CH_LOG_TRACE_MSG(...)
54 #define CH_LOG_TRACE_END()
55 #endif
56 
57 #if (CH_LOG_MODULE_LEVEL <= CH_LOG_LEVEL_DEBUG)
58 #define CH_LOG_DEBUG(...) ch_log_prefix_printf('D', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
59 #define CH_LOG_DEBUG_START(...) ch_log_prefix_start('D', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
60 #define CH_LOG_DEBUG_MSG(...) ch_log_msg(__VA_ARGS__)
61 #define CH_LOG_DEBUG_END() ch_log_end()
62 #else
63 #define CH_LOG_DEBUG(...)
64 #define CH_LOG_DEBUG_START(...)
65 #define CH_LOG_DEBUG_MSG(...)
66 #define CH_LOG_DEBUG_END()
67 #endif
68 
69 #if (CH_LOG_MODULE_LEVEL <= CH_LOG_LEVEL_INFO)
70 #define CH_LOG_INFO(...) ch_log_prefix_printf('I', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
71 #define CH_LOG_INFO_START(...) ch_log_prefix_start('I', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
72 #define CH_LOG_INFO_MSG(...) ch_log_msg(__VA_ARGS__)
73 #define CH_LOG_INFO_END() ch_log_end()
74 #else
75 #define CH_LOG_INFO(...)
76 #define CH_LOG_INFO_START(...)
77 #define CH_LOG_INFO_MSG(...)
78 #define CH_LOG_INFO_END()
79 #endif
80 
81 #if (CH_LOG_MODULE_LEVEL <= CH_LOG_LEVEL_WARNING)
82 #define CH_LOG_WARN(...) ch_log_prefix_printf('W', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
83 #define CH_LOG_WARN_START(...) ch_log_prefix_start('W', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
84 #define CH_LOG_WARN_MSG(...) ch_log_msg(__VA_ARGS__)
85 #define CH_LOG_WARN_END() ch_log_end()
86 #else
87 #define CH_LOG_WARN(...)
88 #define CH_LOG_WARN_START(...)
89 #define CH_LOG_WARN_MSG(...)
90 #define CH_LOG_WARN_END()
91 #endif
92 
93 #if (CH_LOG_MODULE_LEVEL <= CH_LOG_LEVEL_ERROR)
94 #define CH_LOG_ERR(...) ch_log_prefix_printf('E', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
95 #define CH_LOG_ERR_START(...) ch_log_prefix_start('E', CH_LOG_MODULE_NAME, __func__, __VA_ARGS__)
96 #define CH_LOG_ERR_MSG(...) ch_log_msg(__VA_ARGS__)
97 #define CH_LOG_ERR_END() ch_log_end()
98 #else
99 #define CH_LOG_ERR(...)
100 #define CH_LOG_ERR_START(...)
101 #define CH_LOG_ERR_MSG(...)
102 #define CH_LOG_ERR_END()
103 #endif
104 
105 #if (CH_LOG_MODULE_LEVEL <= CH_LOG_LEVEL_APP)
106 #define CH_LOG_APP(...) ch_log_printf_eol(__VA_ARGS__)
107 #define CH_LOG_APP_START(...) ch_log_start(__VA_ARGS__)
108 #define CH_LOG_APP_MSG(...) ch_log_msg(__VA_ARGS__)
109 #define CH_LOG_APP_END() ch_log_end()
110 #else
111 #define CH_LOG_APP(...)
112 #define CH_LOG_APP_START(...)
113 #define CH_LOG_APP_MSG(...)
114 #define CH_LOG_APP_END()
115 #endif
116 
117 void ch_log_printf(const char *format, ...);
118 void ch_log_printf_eol(const char *format, ...);
119 void ch_log_prefix_printf(const char level, const char *name, const char *func_name, const char *format, ...);
120 void ch_log_prefix_start(const char level, const char *name, const char *func_name, const char *format, ...);
121 void ch_log_start(const char *format, ...);
122 void ch_log_msg(const char *format, ...);
123 void ch_log_end(void);
124 
125 #ifdef __cplusplus
126 }
127 #endif
128 
129 #endif /* CH_LOG_H_ */