1121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/*
2121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Copyright (C) 2010-2014 NXP Semiconductors
3121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
4121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Licensed under the Apache License, Version 2.0 (the "License");
5121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * you may not use this file except in compliance with the License.
6121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * You may obtain a copy of the License at
7121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
8121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *      http://www.apache.org/licenses/LICENSE-2.0
9121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
10121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Unless required by applicable law or agreed to in writing, software
11121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * distributed under the License is distributed on an "AS IS" BASIS,
12121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * See the License for the specific language governing permissions and
14121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * limitations under the License.
15121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao */
16121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
17121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao#include <string.h>
18121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao#if ! defined (NXPLOG__H_INCLUDED)
19121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao#    include "phNxpLog.h"
20121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao#    include "phNxpConfig.h"
21121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao#endif
22121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao#include <cutils/properties.h>
23121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
24121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaoconst char * NXPLOG_ITEM_EXTNS   = "NxpExtns";
25121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaoconst char * NXPLOG_ITEM_NCIHAL  = "NxpHal";
26121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaoconst char * NXPLOG_ITEM_NCIX    = "NxpNciX";
27121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaoconst char * NXPLOG_ITEM_NCIR    = "NxpNciR";
28121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaoconst char * NXPLOG_ITEM_FWDNLD  = "NxpFwDnld";
29121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaoconst char * NXPLOG_ITEM_TML     = "NxpTml";
30121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
31121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao#ifdef NXP_HCI_REQ
32121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaoconst char * NXPLOG_ITEM_HCPX    = "NxpHcpX";
33121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaoconst char * NXPLOG_ITEM_HCPR    = "NxpHcpR";
34121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao#endif /*NXP_HCI_REQ*/
35121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
36121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/* global log level structure */
37121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaonci_log_level_t gLog_level;
38121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
39121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
40121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/*******************************************************************************
41121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
42121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Function         phNxpLog_SetGlobalLogLevel
43121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
44121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Description      Sets the global log level for all modules.
45121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  This value is set by Android property nfc.nxp_log_level_global.
46121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  If value can be overridden by module log level.
47121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
48121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Returns          The value of global log level
49121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
50121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao ******************************************************************************/
51121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaostatic uint8_t phNxpLog_SetGlobalLogLevel (void)
52121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao{
53121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    uint8_t level = NXPLOG_DEFAULT_LOGLEVEL;
54121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    unsigned long num = 0;
55121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    char valueStr [PROPERTY_VALUE_MAX] = {0};
56121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
57121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    int len = property_get (PROP_NAME_NXPLOG_GLOBAL_LOGLEVEL, valueStr, "");
58121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (len > 0)
59121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
60121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        /* let Android property override .conf variable */
61121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        sscanf (valueStr, "%lu", &num);
62121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        level = (unsigned char) num;
63121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
64121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    memset(&gLog_level, level, sizeof(nci_log_level_t));
65121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    return level;
66121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao}
67121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
68121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/*******************************************************************************
69121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
70121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Function         phNxpLog_SetHALLogLevel
71121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
72121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Description      Sets the HAL layer log level.
73121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
74121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Returns          void
75121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
76121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao ******************************************************************************/
77121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaostatic void phNxpLog_SetHALLogLevel (uint8_t level)
78121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao{
79121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    unsigned long num = 0;
80121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    int len;
81121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    char valueStr [PROPERTY_VALUE_MAX] = {0};
82121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
83121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (GetNxpNumValue (NAME_NXPLOG_HAL_LOGLEVEL, &num, sizeof(num)))
84121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
85121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.hal_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
86121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
87121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
88121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    len = property_get (PROP_NAME_NXPLOG_HAL_LOGLEVEL, valueStr, "");
89121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (len > 0)
90121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
91121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        /* let Android property override .conf variable */
92121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        sscanf (valueStr, "%lu", &num);
93121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.hal_log_level = (unsigned char) num;
94121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
95121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao}
96121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
97121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/*******************************************************************************
98121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
99121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Function         phNxpLog_SetExtnsLogLevel
100121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
101121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Description      Sets the Extensions layer log level.
102121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
103121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Returns          void
104121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
105121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao ******************************************************************************/
106121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaostatic void phNxpLog_SetExtnsLogLevel (uint8_t level)
107121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao{
108121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    unsigned long num = 0;
109121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    int len;
110121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    char valueStr [PROPERTY_VALUE_MAX] = {0};
111121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (GetNxpNumValue (NAME_NXPLOG_EXTNS_LOGLEVEL, &num, sizeof(num)))
112121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
113121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.extns_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
114121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
115121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
116121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    len = property_get (PROP_NAME_NXPLOG_EXTNS_LOGLEVEL, valueStr, "");
117121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (len > 0)
118121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
119121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        /* let Android property override .conf variable */
120121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        sscanf (valueStr, "%lu", &num);
121121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.extns_log_level = (unsigned char) num;
122121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
123121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao}
124121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
125121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/*******************************************************************************
126121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
127121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Function         phNxpLog_SetTmlLogLevel
128121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
129121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Description      Sets the Tml layer log level.
130121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
131121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Returns          void
132121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
133121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao ******************************************************************************/
134121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaostatic void phNxpLog_SetTmlLogLevel (uint8_t level)
135121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao{
136121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    unsigned long num = 0;
137121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    int len;
138121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    char valueStr [PROPERTY_VALUE_MAX] = {0};
139121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (GetNxpNumValue (NAME_NXPLOG_TML_LOGLEVEL, &num, sizeof(num)))
140121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
141121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.tml_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
142121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
143121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
144121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    len = property_get (PROP_NAME_NXPLOG_TML_LOGLEVEL, valueStr, "");
145121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (len > 0)
146121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
147121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        /* let Android property override .conf variable */
148121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        sscanf (valueStr, "%lu", &num);
149121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.tml_log_level = (unsigned char) num;
150121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
151121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao}
152121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
153121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/*******************************************************************************
154121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
155121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Function         phNxpLog_SetDnldLogLevel
156121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
157121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Description      Sets the FW download layer log level.
158121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
159121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Returns          void
160121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
161121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao ******************************************************************************/
162121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaostatic void phNxpLog_SetDnldLogLevel (uint8_t level)
163121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao{
164121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    unsigned long num = 0;
165121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    int len;
166121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    char valueStr [PROPERTY_VALUE_MAX] = {0};
167121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (GetNxpNumValue (NAME_NXPLOG_FWDNLD_LOGLEVEL, &num, sizeof(num)))
168121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
169121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.dnld_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
170121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
171121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
172121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    len = property_get (PROP_NAME_NXPLOG_FWDNLD_LOGLEVEL, valueStr, "");
173121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (len > 0)
174121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
175121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        /* let Android property override .conf variable */
176121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        sscanf (valueStr, "%lu", &num);
177121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.dnld_log_level = (unsigned char) num;
178121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
179121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao}
180121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
181121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/*******************************************************************************
182121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
183121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Function         phNxpLog_SetNciTxLogLevel
184121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
185121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Description      Sets the NCI transaction layer log level.
186121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
187121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Returns          void
188121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
189121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao ******************************************************************************/
190121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaostatic void phNxpLog_SetNciTxLogLevel (uint8_t level)
191121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao{
192121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    unsigned long num = 0;
193121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    int len;
194121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    char valueStr [PROPERTY_VALUE_MAX] = {0};
195121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (GetNxpNumValue (NAME_NXPLOG_NCIX_LOGLEVEL, &num, sizeof(num)))
196121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
197121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.ncix_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;
198121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
199121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (GetNxpNumValue (NAME_NXPLOG_NCIR_LOGLEVEL, &num, sizeof(num)))
200121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
201121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.ncir_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
202121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
203121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
204121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    len = property_get (PROP_NAME_NXPLOG_NCI_LOGLEVEL, valueStr, "");
205121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    if (len > 0)
206121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    {
207121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        /* let Android property override .conf variable */
208121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        sscanf (valueStr, "%lu", &num);
209121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.ncix_log_level = (unsigned char) num;
210121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao        gLog_level.ncir_log_level = (unsigned char) num;
211121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    }
212121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao}
213121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
214121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao/******************************************************************************
215121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Function         phNxpLog_InitializeLogLevel
216121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
217121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Description      Initialize and get log level of module from libnfc-nxp.conf or
218121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  Android runtime properties.
219121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  The Android property nfc.nxp_global_log_level is to
220121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  define log level for all modules. Modules log level will overwide global level.
221121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  The Android property will overwide the level
222121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  in libnfc-nxp.conf
223121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
224121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  Android property names:
225121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      nfc.nxp_log_level_global    * defines log level for all modules
226121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      nfc.nxp_log_level_extns     * extensions module log
227121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      nfc.nxp_log_level_hal       * Hal module log
228121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      nfc.nxp_log_level_dnld      * firmware download module log
229121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      nfc.nxp_log_level_tml       * TML module log
230121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      nfc.nxp_log_level_nci       * NCI transaction log
231121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
232121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                  Log Level values:
233121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      NXPLOG_LOG_SILENT_LOGLEVEL  0        * No trace to show
234121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      NXPLOG_LOG_ERROR_LOGLEVEL   1        * Show Error trace only
235121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      NXPLOG_LOG_WARN_LOGLEVEL    2        * Show Warning trace and Error trace
236121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *                      NXPLOG_LOG_DEBUG_LOGLEVEL   3        * Show all traces
237121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
238121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao * Returns          void
239121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao *
240121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao ******************************************************************************/
241121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liaovoid phNxpLog_InitializeLogLevel(void)
242121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao{
243121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    uint8_t level = phNxpLog_SetGlobalLogLevel();
244121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    phNxpLog_SetHALLogLevel(level);
245121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    phNxpLog_SetExtnsLogLevel(level);
246121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    phNxpLog_SetTmlLogLevel(level);
247121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    phNxpLog_SetDnldLogLevel(level);
248121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    phNxpLog_SetNciTxLogLevel(level);
249121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao
250121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao    ALOGD ("%s: global =%u, Fwdnld =%u, extns =%u, \
251121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao                hal =%u, tml =%u, ncir =%u, \
252121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao                ncix =%u", \
253121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao                __FUNCTION__, gLog_level.global_log_level, gLog_level.dnld_log_level,
254121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao                    gLog_level.extns_log_level, gLog_level.hal_log_level, gLog_level.tml_log_level,
255121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao                    gLog_level.ncir_log_level, gLog_level.ncix_log_level);
256121096a3511ea4ac559dea3ef7d39f0df00c97a6Jizhou Liao}
257