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 <log/log.h> 21 22 typedef struct nci_log_level { 23 uint8_t global_log_level; 24 uint8_t extns_log_level; 25 uint8_t hal_log_level; 26 uint8_t dnld_log_level; 27 uint8_t tml_log_level; 28 uint8_t ncix_log_level; 29 uint8_t ncir_log_level; 30 } nci_log_level_t; 31 32 /* global log level Ref */ 33 extern nci_log_level_t gLog_level; 34 35 /* define log module included when compile */ 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 82 extern const char* NXPLOG_ITEM_EXTNS; /* Android logging tag for NxpExtns */ 83 extern const char* NXPLOG_ITEM_NCIHAL; /* Android logging tag for NxpNciHal */ 84 extern const char* NXPLOG_ITEM_NCIX; /* Android logging tag for NxpNciX */ 85 extern const char* NXPLOG_ITEM_NCIR; /* Android logging tag for NxpNciR */ 86 extern const char* NXPLOG_ITEM_FWDNLD; /* Android logging tag for NxpFwDnld */ 87 extern const char* NXPLOG_ITEM_TML; /* Android logging tag for NxpTml */ 88 89 #ifdef NXP_HCI_REQ 90 extern const char* NXPLOG_ITEM_HCPX; /* Android logging tag for NxpHcpX */ 91 extern 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 NxpNciHal module */ 110 #if (ENABLE_HAL_TRACES == TRUE) 111 #define NXPLOG_NCIHAL_D(...) \ 112 { \ 113 if (gLog_level.hal_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \ 114 LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \ 115 } 116 #define NXPLOG_NCIHAL_W(...) \ 117 { \ 118 if (gLog_level.hal_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \ 119 LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \ 120 } 121 #define NXPLOG_NCIHAL_E(...) \ 122 { \ 123 if (gLog_level.hal_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \ 124 LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIHAL, __VA_ARGS__); \ 125 } 126 #else 127 #define NXPLOG_NCIHAL_D(...) 128 #define NXPLOG_NCIHAL_W(...) 129 #define NXPLOG_NCIHAL_E(...) 130 #endif /* Logging APIs used by HAL module */ 131 132 /* Logging APIs used by NxpNciX module */ 133 #if (ENABLE_NCIX_TRACES == TRUE) 134 #define NXPLOG_NCIX_D(...) \ 135 { \ 136 if (gLog_level.ncix_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \ 137 LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIX, __VA_ARGS__); \ 138 } 139 #define NXPLOG_NCIX_W(...) \ 140 { \ 141 if (gLog_level.ncix_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \ 142 LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIX, __VA_ARGS__); \ 143 } 144 #define NXPLOG_NCIX_E(...) \ 145 { \ 146 if (gLog_level.ncix_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \ 147 LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIX, __VA_ARGS__); \ 148 } 149 #else 150 #define NXPLOG_NCIX_D(...) 151 #define NXPLOG_NCIX_W(...) 152 #define NXPLOG_NCIX_E(...) 153 #endif /* Logging APIs used by NCIx module */ 154 155 /* Logging APIs used by NxpNciR module */ 156 #if (ENABLE_NCIR_TRACES == TRUE) 157 #define NXPLOG_NCIR_D(...) \ 158 { \ 159 if (gLog_level.ncir_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \ 160 LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_NCIR, __VA_ARGS__); \ 161 } 162 #define NXPLOG_NCIR_W(...) \ 163 { \ 164 if (gLog_level.ncir_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \ 165 LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_NCIR, __VA_ARGS__); \ 166 } 167 #define NXPLOG_NCIR_E(...) \ 168 { \ 169 if (gLog_level.ncir_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \ 170 LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_NCIR, __VA_ARGS__); \ 171 } 172 #else 173 #define NXPLOG_NCIR_D(...) 174 #define NXPLOG_NCIR_W(...) 175 #define NXPLOG_NCIR_E(...) 176 #endif /* Logging APIs used by NCIR module */ 177 178 /* Logging APIs used by NxpFwDnld module */ 179 #if (ENABLE_FWDNLD_TRACES == TRUE) 180 #define NXPLOG_FWDNLD_D(...) \ 181 { \ 182 if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \ 183 LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 184 } 185 #define NXPLOG_FWDNLD_W(...) \ 186 { \ 187 if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \ 188 LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 189 } 190 #define NXPLOG_FWDNLD_E(...) \ 191 { \ 192 if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \ 193 LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 194 } 195 #else 196 #define NXPLOG_FWDNLD_D(...) 197 #define NXPLOG_FWDNLD_W(...) 198 #define NXPLOG_FWDNLD_E(...) 199 #endif /* Logging APIs used by NxpFwDnld module */ 200 201 /* Logging APIs used by NxpTml module */ 202 #if (ENABLE_TML_TRACES == TRUE) 203 #define NXPLOG_TML_D(...) \ 204 { \ 205 if (gLog_level.tml_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \ 206 LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_TML, __VA_ARGS__); \ 207 } 208 #define NXPLOG_TML_W(...) \ 209 { \ 210 if (gLog_level.tml_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \ 211 LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_TML, __VA_ARGS__); \ 212 } 213 #define NXPLOG_TML_E(...) \ 214 { \ 215 if (gLog_level.tml_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \ 216 LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_TML, __VA_ARGS__); \ 217 } 218 #else 219 #define NXPLOG_TML_D(...) 220 #define NXPLOG_TML_W(...) 221 #define NXPLOG_TML_E(...) 222 #endif /* Logging APIs used by NxpTml module */ 223 224 #ifdef NXP_HCI_REQ 225 /* Logging APIs used by NxpHcpX module */ 226 #if (ENABLE_HCPX_TRACES == TRUE) 227 #define NXPLOG_HCPX_D(...) \ 228 { \ 229 if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \ 230 LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 231 } 232 #define NXPLOG_HCPX_W(...) \ 233 { \ 234 if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \ 235 LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 236 } 237 #define NXPLOG_HCPX_E(...) \ 238 { \ 239 if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \ 240 LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 241 } 242 #else 243 #define NXPLOG_HCPX_D(...) 244 #define NXPLOG_HCPX_W(...) 245 #define NXPLOG_HCPX_E(...) 246 #endif /* Logging APIs used by NxpHcpX module */ 247 248 /* Logging APIs used by NxpHcpR module */ 249 #if (ENABLE_HCPR_TRACES == TRUE) 250 #define NXPLOG_HCPR_D(...) \ 251 { \ 252 if (gLog_level.dnld_log_level >= NXPLOG_LOG_DEBUG_LOGLEVEL) \ 253 LOG_PRI(ANDROID_LOG_DEBUG, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 254 } 255 #define NXPLOG_HCPR_W(...) \ 256 { \ 257 if (gLog_level.dnld_log_level >= NXPLOG_LOG_WARN_LOGLEVEL) \ 258 LOG_PRI(ANDROID_LOG_WARN, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 259 } 260 #define NXPLOG_HCPR_E(...) \ 261 { \ 262 if (gLog_level.dnld_log_level >= NXPLOG_LOG_ERROR_LOGLEVEL) \ 263 LOG_PRI(ANDROID_LOG_ERROR, NXPLOG_ITEM_FWDNLD, __VA_ARGS__); \ 264 } 265 #else 266 #define NXPLOG_HCPR_D(...) 267 #define NXPLOG_HCPR_W(...) 268 #define NXPLOG_HCPR_E(...) 269 #endif /* Logging APIs used by NxpHcpR module */ 270 #endif /* NXP_HCI_REQ */ 271 272 #ifdef NXP_VRBS_REQ 273 #if (ENABLE_HAL_TRACES == TRUE) 274 #define NXPLOG_NCIHAL_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIHAL) 275 #define NXPLOG_NCIHAL_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIHAL) 276 #else 277 #define NXPLOG_NCIHAL_ENTRY() 278 #define NXPLOG_NCIHAL_EXIT() 279 #endif 280 281 #if (ENABLE_NCIX_TRACES == TRUE) 282 #define NXPLOG_NCIX_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIX) 283 #define NXPLOG_NCIX_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIX) 284 #else 285 #define NXPLOG_NCIX_ENTRY() 286 #define NXPLOG_NCIX_EXIT() 287 #endif 288 289 #if (ENABLE_NCIR_TRACES == TRUE) 290 #define NXPLOG_NCIR_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_NCIR) 291 #define NXPLOG_NCIR_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_NCIR) 292 #else 293 #define NXPLOG_NCIR_ENTRY() 294 #define NXPLOG_NCIR_EXIT() 295 #endif 296 297 #ifdef NXP_HCI_REQ 298 299 #if (ENABLE_HCPX_TRACES == TRUE) 300 #define NXPLOG_HCPX_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_HCPX) 301 #define NXPLOG_HCPX_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_HCPX) 302 #else 303 #define NXPLOG_HCPX_ENTRY() 304 #define NXPLOG_HCPX_EXIT() 305 #endif 306 307 #if (ENABLE_HCPR_TRACES == TRUE) 308 #define NXPLOG_HCPR_ENTRY() NXPLOG_FUNC_ENTRY(NXPLOG_ITEM_HCPR) 309 #define NXPLOG_HCPR_EXIT() NXPLOG_FUNC_EXIT(NXPLOG_ITEM_HCPR) 310 #else 311 #define NXPLOG_HCPR_ENTRY() 312 #define NXPLOG_HCPR_EXIT() 313 #endif 314 #endif /* NXP_HCI_REQ */ 315 316 #endif /* NXP_VRBS_REQ */ 317 318 void phNxpLog_InitializeLogLevel(void); 319 320 #endif /* NXPLOG__H_INCLUDED */ 321