m2mb API docs  37.00.006.0
m2mb API sets documentation
m2mb_trace.h
Go to the documentation of this file.
1 /* $version: 372317T2_R1 */
2 /*===============================================================================================*/
3 /* >>> Copyright (C) Telit Communications S.p.A. Italy All Rights Reserved. <<< */
23 #ifndef M2M_M2MB_TRACE_H
24 #define M2M_M2MB_TRACE_H
25 
26 #include <string.h>
27 
28 /* GCC has only the standard predefined MACRO __FILE__ and there is no __MODULE__ like in RVCT dinoa*/
29 
30 
31 #if defined(unix) || defined(__unix__) || defined(__unix)
32 #define __FILENAMEI__ (strrchr(__FILE__, '/') ? strrchr(__FILE__, '/') + 1 : __FILE__)
33 #define __FILENAMER__ __FILENAMEI__
34 #else
35 #define __FILENAMEI__ (strrchr(__FILE__, '\\') ? strrchr(__FILE__, '\\') + 1 : __FILE__)
36 #define __FILENAMER__ (strrchr(__FILENAMEI__, '/') ? strrchr(__FILENAMEI__, '/') + 1 : __FILENAMEI__)
37 
38 #endif
39 
40 
41 #if !defined(__MODULE__)
42 #define __MODULE__ __FILENAMER__
43 #endif
44 
45 
46 
47 /* @FHB -------------------------------------------------------------------------------
48 
49  Info: Available ONLY for AZ user applications:
50  PROTOTIPE OF THE log_az.ini FILE, to be inserted in the filesystem of the module
51  in <mod> directory with AT#M2MWRITE="/mod/log_az.ini", or with QPST configurator
52  The log_az.ini will be read with m2mb_trace_init
53  if there is no log_az.ini, then the function m2mb_trace_init will set all the classes
54  to a value of M2MB_TL_DEBUG (5) and there will be no filter for the print
55  Here a copy of the file log_az.ini :
56 ***********************************************************************<<<start here>>>
57  ; conf file for appzone2 trace:
58 
59  [logport] ; if PORT= (empty) TRACE is the default value
60  PORT=TRACE ; TRACE, USB0, USB1, UART
61 
62  [class] ; LOG SEVERITY for each class. Setting class M2MB_TL_DEBUG (5) will show
63  ; also LOG, WARNING... Setting M2MB_TL_LOG will show WARNING, ERROR... and so on
64  ; setting to 0 will not show any trace
65  TC_GENERIC = 3
66  TC_SOCKET = 0 ; 0=OFF 1=M2MB_TL_FATAL 2=M2MB_TL_ERROR 3=M2MB_TL_WARNING 4=M2MB_TL_LOG 5=M2MB_TL_DEBUG
67  TC_CLOCK = 0
68  TC_PDP = 0
69  TC_GNSS = 0
70  TC_M2M_USER = 4
71  TC_FOTA = 0
72  TC_FS = 0
73  TC_QMI = 0
74  TC_SMS = 0
75  TC_INFO = 4
76  TC_LWM2M = 0
77  TC_NET = 0
78  TC_SIM = 0
79  TC_SPI = 0
80  TC_USB = 0
81  TC_NV = 1
82  TC_RTC = 0
83  TC_UART = 0
84  TC_POWER = 0
85 
86 *****************************************************************<<<end here>>>
87 
88  @FHE --------------------------------------------------------------------------------- */
89 
90 
91 /* Global declarations ==========================================================================*/
92 #ifndef m2mb_trace_printf
93 #define m2mb_trace_printf( _class, level, format, ... ) \
94  m2mb_trace_print_##level( _class, level, format, ##__VA_ARGS__ )
95 #endif
96 
97 #if !defined(M2MB_TRACE_LEVEL_FATAL_DISABLED)
98 #define m2mb_trace_print_M2MB_TL_FATAL( _class, level, format, ... ) \
99  m2mb_trace_file_line_printf(__MODULE__, __LINE__, _class, level, format, ##__VA_ARGS__)
100 #else
101 #define m2mb_trace_print_M2MB_TL_FATAL( _class, level, format, ... )
102 #endif
103 
104 #if !defined(M2MB_TRACE_LEVEL_ERROR_DISABLED)
105 #define m2mb_trace_print_M2MB_TL_ERROR( _class, level, format, ... ) \
106  m2mb_trace_file_line_printf(__MODULE__, __LINE__, _class, level, format, ##__VA_ARGS__)
107 #else
108 #define m2mb_trace_print_M2MB_TL_ERROR( _class, level, format, ... )
109 #endif
110 
111 #if !defined(M2MB_TRACE_LEVEL_WARNING_DISABLED)
112 #define m2mb_trace_print_M2MB_TL_WARNING( _class, level, format, ... ) \
113  m2mb_trace_file_line_printf(__MODULE__, __LINE__, _class, level, format, ##__VA_ARGS__)
114 #else
115 #define m2mb_trace_print_M2MB_TL_WARNING( _class, level, format, ... )
116 #endif
117 
118 #if !defined(M2MB_TRACE_LEVEL_LOG_DISABLED)
119 #define m2mb_trace_print_M2MB_TL_LOG( _class, level, format, ... ) \
120  m2mb_trace_file_line_printf(__MODULE__, __LINE__, _class, level, format, ##__VA_ARGS__)
121 #else
122 #define m2mb_trace_print_M2MB_TL_LOG( _class, level, format, ... )
123 #endif
124 
125 #if !defined(M2MB_TRACE_LEVEL_DEBUG_DISABLED)
126 #define m2mb_trace_print_M2MB_TL_DEBUG( _class, level, format, ... ) \
127  m2mb_trace_file_line_printf(__MODULE__, __LINE__, _class, level, format, ##__VA_ARGS__)
128 #else
129 #define m2mb_trace_print_M2MB_TL_DEBUG( _class, level, format, ... )
130 #endif
131 
132 /* Global typedefs ==============================================================================*/
133 
134 /*
135  typedef enum
136  {
137  M2MB_TC_GENERIC = 0,
138  M2MB_TC_SOCKET = 1,
139  M2MB_TC_CLOCK = 2,
140  M2MB_TC_PDP = 3,
141  M2MB_TC_GNSS = 4,
142  M2MB_TC_M2M_USER = 5,
143  M2MB_TC_FOTA = 6,
144  M2MB_TC_FS = 7,
145  M2MB_TC_QMI = 8,
146  M2MB_TC_SMS = 9,
147  M2MB_TC_INFO = 10,
148  M2MB_TC_LWM2M = 11,
149  M2MB_TC_NET = 12,
150  M2MB_TC_SIM = 13,
151  M2MB_TC_SPI = 14,
152  M2MB_TC_USB = 15,
153  M2MB_TC_NV = 16,
154  M2MB_TC_RTC = 17,
155  M2MB_TC_UART = 18,
156  M2MB_TC_POWER = 19,
157  M2MB_TC_FTPC = 20,
158  M2MB_TC_ATI = 21,
159  M2MB_TC_BACKUP = 22,
160  M2MB_TC_NIPD = 23,
161  M2MB_TC_SYS = 24,
162  M2MB_TC_PSM = 25,
163  M2MB_TC_SSL = 26
164  NUM_M2MB_TC
165  } M2MB_TRACE_CLASS;
166 
167 */
168 
169 /* Parse SUBSYS_TRACE_TABLE into a struct using X-Macros
170  the result will be an enum like the commented one above
171 */
172 
173 #define SUBSYS_TRACE_TABLE \
174  SUB_TR_AZ(M2MB_TC_GENERIC, "TC_GENERIC") \
175  SUB_TR_AZ(M2MB_TC_SOCKET, "TC_SOCKET") \
176  SUB_TR_AZ(M2MB_TC_CLOCK, "TC_CLOCK") \
177  SUB_TR_AZ(M2MB_TC_PDP, "TC_PDP") \
178  SUB_TR_AZ(M2MB_TC_GNSS, "TC_GNSS") \
179  SUB_TR_AZ(M2MB_TC_M2M_USER, "TC_M2M_USER") \
180  SUB_TR_AZ(M2MB_TC_FOTA, "TC_FOTA") \
181  SUB_TR_AZ(M2MB_TC_FS, "TC_FS") \
182  SUB_TR_AZ(M2MB_TC_QMI, "TC_QMI") \
183  SUB_TR_AZ(M2MB_TC_SMS, "TC_SMS") \
184  SUB_TR_AZ(M2MB_TC_INFO, "TC_INFO") \
185  SUB_TR_AZ(M2MB_TC_LWM2M, "TC_LWM2M") \
186  SUB_TR_AZ(M2MB_TC_NET, "TC_NET") \
187  SUB_TR_AZ(M2MB_TC_SIM, "TC_SIM") \
188  SUB_TR_AZ(M2MB_TC_SPI, "TC_SPI") \
189  SUB_TR_AZ(M2MB_TC_USB, "TC_USB") \
190  SUB_TR_AZ(M2MB_TC_NV, "TC_NV") \
191  SUB_TR_AZ(M2MB_TC_RTC, "TC_RTC") \
192  SUB_TR_AZ(M2MB_TC_UART, "TC_UART") \
193  SUB_TR_AZ(M2MB_TC_POWER, "TC_POWER") \
194  SUB_TR_AZ(M2MB_TC_FTPC, "TC_FTPC") \
195  SUB_TR_AZ(M2MB_TC_ATI, "TC_ATI") \
196  SUB_TR_AZ(M2MB_TC_BACKUP, "TC_BACKUP") \
197  SUB_TR_AZ(M2MB_TC_NIPD, "TC_NIPD") \
198  SUB_TR_AZ(M2MB_TC_SYS, "TC_SYS") \
199  SUB_TR_AZ(M2MB_TC_PSM, "TC_PSM") \
200  SUB_TR_AZ(M2MB_TC_SSL, "TC_SSL") \
201  SUB_TR_AZ(M2MB_TC_TM, "TC_TM")
202 
203 #define SUB_TR_AZ(a, b) a,
204 typedef enum
205 {
206  SUBSYS_TRACE_TABLE
207  NUM_M2MB_TC,
208  ENUM_TO_INT( M2MB_TRACE_CLASS )
209 } M2MB_TRACE_CLASS;
210 #undef SUB_TR_AZ
211 
212 
213 /*
214  LOG SEVERITY enum for the trace.
215  if in the ini file the log severity is set for example to M2MB_TL_LOG (4), then all
216  the log with inferior severity will be shown, but not M2MB_TL_DEBUG (5)
217 */
218 
219 typedef enum
220 {
221  M2MB_TL_FATAL = 1,
222  M2MB_TL_ERROR = 2,
223  M2MB_TL_WARNING = 3,
224  M2MB_TL_LOG = 4,
225  M2MB_TL_DEBUG = 5,
226  NUM_M2MB_TL,
227  ENUM_TO_INT( M2MB_TRACE_LEVEL )
228 } M2MB_TRACE_LEVEL;
229 
230 /*
231  Type of output for logs, to be set only in log_az.ini.
232  Without the ini file the log will always be on trace
233 */
234 typedef enum
235 {
236  LOG_TRACE, /* TRACE in the log_az.ini file */
237  LOG_USB0, /* USB0 in the log_az.ini file */
238  LOG_USB1, /* USB1 in the log_az.ini file */
239  LOG_UART, /* UART in the log_az.ini file */
240  ENUM_TO_INT( M2MB_TRACE_OUTPUT_TYPE )
241 } M2MB_TRACE_OUTPUT_TYPE;
242 
243 typedef HANDLE M2MB_TRACE_HANDLE;
244 
245 /* Global functions =============================================================================*/
246 /*-----------------------------------------------------------------------------------------------*/
267 /*-----------------------------------------------------------------------------------------------*/
268 M2MB_RESULT_E m2mb_trace_init
269 (
270  void
271 );
272 
273 /*-----------------------------------------------------------------------------------------------*/
293 /*-----------------------------------------------------------------------------------------------*/
294 M2MB_RESULT_E m2mb_trace_deinit
295 (
296  void
297 );
298 
299 
300 /*-----------------------------------------------------------------------------------------------*/
325 /*-----------------------------------------------------------------------------------------------*/
326 M2MB_RESULT_E m2mb_trace_enable
327 (
328  M2MB_TRACE_CLASS traceClass
329 );
330 
331 /*-----------------------------------------------------------------------------------------------*/
355 /*-----------------------------------------------------------------------------------------------*/
356 M2MB_RESULT_E m2mb_trace_disable
357 (
358  M2MB_TRACE_CLASS traceClass
359 );
360 
361 /*-----------------------------------------------------------------------------------------------*/
362 
363 /*-----------------------------------------------------------------------------------------------*/
400 /*-----------------------------------------------------------------------------------------------*/
401 M2MB_RESULT_E m2mb_trace_file_line_printf
402 (
403  const CHAR *file,
404  INT32 line,
405  M2MB_TRACE_CLASS traceClass,
406  M2MB_TRACE_LEVEL level,
407  CHAR *fmt,
408  ...
409 );
410 
411 /*-----------------------------------------------------------------------------------------------*/
435 /*-----------------------------------------------------------------------------------------------*/
436 M2MB_RESULT_E m2mb_trace_all( UINT8 val );
437 
438 #endif /* M2M_M2MB_TRACE_H */
439 
m2mb_trace_enable
M2MB_RESULT_E m2mb_trace_enable(M2MB_TRACE_CLASS traceClass)
Base trace abilitation.
m2mb_trace_disable
M2MB_RESULT_E m2mb_trace_disable(M2MB_TRACE_CLASS traceClass)
Base trace disabilitation.
m2mb_trace_all
M2MB_RESULT_E m2mb_trace_all(UINT8 val)
m2mb_trace_all disable/enable all traces
m2mb_trace_init
M2MB_RESULT_E m2mb_trace_init(void)
Base trace system initializazion.
m2mb_trace_deinit
M2MB_RESULT_E m2mb_trace_deinit(void)
Base trace system deinitializazion.
m2mb_trace_file_line_printf
M2MB_RESULT_E m2mb_trace_file_line_printf(const CHAR *file, INT32 line, M2MB_TRACE_CLASS traceClass, M2MB_TRACE_LEVEL level, CHAR *fmt,...)
Base trace printf with file and line info.