• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 #define LOG_TAG "pn54x"
17 
18 #include <stdio.h>
19 #include <string.h>
20 #if !defined (NXPLOG__H_INCLUDED)
21 #    include "phNxpLog.h"
22 #    include "phNxpConfig.h"
23 #endif
24 #include <cutils/properties.h>
25 #include <log/log.h>
26 
27 const char * NXPLOG_ITEM_EXTNS   = "NxpExtns";
28 const char * NXPLOG_ITEM_NCIHAL  = "NxpHal";
29 const char * NXPLOG_ITEM_NCIX    = "NxpNciX";
30 const char * NXPLOG_ITEM_NCIR    = "NxpNciR";
31 const char * NXPLOG_ITEM_FWDNLD  = "NxpFwDnld";
32 const char * NXPLOG_ITEM_TML     = "NxpTml";
33 
34 #ifdef NXP_HCI_REQ
35 const char * NXPLOG_ITEM_HCPX    = "NxpHcpX";
36 const char * NXPLOG_ITEM_HCPR    = "NxpHcpR";
37 #endif /*NXP_HCI_REQ*/
38 
39 /* global log level structure */
40 nci_log_level_t gLog_level;
41 
42 
43 /*******************************************************************************
44  *
45  * Function         phNxpLog_SetGlobalLogLevel
46  *
47  * Description      Sets the global log level for all modules.
48  *                  This value is set by Android property nfc.nxp_log_level_global.
49  *                  If value can be overridden by module log level.
50  *
51  * Returns          The value of global log level
52  *
53  ******************************************************************************/
phNxpLog_SetGlobalLogLevel(void)54 static uint8_t phNxpLog_SetGlobalLogLevel (void)
55 {
56     uint8_t level = NXPLOG_DEFAULT_LOGLEVEL;
57     unsigned long num = 0;
58     char valueStr [PROPERTY_VALUE_MAX] = {0};
59 
60     int len = property_get (PROP_NAME_NXPLOG_GLOBAL_LOGLEVEL, valueStr, "");
61     if (len > 0)
62     {
63         /* let Android property override .conf variable */
64         sscanf (valueStr, "%lu", &num);
65         level = (unsigned char) num;
66     }
67     memset(&gLog_level, level, sizeof(nci_log_level_t));
68     return level;
69 }
70 
71 /*******************************************************************************
72  *
73  * Function         phNxpLog_SetHALLogLevel
74  *
75  * Description      Sets the HAL layer log level.
76  *
77  * Returns          void
78  *
79  ******************************************************************************/
phNxpLog_SetHALLogLevel(uint8_t level)80 static void phNxpLog_SetHALLogLevel (uint8_t level)
81 {
82     unsigned long num = 0;
83     int len;
84     char valueStr [PROPERTY_VALUE_MAX] = {0};
85 
86     if (GetNxpNumValue (NAME_NXPLOG_HAL_LOGLEVEL, &num, sizeof(num)))
87     {
88         gLog_level.hal_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
89     }
90 
91     len = property_get (PROP_NAME_NXPLOG_HAL_LOGLEVEL, valueStr, "");
92     if (len > 0)
93     {
94         /* let Android property override .conf variable */
95         sscanf (valueStr, "%lu", &num);
96         gLog_level.hal_log_level = (unsigned char) num;
97     }
98 
99     return;
100 }
101 
102 /*******************************************************************************
103  *
104  * Function         phNxpLog_SetExtnsLogLevel
105  *
106  * Description      Sets the Extensions layer log level.
107  *
108  * Returns          void
109  *
110  ******************************************************************************/
phNxpLog_SetExtnsLogLevel(uint8_t level)111 static void phNxpLog_SetExtnsLogLevel (uint8_t level)
112 {
113     unsigned long num = 0;
114     int len;
115     char valueStr [PROPERTY_VALUE_MAX] = {0};
116     if (GetNxpNumValue (NAME_NXPLOG_EXTNS_LOGLEVEL, &num, sizeof(num)))
117     {
118         gLog_level.extns_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
119     }
120 
121     len = property_get (PROP_NAME_NXPLOG_EXTNS_LOGLEVEL, valueStr, "");
122     if (len > 0)
123     {
124         /* let Android property override .conf variable */
125         sscanf (valueStr, "%lu", &num);
126         gLog_level.extns_log_level = (unsigned char) num;
127     }
128 
129     return;
130 }
131 
132 /*******************************************************************************
133  *
134  * Function         phNxpLog_SetTmlLogLevel
135  *
136  * Description      Sets the TML layer log level.
137  *
138  * Returns          void
139  *
140  ******************************************************************************/
phNxpLog_SetTmlLogLevel(uint8_t level)141 static void phNxpLog_SetTmlLogLevel (uint8_t level)
142 {
143     unsigned long num = 0;
144     int len;
145     char valueStr [PROPERTY_VALUE_MAX] = {0};
146     if (GetNxpNumValue (NAME_NXPLOG_TML_LOGLEVEL, &num, sizeof(num)))
147     {
148         gLog_level.tml_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
149     }
150 
151     len = property_get (PROP_NAME_NXPLOG_TML_LOGLEVEL, valueStr, "");
152     if (len > 0)
153     {
154         /* let Android property override .conf variable */
155         sscanf (valueStr, "%lu", &num);
156         gLog_level.tml_log_level = (unsigned char) num;
157     }
158 
159     return;
160 }
161 
162 /*******************************************************************************
163  *
164  * Function         phNxpLog_SetDnldLogLevel
165  *
166  * Description      Sets the FW download layer log level.
167  *
168  * Returns          void
169  *
170  ******************************************************************************/
phNxpLog_SetDnldLogLevel(uint8_t level)171 static void phNxpLog_SetDnldLogLevel (uint8_t level)
172 {
173     unsigned long num = 0;
174     int len;
175     char valueStr [PROPERTY_VALUE_MAX] = {0};
176     if (GetNxpNumValue (NAME_NXPLOG_FWDNLD_LOGLEVEL, &num, sizeof(num)))
177     {
178         gLog_level.dnld_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
179     }
180 
181     len = property_get (PROP_NAME_NXPLOG_FWDNLD_LOGLEVEL, valueStr, "");
182     if (len > 0)
183     {
184         /* let Android property override .conf variable */
185         sscanf (valueStr, "%lu", &num);
186         gLog_level.dnld_log_level = (unsigned char) num;
187     }
188 
189     return;
190 }
191 
192 /*******************************************************************************
193  *
194  * Function         phNxpLog_SetNciTxLogLevel
195  *
196  * Description      Sets the NCI transaction layer log level.
197  *
198  * Returns          void
199  *
200  ******************************************************************************/
phNxpLog_SetNciTxLogLevel(uint8_t level)201 static void phNxpLog_SetNciTxLogLevel (uint8_t level)
202 {
203     unsigned long num = 0;
204     int len;
205     char valueStr [PROPERTY_VALUE_MAX] = {0};
206     if (GetNxpNumValue (NAME_NXPLOG_NCIX_LOGLEVEL, &num, sizeof(num)))
207     {
208         gLog_level.ncix_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;
209     }
210     if (GetNxpNumValue (NAME_NXPLOG_NCIR_LOGLEVEL, &num, sizeof(num)))
211     {
212         gLog_level.ncir_log_level = (level > (unsigned char) num) ? level : (unsigned char) num;;
213     }
214 
215     len = property_get (PROP_NAME_NXPLOG_NCI_LOGLEVEL, valueStr, "");
216     if (len > 0)
217     {
218         /* let Android property override .conf variable */
219         sscanf (valueStr, "%lu", &num);
220         gLog_level.ncix_log_level = (unsigned char) num;
221         gLog_level.ncir_log_level = (unsigned char) num;
222     }
223 
224     return;
225 }
226 
227 /******************************************************************************
228  * Function         phNxpLog_InitializeLogLevel
229  *
230  * Description      Initialize and get log level of module from libnfc-nxp.conf or
231  *                  Android runtime properties.
232  *                  The Android property nfc.nxp_global_log_level is to
233  *                  define log level for all modules. Modules log level will override global level.
234  *                  The Android property will override the level
235  *                  in libnfc-nxp.conf
236  *
237  *                  Android property names:
238  *                      nfc.nxp_log_level_global    * defines log level for all modules
239  *                      nfc.nxp_log_level_extns     * extensions module log
240  *                      nfc.nxp_log_level_hal       * Hal module log
241  *                      nfc.nxp_log_level_dnld      * firmware download module log
242  *                      nfc.nxp_log_level_tml       * TML module log
243  *                      nfc.nxp_log_level_nci       * NCI transaction log
244  *
245  *                  Log Level values:
246  *                      NXPLOG_LOG_SILENT_LOGLEVEL  0        * No trace to show
247  *                      NXPLOG_LOG_ERROR_LOGLEVEL   1        * Show Error trace only
248  *                      NXPLOG_LOG_WARN_LOGLEVEL    2        * Show Warning trace and Error trace
249  *                      NXPLOG_LOG_DEBUG_LOGLEVEL   3        * Show all traces
250  *
251  * Returns          void
252  *
253  ******************************************************************************/
phNxpLog_InitializeLogLevel(void)254 void phNxpLog_InitializeLogLevel(void)
255 {
256     uint8_t level = phNxpLog_SetGlobalLogLevel ();
257     phNxpLog_SetHALLogLevel (level);
258     phNxpLog_SetExtnsLogLevel (level);
259     phNxpLog_SetTmlLogLevel (level);
260     phNxpLog_SetDnldLogLevel (level);
261     phNxpLog_SetNciTxLogLevel (level);
262 
263     ALOGV("%s: global =%u, Fwdnld =%u, extns =%u, \
264                 hal =%u, tml =%u, ncir =%u, \
265                 ncix =%u", \
266                 __func__, gLog_level.global_log_level, gLog_level.dnld_log_level,
267                     gLog_level.extns_log_level, gLog_level.hal_log_level, gLog_level.tml_log_level,
268                     gLog_level.ncir_log_level, gLog_level.ncix_log_level);
269 
270     return;
271 }
272