Cordio Stack and Cordio Profiles  r2p3-02rel0
wsf_trace.h
Go to the documentation of this file.
1 /*************************************************************************************************/
2 /*!
3  * \file wsf_trace.h
4  *
5  * \brief Trace message interface.
6  *
7  * Copyright (c) 2009-2018 Arm Ltd. All Rights Reserved.
8  * Arm Ltd. confidential and proprietary.
9  *
10  * IMPORTANT. Your use of this file is governed by a Software License Agreement
11  * ("Agreement") that must be accepted in order to download or otherwise receive a
12  * copy of this file. You may not use or copy this file for any purpose other than
13  * as described in the Agreement. If you do not agree to all of the terms of the
14  * Agreement do not use this file and delete all copies in your possession or control;
15  * if you do not have a copy of the Agreement, you must contact Arm Ltd. prior
16  * to any use, copying or further distribution of this software.
17  */
18 /*************************************************************************************************/
19 #ifndef WSF_TRACE_H
20 #define WSF_TRACE_H
21 
22 #include <stdarg.h>
23 
24 #ifdef __cplusplus
25 extern "C" {
26 #endif
27 
28 /*! \addtogroup WSF_TRACE_API
29  * \{ */
30 
31 /**************************************************************************************************
32  Macros
33 **************************************************************************************************/
34 
35 #ifndef WSF_TRACE_ENABLED
36 /*! \brief Trace enable flag (default is disabled, override with compile-time directive). */
37 #define WSF_TRACE_ENABLED FALSE
38 #endif
39 
40 #ifndef WSF_TOKEN_ENABLED
41 /*! \brief Tokenized tracing enable flag (default is disabled, override with compile-time directive). */
42 #define WSF_TOKEN_ENABLED FALSE
43 #endif
44 
45 /**************************************************************************************************
46  Data Types
47 **************************************************************************************************/
48 
49 /*! \brief Token event handler. */
50 typedef void (*WsfTokenHandler_t)(uint8_t *pBuf, uint8_t len);
51 
52 /*! \brief Platform trace callback. */
53 typedef void (*wsfTraceCback_t)(const char *pStr, va_list args);
54 
55 /**************************************************************************************************
56  Function Prototypes
57 **************************************************************************************************/
58 
59 /*************************************************************************************************/
60 /*!
61  * \brief Print a trace message.
62  *
63  * \param pStr Message format string
64  * \param ... Additional arguments, printf-style
65  *
66  * \return None.
67  */
68 /*************************************************************************************************/
69 void WsfTrace(const char *pStr, ...);
70 
71 /*************************************************************************************************/
72 /*!
73  * \brief Output tokenized message.
74  *
75  * \param tok Token
76  * \param var Variable
77  *
78  * \return None.
79  */
80 /*************************************************************************************************/
81 void WsfToken(uint32_t tok, uint32_t var);
82 
83 /*************************************************************************************************/
84 /*!
85  * \brief Enable trace messages.
86  *
87  * \param enable TRUE to enable, FALSE to disable
88  *
89  * \return None.
90  */
91 /*************************************************************************************************/
92 void WsfTraceEnable(bool_t enable);
93 
94 
95 /*************************************************************************************************/
96 /*!
97  * \brief Service the trace ring buffer.
98  *
99  * \return TRUE if trace messages pending, FALSE otherwise.
100  *
101  * This routine is called in the main loop for a "push" type trace systems.
102  */
103 /*************************************************************************************************/
104 bool_t WsfTokenService(void);
105 
106 /*************************************************************************************************/
107 /*!
108  * \brief Regsiter token handler.
109  *
110  * \param tokenCback Token event handler.
111  *
112  * \return None.
113  *
114  * This routine registers a token callback. This callback is called when the next token event
115  * is ready to be written to the I/O.
116  */
117 /*************************************************************************************************/
119 
120 /*************************************************************************************************/
121 /*!
122  * \brief Register platform trace callback function.
123  *
124  * \param cback Callback function
125  *
126  * \return None.
127  */
128 /*************************************************************************************************/
130 
131 /**************************************************************************************************
132  Macros
133 **************************************************************************************************/
134 
135 #ifdef TOKEN_GENERATION
136 
137 #define WSF_TOKEN(subsys, stat, msg) \
138  __WSF_TOKEN_DEFINE__( \
139  /* token: */ MODULE_ID, __LINE__, \
140  /* origin: */ __FILE__, subsys, \
141  /* message: */ stat, msg)
142 
143 #define WSF_TRACE0(subsys, stat, msg) WSF_TOKEN(subsys, stat, msg)
144 #define WSF_TRACE1(subsys, stat, msg, var1) WSF_TOKEN(subsys, stat, msg)
145 #define WSF_TRACE2(subsys, stat, msg, var1, var2) WSF_TOKEN(subsys, stat, msg)
146 #define WSF_TRACE3(subsys, stat, msg, var1, var2, var3) WSF_TOKEN(subsys, stat, msg)
147 
148 #elif WSF_TRACE_ENABLED == TRUE
149 
150 /*! \brief Generic 0 argument trace. */
151 #define WSF_TRACE0(subsys, stat, msg) WsfTrace(msg)
152 /*! \brief Generic 1 argument trace. */
153 #define WSF_TRACE1(subsys, stat, msg, var1) WsfTrace(msg, var1)
154 /*! \brief Generic 2 argument trace. */
155 #define WSF_TRACE2(subsys, stat, msg, var1, var2) WsfTrace(msg, var1, var2)
156 /*! \brief Generic 3 argument trace. */
157 #define WSF_TRACE3(subsys, stat, msg, var1, var2, var3) WsfTrace(msg, var1, var2, var3)
158 
159 #elif WSF_TOKEN_ENABLED == TRUE
160 
161 #define WSF_TRACE0(subsys, stat, msg) \
162  WsfToken(((__LINE__ & 0xFFF) << 16) | MODULE_ID, 0)
163 #define WSF_TRACE1(subsys, stat, msg, var1) \
164  WsfToken(((__LINE__ & 0xFFF) << 16) | MODULE_ID, (uint32_t)(var1))
165 #define WSF_TRACE2(subsys, stat, msg, var1, var2) \
166  WsfToken(((__LINE__ & 0xFFF) << 16) | MODULE_ID, (uint32_t)(((var2) << 16) | ((var1) & 0xFFFF)))
167 #define WSF_TRACE3(subsys, stat, msg, var1, var2, var3) \
168  WsfToken(((__LINE__ & 0xFFF) << 16) | MODULE_ID, (uint32_t)((((var3) & 0xFFFF) << 16) | (((var2) & 0xFF) << 8) | ((var1) & 0xFF)))
169 
170 #else
171 
172 #define WSF_TRACE0(subsys, stat, msg)
173 #define WSF_TRACE1(subsys, stat, msg, var1)
174 #define WSF_TRACE2(subsys, stat, msg, var1, var2)
175 #define WSF_TRACE3(subsys, stat, msg, var1, var2, var3)
176 
177 #endif
178 
179 /*! \brief 0 argument WSF info trace. */
180 #define WSF_TRACE_INFO0(msg)
181 /*! \brief 1 argument WSF info trace. */
182 #define WSF_TRACE_INFO1(msg, var1)
183 /*! \brief 2 argument WSF info trace. */
184 #define WSF_TRACE_INFO2(msg, var1, var2)
185 /*! \brief 3 argument WSF info trace. */
186 #define WSF_TRACE_INFO3(msg, var1, var2, var3)
187 /*! \brief 0 argument WSF warning trace. */
188 #define WSF_TRACE_WARN0(msg) WSF_TRACE0("WSF", "WARN", msg)
189 /*! \brief 1 argument WSF warning trace. */
190 #define WSF_TRACE_WARN1(msg, var1) WSF_TRACE1("WSF", "WARN", msg, var1)
191 /*! \brief 2 argument WSF warning trace. */
192 #define WSF_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("WSF", "WARN", msg, var1, var2)
193 /*! \brief 3 argument WSF warning trace. */
194 #define WSF_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("WSF", "WARN", msg, var1, var2, var3)
195 /*! \brief 0 argument WSF error trace. */
196 #define WSF_TRACE_ERR0(msg) WSF_TRACE0("WSF", "ERR", msg)
197 /*! \brief 1 argument WSF error trace. */
198 #define WSF_TRACE_ERR1(msg, var1) WSF_TRACE1("WSF", "ERR", msg, var1)
199 /*! \brief 2 argument WSF error trace. */
200 #define WSF_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("WSF", "ERR", msg, var1, var2)
201 /*! \brief 3 argument WSF error trace. */
202 #define WSF_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("WSF", "ERR", msg, var1, var2, var3)
203 /*! \brief 0 argument WSF buffer allocation trace. */
204 #define WSF_TRACE_ALLOC0(msg)
205 /*! \brief 1 argument WSF buffer allocation trace. */
206 #define WSF_TRACE_ALLOC1(msg, var1)
207 /*! \brief 2 argument WSF buffer allocation trace. */
208 #define WSF_TRACE_ALLOC2(msg, var1, var2)
209 /*! \brief 3 argument WSF buffer allocation trace. */
210 #define WSF_TRACE_ALLOC3(msg, var1, var2, var3)
211 /*! \brief 0 argument WSF buffer free trace. */
212 #define WSF_TRACE_FREE0(msg)
213 /*! \brief 1 argument WSF buffer free trace. */
214 #define WSF_TRACE_FREE1(msg, var1)
215 /*! \brief 2 argument WSF buffer free trace. */
216 #define WSF_TRACE_FREE2(msg, var1, var2)
217 /*! \brief 3 argument WSF buffer free trace. */
218 #define WSF_TRACE_FREE3(msg, var1, var2, var3)
219 /*! \brief 0 argument WSF message trace. */
220 #define WSF_TRACE_MSG0(msg)
221 /*! \brief 1 argument WSF message trace. */
222 #define WSF_TRACE_MSG1(msg, var1)
223 /*! \brief 2 argument WSF message trace. */
224 #define WSF_TRACE_MSG2(msg, var1, var2)
225 /*! \brief 3 argument WSF message trace. */
226 #define WSF_TRACE_MSG3(msg, var1, var2, var3)
227 
228 /*! \brief 0 argument HCI info trace. */
229 #define HCI_TRACE_INFO0(msg) WSF_TRACE0("HCI", "INFO", msg)
230 /*! \brief 1 argument HCI info trace. */
231 #define HCI_TRACE_INFO1(msg, var1) WSF_TRACE1("HCI", "INFO", msg, var1)
232 /*! \brief 2 argument HCI info trace. */
233 #define HCI_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("HCI", "INFO", msg, var1, var2)
234 /*! \brief 3 argument HCI info trace. */
235 #define HCI_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("HCI", "INFO", msg, var1, var2, var3)
236 /*! \brief 0 argument HCI warning trace. */
237 #define HCI_TRACE_WARN0(msg) WSF_TRACE0("HCI", "WARN", msg)
238 /*! \brief 1 argument HCI warning trace. */
239 #define HCI_TRACE_WARN1(msg, var1) WSF_TRACE1("HCI", "WARN", msg, var1)
240 /*! \brief 2 argument HCI warning trace. */
241 #define HCI_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("HCI", "WARN", msg, var1, var2)
242 /*! \brief 3 argument HCI warning trace. */
243 #define HCI_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("HCI", "WARN", msg, var1, var2, var3)
244 /*! \brief 0 argument HCI error trace. */
245 #define HCI_TRACE_ERR0(msg) WSF_TRACE0("HCI", "ERR", msg)
246 /*! \brief 1 argument HCI error trace. */
247 #define HCI_TRACE_ERR1(msg, var1) WSF_TRACE1("HCI", "ERR", msg, var1)
248 /*! \brief 2 argument HCI error trace. */
249 #define HCI_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("HCI", "ERR", msg, var1, var2)
250 /*! \brief 3 argument HCI error trace. */
251 #define HCI_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("HCI", "ERR", msg, var1, var2, var3)
252 
253 /*! \brief HCI PDUMP on command. */
254 #define HCI_PDUMP_CMD(len, pBuf)
255 /*! \brief HCI PDUMP on event. */
256 #define HCI_PDUMP_EVT(len, pBuf)
257 /*! \brief HCI PDUMP on transmitted ACL message. */
258 #define HCI_PDUMP_TX_ACL(len, pBuf)
259 /*! \brief HCI PDUMP on Received ACL message. */
260 #define HCI_PDUMP_RX_ACL(len, pBuf)
261 
262 /*! \brief 0 argument DM info trace. */
263 #define DM_TRACE_INFO0(msg) WSF_TRACE0("DM", "INFO", msg)
264 /*! \brief 1 argument DM info trace. */
265 #define DM_TRACE_INFO1(msg, var1) WSF_TRACE1("DM", "INFO", msg, var1)
266 /*! \brief 2 argument DM info trace. */
267 #define DM_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("DM", "INFO", msg, var1, var2)
268 /*! \brief 3 argument DM info trace. */
269 #define DM_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("DM", "INFO", msg, var1, var2, var3)
270 /*! \brief 0 argument DM warning trace. */
271 #define DM_TRACE_WARN0(msg) WSF_TRACE0("DM", "WARN", msg)
272 /*! \brief 1 argument DM warning trace. */
273 #define DM_TRACE_WARN1(msg, var1) WSF_TRACE1("DM", "WARN", msg, var1)
274 /*! \brief 2 argument DM warning trace. */
275 #define DM_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("DM", "WARN", msg, var1, var2)
276 /*! \brief 3 argument DM warning trace. */
277 #define DM_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("DM", "WARN", msg, var1, var2, var3)
278 /*! \brief 0 argument DM error trace. */
279 #define DM_TRACE_ERR0(msg) WSF_TRACE0("DM", "ERR", msg)
280 /*! \brief 1 argument DM error trace. */
281 #define DM_TRACE_ERR1(msg, var1) WSF_TRACE1("DM", "ERR", msg, var1)
282 /*! \brief 2 argument DM error trace. */
283 #define DM_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("DM", "ERR", msg, var1, var2)
284 /*! \brief 3 argument DM error trace. */
285 #define DM_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("DM", "ERR", msg, var1, var2, var3)
286 /*! \brief 0 argument DM buffer allocation trace. */
287 #define DM_TRACE_ALLOC0(msg) WSF_TRACE0("DM", "ALLOC", msg)
288 /*! \brief 1 argument DM buffer allocation trace. */
289 #define DM_TRACE_ALLOC1(msg, var1) WSF_TRACE1("DM", "ALLOC", msg, var1)
290 /*! \brief 2 argument DM buffer allocation trace. */
291 #define DM_TRACE_ALLOC2(msg, var1, var2) WSF_TRACE2("DM", "ALLOC", msg, var1, var2)
292 /*! \brief 3 argument DM buffer allocation trace. */
293 #define DM_TRACE_ALLOC3(msg, var1, var2, var3) WSF_TRACE3("DM", "ALLOC", msg, var1, var2, var3)
294 /*! \brief 0 argument DM buffer free trace. */
295 #define DM_TRACE_FREE0(msg) WSF_TRACE0("DM", "FREE", msg)
296 /*! \brief 1 argument DM buffer free trace. */
297 #define DM_TRACE_FREE1(msg, var1) WSF_TRACE1("DM", "FREE", msg, var1)
298 /*! \brief 2 argument DM buffer free trace. */
299 #define DM_TRACE_FREE2(msg, var1, var2) WSF_TRACE2("DM", "FREE", msg, var1, var2)
300 /*! \brief 3 argument DM buffer free trace. */
301 #define DM_TRACE_FREE3(msg, var1, var2, var3) WSF_TRACE3("DM", "FREE", msg, var1, var2, var3)
302 
303 /*! \brief 0 argument L2C info trace. */
304 #define L2C_TRACE_INFO0(msg) WSF_TRACE0("L2C", "INFO", msg)
305 /*! \brief 1 argument L2C info trace. */
306 #define L2C_TRACE_INFO1(msg, var1) WSF_TRACE1("L2C", "INFO", msg, var1)
307 /*! \brief 2 argument L2C info trace. */
308 #define L2C_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("L2C", "INFO", msg, var1, var2)
309 /*! \brief 3 argument L2C info trace. */
310 #define L2C_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("L2C", "INFO", msg, var1, var2, var3)
311 /*! \brief 0 argument L2C warning trace. */
312 #define L2C_TRACE_WARN0(msg) WSF_TRACE0("L2C", "WARN", msg)
313 /*! \brief 1 argument L2C warning trace. */
314 #define L2C_TRACE_WARN1(msg, var1) WSF_TRACE1("L2C", "WARN", msg, var1)
315 /*! \brief 2 argument L2C warning trace. */
316 #define L2C_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("L2C", "WARN", msg, var1, var2)
317 /*! \brief 3 argument L2C warning trace. */
318 #define L2C_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("L2C", "WARN", msg, var1, var2, var3)
319 /*! \brief 0 argument L2C error trace. */
320 #define L2C_TRACE_ERR0(msg) WSF_TRACE0("L2C", "ERR", msg)
321 /*! \brief 1 argument L2C error trace. */
322 #define L2C_TRACE_ERR1(msg, var1) WSF_TRACE1("L2C", "ERR", msg, var1)
323 /*! \brief 2 argument L2C error trace. */
324 #define L2C_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("L2C", "ERR", msg, var1, var2)
325 /*! \brief 3 argument L2C error trace. */
326 #define L2C_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("L2C", "ERR", msg, var1, var2, var3)
327 
328 /*! \brief 0 argument ATT info trace. */
329 #define ATT_TRACE_INFO0(msg) WSF_TRACE0("ATT", "INFO", msg)
330 /*! \brief 1 argument ATT info trace. */
331 #define ATT_TRACE_INFO1(msg, var1) WSF_TRACE1("ATT", "INFO", msg, var1)
332 /*! \brief 2 argument ATT info trace. */
333 #define ATT_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("ATT", "INFO", msg, var1, var2)
334 /*! \brief 3 argument ATT info trace. */
335 #define ATT_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("ATT", "INFO", msg, var1, var2, var3)
336 /*! \brief 0 argument ATT warning trace. */
337 #define ATT_TRACE_WARN0(msg) WSF_TRACE0("ATT", "WARN", msg)
338 /*! \brief 1 argument ATT warning trace. */
339 #define ATT_TRACE_WARN1(msg, var1) WSF_TRACE1("ATT", "WARN", msg, var1)
340 /*! \brief 2 argument ATT warning trace. */
341 #define ATT_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("ATT", "WARN", msg, var1, var2)
342 /*! \brief 3 argument ATT warning trace. */
343 #define ATT_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("ATT", "WARN", msg, var1, var2, var3)
344 /*! \brief 0 argument ATT error trace. */
345 #define ATT_TRACE_ERR0(msg) WSF_TRACE0("ATT", "ERR", msg)
346 /*! \brief 1 argument ATT error trace. */
347 #define ATT_TRACE_ERR1(msg, var1) WSF_TRACE1("ATT", "ERR", msg, var1)
348 /*! \brief 2 argument ATT error trace. */
349 #define ATT_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("ATT", "ERR", msg, var1, var2)
350 /*! \brief 3 argument ATT error trace. */
351 #define ATT_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("ATT", "ERR", msg, var1, var2, var3)
352 
353 /*! \brief 0 argument SMP info trace. */
354 #define SMP_TRACE_INFO0(msg) WSF_TRACE0("SMP", "INFO", msg)
355 /*! \brief 1 argument SMP info trace. */
356 #define SMP_TRACE_INFO1(msg, var1) WSF_TRACE1("SMP", "INFO", msg, var1)
357 /*! \brief 2 argument SMP info trace. */
358 #define SMP_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("SMP", "INFO", msg, var1, var2)
359 /*! \brief 3 argument SMP info trace. */
360 #define SMP_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("SMP", "INFO", msg, var1, var2, var3)
361 /*! \brief 0 argument SMP warning trace. */
362 #define SMP_TRACE_WARN0(msg) WSF_TRACE0("SMP", "WARN", msg)
363 /*! \brief 1 argument SMP warning trace. */
364 #define SMP_TRACE_WARN1(msg, var1) WSF_TRACE1("SMP", "WARN", msg, var1)
365 /*! \brief 2 argument SMP warning trace. */
366 #define SMP_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("SMP", "WARN", msg, var1, var2)
367 /*! \brief 3 argument SMP warning trace. */
368 #define SMP_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("SMP", "WARN", msg, var1, var2, var3)
369 /*! \brief 0 argument SMP error trace. */
370 #define SMP_TRACE_ERR0(msg) WSF_TRACE0("SMP", "ERR", msg)
371 /*! \brief 1 argument SMP error trace. */
372 #define SMP_TRACE_ERR1(msg, var1) WSF_TRACE1("SMP", "ERR", msg, var1)
373 /*! \brief 2 argument SMP error trace. */
374 #define SMP_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("SMP", "ERR", msg, var1, var2)
375 /*! \brief 3 argument SMP error trace. */
376 #define SMP_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("SMP", "ERR", msg, var1, var2, var3)
377 
378 /*! \brief 0 argument App info trace. */
379 #define APP_TRACE_INFO0(msg) WSF_TRACE0("APP", "INFO", msg)
380 /*! \brief 1 argument App info trace. */
381 #define APP_TRACE_INFO1(msg, var1) WSF_TRACE1("APP", "INFO", msg, var1)
382 /*! \brief 2 argument App info trace. */
383 #define APP_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("APP", "INFO", msg, var1, var2)
384 /*! \brief 3 argument App info trace. */
385 #define APP_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("APP", "INFO", msg, var1, var2, var3)
386 /*! \brief 0 argument App warning trace. */
387 #define APP_TRACE_WARN0(msg) WSF_TRACE0("APP", "WARN", msg)
388 /*! \brief 1 argument App warning trace. */
389 #define APP_TRACE_WARN1(msg, var1) WSF_TRACE1("APP", "WARN", msg, var1)
390 /*! \brief 2 argument App warning trace. */
391 #define APP_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("APP", "WARN", msg, var1, var2)
392 /*! \brief 3 argument App warning trace. */
393 #define APP_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("APP", "WARN", msg, var1, var2, var3)
394 /*! \brief 0 argument App error trace. */
395 #define APP_TRACE_ERR0(msg) WSF_TRACE0("APP", "ERR", msg)
396 /*! \brief 1 argument App error trace. */
397 #define APP_TRACE_ERR1(msg, var1) WSF_TRACE1("APP", "ERR", msg, var1)
398 /*! \brief 2 argument App error trace. */
399 #define APP_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("APP", "ERR", msg, var1, var2)
400 /*! \brief 3 argument App error trace. */
401 #define APP_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("APP", "ERR", msg, var1, var2, var3)
402 
403 /*! \brief 0 argument LL info trace. */
404 #define LL_TRACE_INFO0(msg) WSF_TRACE0("LL", "INFO", msg)
405 /*! \brief 1 argument LL info trace. */
406 #define LL_TRACE_INFO1(msg, var1) WSF_TRACE1("LL", "INFO", msg, var1)
407 /*! \brief 2 argument LL info trace. */
408 #define LL_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("LL", "INFO", msg, var1, var2)
409 /*! \brief 3 argument LL info trace. */
410 #define LL_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("LL", "INFO", msg, var1, var2, var3)
411 /*! \brief 0 argument LL warning trace. */
412 #define LL_TRACE_WARN0(msg) WSF_TRACE0("LL", "WARN", msg)
413 /*! \brief 1 argument LL warning trace. */
414 #define LL_TRACE_WARN1(msg, var1) WSF_TRACE1("LL", "WARN", msg, var1)
415 /*! \brief 2 argument LL warning trace. */
416 #define LL_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("LL", "WARN", msg, var1, var2)
417 /*! \brief 3 argument LL warning trace. */
418 #define LL_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("LL", "WARN", msg, var1, var2, var3)
419 /*! \brief 0 argument LL error trace. */
420 #define LL_TRACE_ERR0(msg) WSF_TRACE0("LL", "ERR", msg)
421 /*! \brief 1 argument LL error trace. */
422 #define LL_TRACE_ERR1(msg, var1) WSF_TRACE1("LL", "ERR", msg, var1)
423 /*! \brief 2 argument LL error trace. */
424 #define LL_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("LL", "ERR", msg, var1, var2)
425 /*! \brief 3 argument LL error trace. */
426 #define LL_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("LL", "ERR", msg, var1, var2, var3)
427 
428 /*! \brief 0 argument BBP warning trace. */
429 #define BBP_TRACE_INFO0(msg) WSF_TRACE0("BBP", "INFO", msg)
430 /*! \brief 1 argument BBP warning trace. */
431 #define BBP_TRACE_INFO1(msg, var1) WSF_TRACE1("BBP", "INFO", msg, var1)
432 /*! \brief 2 argument BBP warning trace. */
433 #define BBP_TRACE_INFO2(msg, var1, var2) WSF_TRACE2("BBP", "INFO", msg, var1, var2)
434 /*! \brief 3 argument BBP info trace. */
435 #define BBP_TRACE_INFO3(msg, var1, var2, var3) WSF_TRACE3("BBP", "INFO", msg, var1, var2, var3)
436 /*! \brief 0 argument BBP warning trace. */
437 #define BBP_TRACE_WARN0(msg) WSF_TRACE0("BBP", "WARN", msg)
438 /*! \brief 1 argument BBP warning trace. */
439 #define BBP_TRACE_WARN1(msg, var1) WSF_TRACE1("BBP", "WARN", msg, var1)
440 /*! \brief 2 argument BBP warning trace. */
441 #define BBP_TRACE_WARN2(msg, var1, var2) WSF_TRACE2("BBP", "WARN", msg, var1, var2)
442 /*! \brief 3 argument BBP warning trace. */
443 #define BBP_TRACE_WARN3(msg, var1, var2, var3) WSF_TRACE3("BBP", "WARN", msg, var1, var2, var3)
444 /*! \brief 0 argument BBP error trace. */
445 #define BBP_TRACE_ERR0(msg) WSF_TRACE0("BBP", "ERR", msg)
446 /*! \brief 1 argument BBP error trace. */
447 #define BBP_TRACE_ERR1(msg, var1) WSF_TRACE1("BBP", "ERR", msg, var1)
448 /*! \brief 2 argument BBP error trace. */
449 #define BBP_TRACE_ERR2(msg, var1, var2) WSF_TRACE2("BBP", "ERR", msg, var1, var2)
450 /*! \brief 3 argument BBP error trace. */
451 #define BBP_TRACE_ERR3(msg, var1, var2, var3) WSF_TRACE3("BBP", "ERR", msg, var1, var2, var3)
452 
453 #if (WSF_TRACE_ENABLED == TRUE) || (WSF_TOKEN_ENABLED == TRUE)
454 /*! \brief Enable LL trace. */
455 #define LL_TRACE_ENABLE(ena) WsfTraceEnable(ena)
456 #else
457 #define LL_TRACE_ENABLE(ena)
458 #endif
459 
460 /*! \} */ /* WSF_TRACE_API */
461 
462 #ifdef __cplusplus
463 };
464 #endif
465 
466 #endif /* WSF_TRACE_H */
uint8_t bool_t
Boolean data type.
Definition: wsf_types.h:78
void WsfTraceEnable(bool_t enable)
Enable trace messages.
void WsfTraceRegister(wsfTraceCback_t cback)
Register platform trace callback function.
void(* wsfTraceCback_t)(const char *pStr, va_list args)
Platform trace callback.
Definition: wsf_trace.h:53
void(* WsfTokenHandler_t)(uint8_t *pBuf, uint8_t len)
Token event handler.
Definition: wsf_trace.h:50
void WsfTokenRegisterHandler(WsfTokenHandler_t tokenCback)
Regsiter token handler.
unsigned long uint32_t
Unsigned 32-bit value.
Definition: wsf_types.h:71
void WsfToken(uint32_t tok, uint32_t var)
Output tokenized message.
void WsfTrace(const char *pStr,...)
Print a trace message.
bool_t WsfTokenService(void)
Service the trace ring buffer.
unsigned char uint8_t
Unsigned 8-bit value.
Definition: wsf_types.h:63