1d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*
2d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Copyright (C) 2010-2014 NXP Semiconductors
3d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
4d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Licensed under the Apache License, Version 2.0 (the "License");
5d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * you may not use this file except in compliance with the License.
6d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * You may obtain a copy of the License at
7d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
8d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *      http://www.apache.org/licenses/LICENSE-2.0
9d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
10d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Unless required by applicable law or agreed to in writing, software
11d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * distributed under the License is distributed on an "AS IS" BASIS,
12d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * See the License for the specific language governing permissions and
14d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * limitations under the License.
15d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna */
16d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#define LOG_TAG "NxpNfcHal"
17d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <stdio.h>
18d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <string.h>
19d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#if !defined(NXPLOG__H_INCLUDED)
20d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include "phNxpConfig.h"
21d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include "phNxpLog.h"
22d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#endif
23d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <cutils/properties.h>
24d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#include <log/log.h>
25d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
26d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaconst char* NXPLOG_ITEM_EXTNS = "NxpExtns";
27d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaconst char* NXPLOG_ITEM_NCIHAL = "NxpHal";
28d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaconst char* NXPLOG_ITEM_NCIX = "NxpNciX";
29d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaconst char* NXPLOG_ITEM_NCIR = "NxpNciR";
30d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaconst char* NXPLOG_ITEM_FWDNLD = "NxpFwDnld";
31d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaconst char* NXPLOG_ITEM_TML = "NxpTml";
32d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
33d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#ifdef NXP_HCI_REQ
34d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaconst char* NXPLOG_ITEM_HCPX = "NxpHcpX";
35d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaconst char* NXPLOG_ITEM_HCPR = "NxpHcpR";
36d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna#endif /*NXP_HCI_REQ*/
37d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
38d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/* global log level structure */
39d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannanci_log_level_t gLog_level;
40d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
41d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannaextern bool nfc_debug_enabled;
42d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
43d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*******************************************************************************
44d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
45d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Function         phNxpLog_SetGlobalLogLevel
46d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
47d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Description      Sets the global log level for all modules.
48d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  This value is set by Android property
49d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *nfc.nxp_log_level_global.
50d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  If value can be overridden by module log level.
51d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
52d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Returns          The value of global log level
53d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
54d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna ******************************************************************************/
55d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannastatic uint8_t phNxpLog_SetGlobalLogLevel(void) {
56d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  uint8_t level = NXPLOG_DEFAULT_LOGLEVEL;
57d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  unsigned long num = 0;
58d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  char valueStr[PROPERTY_VALUE_MAX] = {0};
59d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
60d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  int len = property_get(PROP_NAME_NXPLOG_GLOBAL_LOGLEVEL, valueStr, "");
61d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (len > 0) {
62d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    /* let Android property override .conf variable */
63d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    sscanf(valueStr, "%lu", &num);
64d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    level = (unsigned char)num;
65d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
66d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  memset(&gLog_level, level, sizeof(nci_log_level_t));
67d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  return level;
68d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna}
69d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
70d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*******************************************************************************
71d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
72d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Function         phNxpLog_SetHALLogLevel
73d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
74d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Description      Sets the HAL layer log level.
75d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
76d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Returns          void
77d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
78d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna ******************************************************************************/
79d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannastatic void phNxpLog_SetHALLogLevel(uint8_t level) {
80d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  unsigned long num = 0;
81d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  int len;
82d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  char valueStr[PROPERTY_VALUE_MAX] = {0};
83d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
84d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (GetNxpNumValue(NAME_NXPLOG_HAL_LOGLEVEL, &num, sizeof(num))) {
85d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.hal_log_level =
86d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        (level > (unsigned char)num) ? level : (unsigned char)num;
87d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    ;
88d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
89d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
90d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  len = property_get(PROP_NAME_NXPLOG_HAL_LOGLEVEL, valueStr, "");
91d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (len > 0) {
92d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    /* let Android property override .conf variable */
93d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    sscanf(valueStr, "%lu", &num);
94d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.hal_log_level = (unsigned char)num;
95d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
96d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna}
97d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
98d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*******************************************************************************
99d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
100d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Function         phNxpLog_SetExtnsLogLevel
101d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
102d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Description      Sets the Extensions layer log level.
103d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
104d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Returns          void
105d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
106d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna ******************************************************************************/
107d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannastatic void phNxpLog_SetExtnsLogLevel(uint8_t level) {
108d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  unsigned long num = 0;
109d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  int len;
110d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  char valueStr[PROPERTY_VALUE_MAX] = {0};
111d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (GetNxpNumValue(NAME_NXPLOG_EXTNS_LOGLEVEL, &num, sizeof(num))) {
112d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.extns_log_level =
113d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        (level > (unsigned char)num) ? level : (unsigned char)num;
114d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    ;
115d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
116d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
117d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  len = property_get(PROP_NAME_NXPLOG_EXTNS_LOGLEVEL, valueStr, "");
118d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (len > 0) {
119d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    /* let Android property override .conf variable */
120d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    sscanf(valueStr, "%lu", &num);
121d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.extns_log_level = (unsigned char)num;
122d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
123d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna}
124d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
125d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*******************************************************************************
126d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
127d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Function         phNxpLog_SetTmlLogLevel
128d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
129d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Description      Sets the Tml layer log level.
130d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
131d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Returns          void
132d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
133d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna ******************************************************************************/
134d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannastatic void phNxpLog_SetTmlLogLevel(uint8_t level) {
135d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  unsigned long num = 0;
136d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  int len;
137d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  char valueStr[PROPERTY_VALUE_MAX] = {0};
138d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (GetNxpNumValue(NAME_NXPLOG_TML_LOGLEVEL, &num, sizeof(num))) {
139d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.tml_log_level =
140d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        (level > (unsigned char)num) ? level : (unsigned char)num;
141d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    ;
142d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
143d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
144d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  len = property_get(PROP_NAME_NXPLOG_TML_LOGLEVEL, valueStr, "");
145d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (len > 0) {
146d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    /* let Android property override .conf variable */
147d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    sscanf(valueStr, "%lu", &num);
148d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.tml_log_level = (unsigned char)num;
149d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
150d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna}
151d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
152d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*******************************************************************************
153d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
154d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Function         phNxpLog_SetDnldLogLevel
155d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
156d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Description      Sets the FW download layer log level.
157d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
158d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Returns          void
159d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
160d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna ******************************************************************************/
161d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannastatic void phNxpLog_SetDnldLogLevel(uint8_t level) {
162d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  unsigned long num = 0;
163d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  int len;
164d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  char valueStr[PROPERTY_VALUE_MAX] = {0};
165d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (GetNxpNumValue(NAME_NXPLOG_FWDNLD_LOGLEVEL, &num, sizeof(num))) {
166d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.dnld_log_level =
167d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        (level > (unsigned char)num) ? level : (unsigned char)num;
168d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    ;
169d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
170d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
171d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  len = property_get(PROP_NAME_NXPLOG_FWDNLD_LOGLEVEL, valueStr, "");
172d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (len > 0) {
173d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    /* let Android property override .conf variable */
174d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    sscanf(valueStr, "%lu", &num);
175d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.dnld_log_level = (unsigned char)num;
176d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
177d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna}
178d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
179d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/*******************************************************************************
180d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
181d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Function         phNxpLog_SetNciTxLogLevel
182d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
183d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Description      Sets the NCI transaction layer log level.
184d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
185d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Returns          void
186d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
187d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna ******************************************************************************/
188d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannastatic void phNxpLog_SetNciTxLogLevel(uint8_t level) {
189d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  unsigned long num = 0;
190d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  int len;
191d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  char valueStr[PROPERTY_VALUE_MAX] = {0};
192d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (GetNxpNumValue(NAME_NXPLOG_NCIX_LOGLEVEL, &num, sizeof(num))) {
193d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.ncix_log_level =
194d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        (level > (unsigned char)num) ? level : (unsigned char)num;
195d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
196d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (GetNxpNumValue(NAME_NXPLOG_NCIR_LOGLEVEL, &num, sizeof(num))) {
197d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.ncir_log_level =
198d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna        (level > (unsigned char)num) ? level : (unsigned char)num;
199d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    ;
200d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
201d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
202d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  len = property_get(PROP_NAME_NXPLOG_NCI_LOGLEVEL, valueStr, "");
203d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  if (len > 0) {
204d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    /* let Android property override .conf variable */
205d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    sscanf(valueStr, "%lu", &num);
206d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.ncix_log_level = (unsigned char)num;
207d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna    gLog_level.ncir_log_level = (unsigned char)num;
208d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  }
209d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna}
210d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
211d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna/******************************************************************************
212d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Function         phNxpLog_InitializeLogLevel
213d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
214d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Description      Initialize and get log level of module from libnfc-nxp.conf
215d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *or
216d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  Android runtime properties.
217d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  The Android property nfc.nxp_global_log_level is to
218d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  define log level for all modules. Modules log level will
219d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *overwide global level.
220d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  The Android property will overwide the level
221d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  in libnfc-nxp.conf
222d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
223d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  Android property names:
224d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      nfc.nxp_log_level_global    * defines log level for all
225d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *modules
226d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      nfc.nxp_log_level_extns     * extensions module log
227d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      nfc.nxp_log_level_hal       * Hal module log
228d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      nfc.nxp_log_level_dnld      * firmware download module
229d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *log
230d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      nfc.nxp_log_level_tml       * TML module log
231d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      nfc.nxp_log_level_nci       * NCI transaction log
232d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
233d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                  Log Level values:
234d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      NXPLOG_LOG_SILENT_LOGLEVEL  0        * No trace to show
235d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      NXPLOG_LOG_ERROR_LOGLEVEL   1        * Show Error trace
236d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *only
237d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      NXPLOG_LOG_WARN_LOGLEVEL    2        * Show Warning
238d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *trace and Error trace
239d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *                      NXPLOG_LOG_DEBUG_LOGLEVEL   3        * Show all traces
240d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
241d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna * Returns          void
242d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna *
243d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna ******************************************************************************/
244d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khannavoid phNxpLog_InitializeLogLevel(void) {
245d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  uint8_t level = phNxpLog_SetGlobalLogLevel();
246d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  phNxpLog_SetHALLogLevel(level);
247d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  phNxpLog_SetExtnsLogLevel(level);
248d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  phNxpLog_SetTmlLogLevel(level);
249d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  phNxpLog_SetDnldLogLevel(level);
250d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  phNxpLog_SetNciTxLogLevel(level);
251d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna
252d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna  ALOGD_IF(nfc_debug_enabled,
253d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna      "%s: global =%u, Fwdnld =%u, extns =%u, \
254d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna                hal =%u, tml =%u, ncir =%u, \
255d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna                ncix =%u",
256d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna      __func__, gLog_level.global_log_level, gLog_level.dnld_log_level,
257d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna      gLog_level.extns_log_level, gLog_level.hal_log_level,
258d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna      gLog_level.tml_log_level, gLog_level.ncir_log_level,
259d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna      gLog_level.ncix_log_level);
260d5f65e1c5b5c40f2e45f585d5796c7fd53ccd87aLove Khanna}
261