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