1e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville/******************************************************************************
2e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *
3e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  Copyright (C) 2012 Broadcom Corporation
4e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *
5e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  Licensed under the Apache License, Version 2.0 (the "License");
6e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  you may not use this file except in compliance with the License.
7e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  You may obtain a copy of the License at:
8e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *
9e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  http://www.apache.org/licenses/LICENSE-2.0
10e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *
11e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  Unless required by applicable law or agreed to in writing, software
12e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  distributed under the License is distributed on an "AS IS" BASIS,
13e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  See the License for the specific language governing permissions and
15e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  limitations under the License.
16e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *
17e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville ******************************************************************************/
18e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
19e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville/******************************************************************************
20e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *
21e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  Override the ALOGD(), ALOGE(), and other logging macros from
22e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *  /system/core/include/cutils/log.h
23e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville *
24e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville ******************************************************************************/
25e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#include "OverrideLog.h"
26e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#include <cutils/properties.h>
27e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#include "config.h"
28e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#include "android_logmsg.h"
29e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville#define LOG_TAG "BrcmNfcJni"
30e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
31e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
32e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville/*******************************************************************************
33e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**
34e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville** Function:        initializeGlobalAppLogLevel
35e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**
36e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville** Description:     Initialize and get global logging level from .conf or
37e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**                  Android property nfc.app_log_level.  The Android property
38e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**                  overrides .conf variable.
39e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**
40e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville** Returns:         Global log level:
41e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**                  BT_TRACE_LEVEL_NONE    0        * No trace messages to be generated
42e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**                  BT_TRACE_LEVEL_ERROR   1        * Error condition trace messages
43e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**                  BT_TRACE_LEVEL_WARNING 2        * Warning condition trace messages
44e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**                  BT_TRACE_LEVEL_API     3        * API traces
45e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**                  BT_TRACE_LEVEL_EVENT   4        * Debug messages for events
46e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**                  BT_TRACE_LEVEL_DEBUG   5        * Debug messages (general)
47e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville**
48e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville*******************************************************************************/
49e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Savilleunsigned char initializeGlobalAppLogLevel ()
50e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville{
51e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    unsigned long num = 0;
52e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    char valueStr [PROPERTY_VALUE_MAX] = {0};
53e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
54e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    num = 1;
55e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    if (GetNumValue (NAME_APPL_TRACE_LEVEL, &num, sizeof(num)))
56e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        appl_trace_level = (unsigned char) num;
57e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
58e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    int len = property_get ("nfc.app_log_level", valueStr, "");
59e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    if (len > 0)
60e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    {
61e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        //let Android property override .conf variable
62e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        sscanf (valueStr, "%lu", &num);
63e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        appl_trace_level = (unsigned char) num;
64e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    }
65e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
66e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //0xFF is a special value used by the stack to query the current
67e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    //trace level; it does not change any trace level
68e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    if (appl_trace_level == 0xFF)
69e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        appl_trace_level = BT_TRACE_LEVEL_DEBUG;
70e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    ALOGD ("%s: level=%u", __FUNCTION__, appl_trace_level);
71e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville
72e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    if (appl_trace_level < BT_TRACE_LEVEL_DEBUG)
73e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    {
74e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        //display protocol traces in raw format
75e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville        ProtoDispAdapterUseRawOutput (TRUE);
76e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    }
77e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville    return appl_trace_level;
78e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville}
79e2d542951c059563a3b7f74c257dac4f222d9dc5Wink Saville