1 /*
2  * Copyright (C) 2015 The Android Open Source Project
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 
20 #include <cutils/log.h>
21 
22 typedef struct nci_log_level
23 {
24     uint8_t global_log_level;
25     uint8_t extns_log_level;
26     uint8_t hal_log_level;
27     uint8_t dnld_log_level;
28     uint8_t tml_log_level;
29     uint8_t ncix_log_level;
30     uint8_t ncir_log_level;
31 } nci_log_level_t;
32 
33 /* global log level Ref */
34 extern nci_log_level_t gLog_level;
35 
36 /* define log module included when compile */
37 #define ENABLE_EXTNS_TRACES   TRUE
38 #define ENABLE_HAL_TRACES     TRUE
39 #define ENABLE_TML_TRACES     TRUE
40 #define ENABLE_FWDNLD_TRACES  TRUE
41 #define ENABLE_NCIX_TRACES    TRUE
42 #define ENABLE_NCIR_TRACES    TRUE
43 
44 #define ENABLE_HCPX_TRACES    FALSE
45 #define ENABLE_HCPR_TRACES    FALSE
46 
47 /* ####################### Set the log module name in .conf file ########################## */
48 #define NAME_NXPLOG_EXTNS_LOGLEVEL          "NXPLOG_EXTNS_LOGLEVEL"
49 #define NAME_NXPLOG_HAL_LOGLEVEL            "NXPLOG_NCIHAL_LOGLEVEL"
50 #define NAME_NXPLOG_NCIX_LOGLEVEL           "NXPLOG_NCIX_LOGLEVEL"
51 #define NAME_NXPLOG_NCIR_LOGLEVEL           "NXPLOG_NCIR_LOGLEVEL"
52 #define NAME_NXPLOG_FWDNLD_LOGLEVEL         "NXPLOG_FWDNLD_LOGLEVEL"
53 #define NAME_NXPLOG_TML_LOGLEVEL            "NXPLOG_TML_LOGLEVEL"
54 
55 /* ####################### Set the log module name by Android property ########################## */
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 ######################## :START: */
64 #define NXPLOG_LOG_SILENT_LOGLEVEL             0x00
65 #define NXPLOG_LOG_ERROR_LOGLEVEL              0x01
66 #define NXPLOG_LOG_WARN_LOGLEVEL               0x02
67 #define NXPLOG_LOG_DEBUG_LOGLEVEL              0x03
68 /* ####################### Set the default logging level for EVERY COMPONENT here ########################## :END: */
69 
70 
71 /* The Default log level for all the modules. */
72 #define NXPLOG_DEFAULT_LOGLEVEL                NXPLOG_LOG_ERROR_LOGLEVEL
73 
74 
75 /* ################################################################################################################ */
76 /* ############################################### Component Names ################################################ */
77 /* ################################################################################################################ */
78 
79 extern const char * NXPLOG_ITEM_EXTNS;   /* Android logging tag for NxpExtns  */
80 extern const char * NXPLOG_ITEM_NCIHAL;  /* Android logging tag for NxpNciHal */
81 extern const char * NXPLOG_ITEM_NCIX;    /* Android logging tag for NxpNciX   */
82 extern const char * NXPLOG_ITEM_NCIR;    /* Android logging tag for NxpNciR   */
83 extern const char * NXPLOG_ITEM_FWDNLD;  /* Android logging tag for NxpFwDnld */
84 extern const char * NXPLOG_ITEM_TML;     /* Android logging tag for NxpTml    */
85 
86 #ifdef NXP_HCI_REQ
87 extern const char * NXPLOG_ITEM_HCPX;    /* Android logging tag for NxpHcpX   */
88 extern const char * NXPLOG_ITEM_HCPR;    /* Android logging tag for NxpHcpR   */
89 #endif /*NXP_HCI_REQ*/
90 
91 /* ######################################## Defines used for Logging data ######################################### */
92 #ifdef NXP_VRBS_REQ
93 #define NXPLOG_FUNC_ENTRY(COMP) \
94     LOG_PRI( ANDROID_LOG_VERBOSE, (COMP), "+:%s", (__FUNCTION__))
95 #define NXPLOG_FUNC_EXIT(COMP) \
96     LOG_PRI(ANDROID_LOG_VERBOSE, (COMP), "-:%s", (__FUNCTION__))
97 #endif /*NXP_VRBS_REQ*/
98 
99 /* ################################################################################################################ */
100 /* ######################################## Logging APIs of actual modules ######################################## */
101 /* ################################################################################################################ */
102 /* Logging APIs used by NxpExtns module */
103 #if (ENABLE_EXTNS_TRACES == TRUE )
104 #define NXPLOG_EXTNS_D(...)  {if (gLog_level.extns_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) LOG_PRI (ANDROID_LOG_DEBUG, NXPLOG_ITEM_EXTNS, __VA_ARGS__);}
105 #define NXPLOG_EXTNS_W(...)  {if (gLog_level.extns_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) LOG_PRI (ANDROID_LOG_WARN, NXPLOG_ITEM_EXTNS, __VA_ARGS__);}
106 #define NXPLOG_EXTNS_E(...)  {if (gLog_level.extns_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) LOG_PRI (ANDROID_LOG_ERROR, NXPLOG_ITEM_EXTNS, __VA_ARGS__);}
107 #else
108 #define NXPLOG_EXTNS_D(...)
109 #define NXPLOG_EXTNS_W(...)
110 #define NXPLOG_EXTNS_E(...)
111 #endif /* Logging APIs used by NxpExtns module */
112 
113 /* Logging APIs used by NxpNciHal module */
114 #if (ENABLE_HAL_TRACES == TRUE )
115 #define NXPLOG_NCIHAL_D(...)  {if (gLog_level.hal_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) LOG_PRI (ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIHAL, __VA_ARGS__);}
116 #define NXPLOG_NCIHAL_W(...)  {if (gLog_level.hal_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) LOG_PRI (ANDROID_LOG_WARN, NXPLOG_ITEM_NCIHAL, __VA_ARGS__);}
117 #define NXPLOG_NCIHAL_E(...)  {if (gLog_level.hal_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) LOG_PRI (ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIHAL, __VA_ARGS__);}
118 #else
119 #define NXPLOG_NCIHAL_D(...)
120 #define NXPLOG_NCIHAL_W(...)
121 #define NXPLOG_NCIHAL_E(...)
122 #endif /* Logging APIs used by HAL module */
123 
124 /* Logging APIs used by NxpNciX module */
125 #if (ENABLE_NCIX_TRACES == TRUE )
126 #define NXPLOG_NCIX_D(...)  {if (gLog_level.ncix_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) LOG_PRI (ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIX, __VA_ARGS__);}
127 #define NXPLOG_NCIX_W(...)  {if (gLog_level.ncix_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) LOG_PRI (ANDROID_LOG_WARN, NXPLOG_ITEM_NCIX, __VA_ARGS__);}
128 #define NXPLOG_NCIX_E(...)  {if (gLog_level.ncix_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) LOG_PRI (ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIX, __VA_ARGS__);}
129 #else
130 #define NXPLOG_NCIX_D(...)
131 #define NXPLOG_NCIX_W(...)
132 #define NXPLOG_NCIX_E(...)
133 #endif /* Logging APIs used by NCIx module */
134 
135 /* Logging APIs used by NxpNciR module */
136 #if (ENABLE_NCIR_TRACES == TRUE )
137 #define NXPLOG_NCIR_D(...)  {if (gLog_level.ncir_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) LOG_PRI (ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIR, __VA_ARGS__);}
138 #define NXPLOG_NCIR_W(...)  {if (gLog_level.ncir_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) LOG_PRI (ANDROID_LOG_WARN, NXPLOG_ITEM_NCIR, __VA_ARGS__);}
139 #define NXPLOG_NCIR_E(...)  {if (gLog_level.ncir_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) LOG_PRI (ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIR, __VA_ARGS__);}
140 #else
141 #define NXPLOG_NCIR_D(...)
142 #define NXPLOG_NCIR_W(...)
143 #define NXPLOG_NCIR_E(...)
144 #endif /* Logging APIs used by NCIR module */
145 
146 /* Logging APIs used by NxpFwDnld module */
147 #if (ENABLE_FWDNLD_TRACES == TRUE )
148 #define NXPLOG_FWDNLD_D(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) LOG_PRI (ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
149 #define NXPLOG_FWDNLD_W(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) LOG_PRI (ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
150 #define NXPLOG_FWDNLD_E(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) LOG_PRI (ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
151 #else
152 #define NXPLOG_FWDNLD_D(...)
153 #define NXPLOG_FWDNLD_W(...)
154 #define NXPLOG_FWDNLD_E(...)
155 #endif /* Logging APIs used by NxpFwDnld module */
156 
157 /* Logging APIs used by NxpTml module */
158 #if (ENABLE_TML_TRACES == TRUE )
159 #define NXPLOG_TML_D(...)  {if (gLog_level.tml_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) LOG_PRI (ANDROID_LOG_DEBUG, NXPLOG_ITEM_TML, __VA_ARGS__);}
160 #define NXPLOG_TML_W(...)  {if (gLog_level.tml_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) LOG_PRI (ANDROID_LOG_WARN, NXPLOG_ITEM_TML, __VA_ARGS__);}
161 #define NXPLOG_TML_E(...)  {if (gLog_level.tml_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) LOG_PRI (ANDROID_LOG_ERROR, NXPLOG_ITEM_TML, __VA_ARGS__);}
162 #else
163 #define NXPLOG_TML_D(...)
164 #define NXPLOG_TML_W(...)
165 #define NXPLOG_TML_E(...)
166 #endif /* Logging APIs used by NxpTml module */
167 
168 #ifdef NXP_HCI_REQ
169 /* Logging APIs used by NxpHcpX module */
170 #if (ENABLE_HCPX_TRACES == TRUE )
171 #define NXPLOG_HCPX_D(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) LOG_PRI (ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
172 #define NXPLOG_HCPX_W(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) LOG_PRI (ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
173 #define NXPLOG_HCPX_E(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) LOG_PRI (ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
174 #else
175 #define NXPLOG_HCPX_D(...)
176 #define NXPLOG_HCPX_W(...)
177 #define NXPLOG_HCPX_E(...)
178 #endif /* Logging APIs used by NxpHcpX module */
179 
180 /* Logging APIs used by NxpHcpR module */
181 #if (ENABLE_HCPR_TRACES == TRUE )
182 #define NXPLOG_HCPR_D(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) LOG_PRI (ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
183 #define NXPLOG_HCPR_W(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) LOG_PRI (ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
184 #define NXPLOG_HCPR_E(...)  {if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) LOG_PRI (ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__);}
185 #else
186 #define NXPLOG_HCPR_D(...)
187 #define NXPLOG_HCPR_W(...)
188 #define NXPLOG_HCPR_E(...)
189 #endif /* Logging APIs used by NxpHcpR module */
190 #endif /* NXP_HCI_REQ */
191 
192 #ifdef NXP_VRBS_REQ
193 #if (ENABLE_EXTNS_TRACES == TRUE )
194 #define NXPLOG_EXTNS_ENTRY() NXPLOG_FUNC_ENTRY (NXPLOG_ITEM_EXTNS)
195 #define NXPLOG_EXTNS_EXIT()  NXPLOG_FUNC_EXIT (NXPLOG_ITEM_EXTNS)
196 #else
197 #define NXPLOG_EXTNS_ENTRY()
198 #define NXPLOG_EXTNS_EXIT()
199 #endif
200 
201 #if (ENABLE_HAL_TRACES == TRUE )
202 #define NXPLOG_NCIHAL_ENTRY() NXPLOG_FUNC_ENTRY (NXPLOG_ITEM_NCIHAL)
203 #define NXPLOG_NCIHAL_EXIT()  NXPLOG_FUNC_EXIT (NXPLOG_ITEM_NCIHAL)
204 #else
205 #define NXPLOG_NCIHAL_ENTRY()
206 #define NXPLOG_NCIHAL_EXIT()
207 #endif
208 
209 #if (ENABLE_NCIX_TRACES == TRUE )
210 #define NXPLOG_NCIX_ENTRY() NXPLOG_FUNC_ENTRY (NXPLOG_ITEM_NCIX)
211 #define NXPLOG_NCIX_EXIT()  NXPLOG_FUNC_EXIT (NXPLOG_ITEM_NCIX)
212 #else
213 #define NXPLOG_NCIX_ENTRY()
214 #define NXPLOG_NCIX_EXIT()
215 #endif
216 
217 #if (ENABLE_NCIR_TRACES == TRUE )
218 #define NXPLOG_NCIR_ENTRY() NXPLOG_FUNC_ENTRY (NXPLOG_ITEM_NCIR)
219 #define NXPLOG_NCIR_EXIT()  NXPLOG_FUNC_EXIT (NXPLOG_ITEM_NCIR)
220 #else
221 #define NXPLOG_NCIR_ENTRY()
222 #define NXPLOG_NCIR_EXIT()
223 #endif
224 
225 #ifdef NXP_HCI_REQ
226 
227 #if (ENABLE_HCPX_TRACES == TRUE )
228 #define NXPLOG_HCPX_ENTRY() NXPLOG_FUNC_ENTRY (NXPLOG_ITEM_HCPX)
229 #define NXPLOG_HCPX_EXIT()  NXPLOG_FUNC_EXIT (NXPLOG_ITEM_HCPX)
230 #else
231 #define NXPLOG_HCPX_ENTRY()
232 #define NXPLOG_HCPX_EXIT()
233 #endif
234 
235 #if (ENABLE_HCPR_TRACES == TRUE )
236 #define NXPLOG_HCPR_ENTRY() NXPLOG_FUNC_ENTRY (NXPLOG_ITEM_HCPR)
237 #define NXPLOG_HCPR_EXIT()  NXPLOG_FUNC_EXIT (NXPLOG_ITEM_HCPR)
238 #else
239 #define NXPLOG_HCPR_ENTRY()
240 #define NXPLOG_HCPR_EXIT()
241 #endif
242 #endif /* NXP_HCI_REQ */
243 
244 #endif /* NXP_VRBS_REQ */
245 
246 void phNxpLog_InitializeLogLevel (void);
247 
248 #endif /* NXPLOG__H_INCLUDED */
249