1/*
2 * Copyright (C) 2010-2014 NXP Semiconductors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#if !defined(NXPLOG__H_INCLUDED)
18#define NXPLOG__H_INCLUDED
19#include <log/log.h>
20
21typedef struct nci_log_level {
22  uint8_t global_log_level;
23  uint8_t extns_log_level;
24  uint8_t hal_log_level;
25  uint8_t dnld_log_level;
26  uint8_t tml_log_level;
27  uint8_t ncix_log_level;
28  uint8_t ncir_log_level;
29} nci_log_level_t;
30
31/* global log level Ref */
32extern nci_log_level_t gLog_level;
33extern bool nfc_debug_enabled;
34/* define log module included when compile */
35#define ENABLE_EXTNS_TRACES TRUE
36#define ENABLE_HAL_TRACES TRUE
37#define ENABLE_TML_TRACES TRUE
38#define ENABLE_FWDNLD_TRACES TRUE
39#define ENABLE_NCIX_TRACES TRUE
40#define ENABLE_NCIR_TRACES TRUE
41
42#define ENABLE_HCPX_TRACES FALSE
43#define ENABLE_HCPR_TRACES FALSE
44
45/* ####################### Set the log module name in .conf file
46 * ########################## */
47#define NAME_NXPLOG_EXTNS_LOGLEVEL "NXPLOG_EXTNS_LOGLEVEL"
48#define NAME_NXPLOG_HAL_LOGLEVEL "NXPLOG_NCIHAL_LOGLEVEL"
49#define NAME_NXPLOG_NCIX_LOGLEVEL "NXPLOG_NCIX_LOGLEVEL"
50#define NAME_NXPLOG_NCIR_LOGLEVEL "NXPLOG_NCIR_LOGLEVEL"
51#define NAME_NXPLOG_FWDNLD_LOGLEVEL "NXPLOG_FWDNLD_LOGLEVEL"
52#define NAME_NXPLOG_TML_LOGLEVEL "NXPLOG_TML_LOGLEVEL"
53
54/* ####################### Set the log module name by Android property
55 * ########################## */
56#define PROP_NAME_NXPLOG_GLOBAL_LOGLEVEL "nfc.nxp_log_level_global"
57#define PROP_NAME_NXPLOG_EXTNS_LOGLEVEL "nfc.nxp_log_level_extns"
58#define PROP_NAME_NXPLOG_HAL_LOGLEVEL "nfc.nxp_log_level_hal"
59#define PROP_NAME_NXPLOG_NCI_LOGLEVEL "nfc.nxp_log_level_nci"
60#define PROP_NAME_NXPLOG_FWDNLD_LOGLEVEL "nfc.nxp_log_level_dnld"
61#define PROP_NAME_NXPLOG_TML_LOGLEVEL "nfc.nxp_log_level_tml"
62
63/* ####################### Set the logging level for EVERY COMPONENT here
64 * ######################## :START: */
65#define NXPLOG_LOG_SILENT_LOGLEVEL 0x00
66#define NXPLOG_LOG_ERROR_LOGLEVEL 0x01
67#define NXPLOG_LOG_WARN_LOGLEVEL 0x02
68#define NXPLOG_LOG_DEBUG_LOGLEVEL 0x03
69/* ####################### Set the default logging level for EVERY COMPONENT
70 * here ########################## :END: */
71
72/* The Default log level for all the modules. */
73#define NXPLOG_DEFAULT_LOGLEVEL NXPLOG_LOG_ERROR_LOGLEVEL
74
75/* ################################################################################################################
76 */
77/* ############################################### Component Names
78 * ################################################ */
79/* ################################################################################################################
80 */
81
82extern const char* NXPLOG_ITEM_EXTNS;  /* Android logging tag for NxpExtns  */
83extern const char* NXPLOG_ITEM_NCIHAL; /* Android logging tag for NxpNciHal */
84extern const char* NXPLOG_ITEM_NCIX;   /* Android logging tag for NxpNciX   */
85extern const char* NXPLOG_ITEM_NCIR;   /* Android logging tag for NxpNciR   */
86extern const char* NXPLOG_ITEM_FWDNLD; /* Android logging tag for NxpFwDnld */
87extern const char* NXPLOG_ITEM_TML;    /* Android logging tag for NxpTml    */
88
89#ifdef NXP_HCI_REQ
90extern const char* NXPLOG_ITEM_HCPX; /* Android logging tag for NxpHcpX   */
91extern const char* NXPLOG_ITEM_HCPR; /* Android logging tag for NxpHcpR   */
92#endif                               /*NXP_HCI_REQ*/
93
94/* ######################################## Defines used for Logging data
95 * ######################################### */
96#ifdef NXP_VRBS_REQ
97#define NXPLOG_FUNC_ENTRY(COMP) \
98  LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "+:%s", (__func__))
99#define NXPLOG_FUNC_EXIT(COMP) \
100  LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "-:%s", (__func__))
101#endif /*NXP_VRBS_REQ*/
102
103/* ################################################################################################################
104 */
105/* ######################################## Logging APIs of actual modules
106 * ######################################## */
107/* ################################################################################################################
108 */
109/* Logging APIs used by NxpExtns module */
110#if (ENABLE_EXTNS_TRACES == TRUE)
111#define NXPLOG_EXTNS_D(...)                                       \
112  {                                                               \
113     if ((nfc_debug_enabled) ||                                   \
114      (gLog_level.extns_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL))  \
115      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_EXTNS, __VA_ARGS__); \
116  }
117#define NXPLOG_EXTNS_W(...)                                      \
118  {                                                              \
119     if ((nfc_debug_enabled) ||                                  \
120      (gLog_level.extns_log_level >= NXPLOG_LOG_WARN_LOGLEVEL))  \
121      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_EXTNS, __VA_ARGS__); \
122  }
123#define NXPLOG_EXTNS_E(...)                                       \
124  {                                                               \
125    if (gLog_level.extns_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)  \
126      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_EXTNS, __VA_ARGS__); \
127  }
128#else
129#define NXPLOG_EXTNS_D(...)
130#define NXPLOG_EXTNS_W(...)
131#define NXPLOG_EXTNS_E(...)
132#endif /* Logging APIs used by NxpExtns module */
133
134/* Logging APIs used by NxpNciHal module */
135#if (ENABLE_HAL_TRACES == TRUE)
136#define NXPLOG_NCIHAL_D(...)                                       \
137  {                                                                \
138    if ((nfc_debug_enabled) ||                                     \
139      (gLog_level.hal_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL))     \
140      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
141  }
142#define NXPLOG_NCIHAL_W(...)                                      \
143  {                                                               \
144    if ((nfc_debug_enabled) ||                                    \
145      (gLog_level.hal_log_level >= NXPLOG_LOG_WARN_LOGLEVEL))     \
146      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
147  }
148#define NXPLOG_NCIHAL_E(...)                                       \
149  {                                                                \
150    if (gLog_level.hal_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)     \
151      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \
152  }
153#else
154#define NXPLOG_NCIHAL_D(...)
155#define NXPLOG_NCIHAL_W(...)
156#define NXPLOG_NCIHAL_E(...)
157#endif /* Logging APIs used by HAL module */
158
159/* Logging APIs used by NxpNciX module */
160#if (ENABLE_NCIX_TRACES == TRUE)
161#define NXPLOG_NCIX_D(...)                                       \
162  {                                                              \
163    if ((nfc_debug_enabled) ||                                   \
164      (gLog_level.ncix_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL))  \
165      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
166  }
167#define NXPLOG_NCIX_W(...)                                      \
168  {                                                             \
169     if ((nfc_debug_enabled) ||                                 \
170      (gLog_level.ncix_log_level >= NXPLOG_LOG_WARN_LOGLEVEL))  \
171      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
172  }
173#define NXPLOG_NCIX_E(...)                                       \
174  {                                                              \
175    if (gLog_level.ncix_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)  \
176      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIX, __VA_ARGS__); \
177  }
178#else
179#define NXPLOG_NCIX_D(...)
180#define NXPLOG_NCIX_W(...)
181#define NXPLOG_NCIX_E(...)
182#endif /* Logging APIs used by NCIx module */
183
184/* Logging APIs used by NxpNciR module */
185#if (ENABLE_NCIR_TRACES == TRUE)
186#define NXPLOG_NCIR_D(...)                                       \
187  {                                                              \
188     if ((nfc_debug_enabled) ||                                  \
189      (gLog_level.ncir_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL))  \
190      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
191  }
192#define NXPLOG_NCIR_W(...)                                      \
193  {                                                             \
194     if ((nfc_debug_enabled) ||                                 \
195      (gLog_level.ncir_log_level >= NXPLOG_LOG_WARN_LOGLEVEL))  \
196      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
197  }
198#define NXPLOG_NCIR_E(...)                                       \
199  {                                                              \
200    if (gLog_level.ncir_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)  \
201      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIR, __VA_ARGS__); \
202  }
203#else
204#define NXPLOG_NCIR_D(...)
205#define NXPLOG_NCIR_W(...)
206#define NXPLOG_NCIR_E(...)
207#endif /* Logging APIs used by NCIR module */
208
209/* Logging APIs used by NxpFwDnld module */
210#if (ENABLE_FWDNLD_TRACES == TRUE)
211#define NXPLOG_FWDNLD_D(...)                                       \
212  {                                                                \
213     if ((nfc_debug_enabled) ||                                    \
214      (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL))    \
215      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
216  }
217#define NXPLOG_FWDNLD_W(...)                                      \
218  {                                                               \
219     if ((nfc_debug_enabled) ||                                   \
220      (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL))    \
221      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
222  }
223#define NXPLOG_FWDNLD_E(...)                                       \
224  {                                                                \
225    if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)    \
226      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
227  }
228#else
229#define NXPLOG_FWDNLD_D(...)
230#define NXPLOG_FWDNLD_W(...)
231#define NXPLOG_FWDNLD_E(...)
232#endif /* Logging APIs used by NxpFwDnld module */
233
234/* Logging APIs used by NxpTml module */
235#if (ENABLE_TML_TRACES == TRUE)
236#define NXPLOG_TML_D(...)                                       \
237  {                                                             \
238     if ((nfc_debug_enabled) ||                                 \
239      (gLog_level.tml_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL))  \
240      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_TML, __VA_ARGS__); \
241  }
242#define NXPLOG_TML_W(...)                                      \
243  {                                                            \
244     if ((nfc_debug_enabled) ||                                \
245      (gLog_level.tml_log_level >= NXPLOG_LOG_WARN_LOGLEVEL))  \
246      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_TML, __VA_ARGS__); \
247  }
248#define NXPLOG_TML_E(...)                                       \
249  {                                                             \
250    if (gLog_level.tml_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)  \
251      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_TML, __VA_ARGS__); \
252  }
253#else
254#define NXPLOG_TML_D(...)
255#define NXPLOG_TML_W(...)
256#define NXPLOG_TML_E(...)
257#endif /* Logging APIs used by NxpTml module */
258
259#ifdef NXP_HCI_REQ
260/* Logging APIs used by NxpHcpX module */
261#if (ENABLE_HCPX_TRACES == TRUE)
262#define NXPLOG_HCPX_D(...)                                         \
263  {                                                                \
264     if ((nfc_debug_enabled) ||                                    \
265      (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL))    \
266      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
267  }
268#define NXPLOG_HCPX_W(...)                                        \
269  {                                                               \
270     if ((nfc_debug_enabled) ||                                   \
271      (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL))    \
272      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
273  }
274#define NXPLOG_HCPX_E(...)                                         \
275  {                                                                \
276    if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)    \
277      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
278  }
279#else
280#define NXPLOG_HCPX_D(...)
281#define NXPLOG_HCPX_W(...)
282#define NXPLOG_HCPX_E(...)
283#endif /* Logging APIs used by NxpHcpX module */
284
285/* Logging APIs used by NxpHcpR module */
286#if (ENABLE_HCPR_TRACES == TRUE)
287#define NXPLOG_HCPR_D(...)                                         \
288  {                                                                \
289     if ((nfc_debug_enabled) ||                                    \
290      (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL))    \
291      LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
292  }
293#define NXPLOG_HCPR_W(...)                                        \
294  {                                                               \
295     if ((nfc_debug_enabled) ||                                   \
296      (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL))    \
297      LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
298  }
299#define NXPLOG_HCPR_E(...)                                         \
300  {                                                                \
301    if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL)    \
302      LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \
303  }
304#else
305#define NXPLOG_HCPR_D(...)
306#define NXPLOG_HCPR_W(...)
307#define NXPLOG_HCPR_E(...)
308#endif /* Logging APIs used by NxpHcpR module */
309#endif /* NXP_HCI_REQ */
310
311#ifdef NXP_VRBS_REQ
312#if (ENABLE_EXTNS_TRACES == TRUE)
313#define NXPLOG_EXTNS_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_EXTNS)
314#define NXPLOG_EXTNS_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_EXTNS)
315#else
316#define NXPLOG_EXTNS_ENTRY()
317#define NXPLOG_EXTNS_EXIT()
318#endif
319
320#if (ENABLE_HAL_TRACES == TRUE)
321#define NXPLOG_NCIHAL_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIHAL)
322#define NXPLOG_NCIHAL_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIHAL)
323#else
324#define NXPLOG_NCIHAL_ENTRY()
325#define NXPLOG_NCIHAL_EXIT()
326#endif
327
328#if (ENABLE_NCIX_TRACES == TRUE)
329#define NXPLOG_NCIX_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIX)
330#define NXPLOG_NCIX_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIX)
331#else
332#define NXPLOG_NCIX_ENTRY()
333#define NXPLOG_NCIX_EXIT()
334#endif
335
336#if (ENABLE_NCIR_TRACES == TRUE)
337#define NXPLOG_NCIR_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIR)
338#define NXPLOG_NCIR_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIR)
339#else
340#define NXPLOG_NCIR_ENTRY()
341#define NXPLOG_NCIR_EXIT()
342#endif
343
344#ifdef NXP_HCI_REQ
345
346#if (ENABLE_HCPX_TRACES == TRUE)
347#define NXPLOG_HCPX_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_HCPX)
348#define NXPLOG_HCPX_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_HCPX)
349#else
350#define NXPLOG_HCPX_ENTRY()
351#define NXPLOG_HCPX_EXIT()
352#endif
353
354#if (ENABLE_HCPR_TRACES == TRUE)
355#define NXPLOG_HCPR_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_HCPR)
356#define NXPLOG_HCPR_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_HCPR)
357#else
358#define NXPLOG_HCPR_ENTRY()
359#define NXPLOG_HCPR_EXIT()
360#endif
361#endif /* NXP_HCI_REQ */
362
363#endif /* NXP_VRBS_REQ */
364
365void phNxpLog_InitializeLogLevel(void);
366
367#endif /* NXPLOG__H_INCLUDED */
368