bte_logmsg.cc revision aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2001-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 199f8a8aeda32156121bd4dc58b20bc992082c24ccSharvil Nanavati#include <assert.h> 20aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include <cutils/log.h> 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdio.h> 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdlib.h> 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdarg.h> 25aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include <sys/time.h> 26aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include <time.h> 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bte.h" 29aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include "bta_api.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bte_appl.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btu.h" 32aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include "config.h" 33aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include "gki.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "l2c_api.h" 35aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (RFCOMM_INCLUDED==TRUE) 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "port_api.h" 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (OBX_INCLUDED==TRUE) 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "obx_api.h" 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVCT_INCLUDED==TRUE) 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "avct_api.h" 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVDT_INCLUDED==TRUE) 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "avdt_api.h" 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVRC_INCLUDED==TRUE) 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "avrc_api.h" 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVDT_INCLUDED==TRUE) 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "avdt_api.h" 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (A2D_INCLUDED==TRUE) 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "a2d_api.h" 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BIP_INCLUDED==TRUE) 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bip_api.h" 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BNEP_INCLUDED==TRUE) 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bnep_api.h" 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BPP_INCLUDED==TRUE) 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bpp_api.h" 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btm_api.h" 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (DUN_INCLUDED==TRUE) 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "dun_api.h" 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (GAP_INCLUDED==TRUE) 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gap_api.h" 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (GOEP_INCLUDED==TRUE) 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "goep_util.h" 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (HCRP_INCLUDED==TRUE) 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "hcrp_api.h" 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (PAN_INCLUDED==TRUE) 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "pan_api.h" 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "sdp_api.h" 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED==TRUE) 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gatt_api.h" 86ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "smp_api.h" 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LOGI0(t,s) __android_log_write(ANDROID_LOG_INFO, t, s) 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LOGD0(t,s) __android_log_write(ANDROID_LOG_DEBUG, t, s) 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LOGW0(t,s) __android_log_write(ANDROID_LOG_WARN, t, s) 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LOGE0(t,s) __android_log_write(ANDROID_LOG_ERROR, t, s) 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef DEFAULT_CONF_TRACE_LEVEL 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define DEFAULT_CONF_TRACE_LEVEL BT_TRACE_LEVEL_WARNING 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTE_LOG_BUF_SIZE 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTE_LOG_BUF_SIZE 1024 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 102aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#define BTE_LOG_MAX_SIZE (BTE_LOG_BUF_SIZE - 12) 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_BUFFER_OFFSET 0 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 106aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonbool trace_conf_enabled = false; 107aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 108aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton/* LayerIDs for BTA, currently everything maps onto appl_trace_level */ 109aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic const char * const bt_layer_tags[] = { 110aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-btif", 111aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-usb", 112aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-serial", 113aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-socket", 114aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-rs232", 115aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-lc", 116aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-lm", 117aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-hci", 118aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-l2cap", 119aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-rfcomm", 120aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-sdp", 121aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-tcs", 122aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-obex", 123aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-btm", 124aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-gap", 125aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-dun", 126aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-goep", 127aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-icp", 128aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-hsp2", 129aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-spp", 130aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-ctp", 131aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-bpp", 132aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-hcrp", 133aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-ftp", 134aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-opp", 135aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-btu", 136aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-gki", 137aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-bnep", 138aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-pan", 139aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-hfp", 140aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-hid", 141aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-bip", 142aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-avp", 143aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-a2d", 144aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-sap", 145aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-amp", 146aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-mca", 147aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-att", 148aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-smp", 149aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-nfc", 150aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-nci", 151aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-idep", 152aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-ndep", 153aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-llcp", 154aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-rw", 155aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-ce", 156aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-snep", 157aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-ndef", 158aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton "bt-nfa", 159aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton}; 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 161aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTAPP_SetTraceLevel(uint8_t new_level); 162aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTIF_SetTraceLevel(uint8_t new_level); 163aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTU_SetTraceLevel(uint8_t new_level); 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* make sure list is order by increasing layer id!!! */ 166aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic tBTTRC_FUNC_MAP bttrc_set_level_map[] = { 167aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_BTU, BTTRC_ID_STK_HCI, BTU_SetTraceLevel, "TRC_HCI", DEFAULT_CONF_TRACE_LEVEL}, 168aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_L2CAP, BTTRC_ID_STK_L2CAP, L2CA_SetTraceLevel, "TRC_L2CAP", DEFAULT_CONF_TRACE_LEVEL}, 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (RFCOMM_INCLUDED==TRUE) 170aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_RFCOMM, BTTRC_ID_STK_RFCOMM_DATA, PORT_SetTraceLevel, "TRC_RFCOMM", DEFAULT_CONF_TRACE_LEVEL}, 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (OBX_INCLUDED==TRUE) 173aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_OBEX, BTTRC_ID_STK_OBEX, OBX_SetTraceLevel, "TRC_OBEX", DEFAULT_CONF_TRACE_LEVEL}, 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVCT_INCLUDED==TRUE) 176aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton //{BTTRC_ID_STK_AVCT, BTTRC_ID_STK_AVCT, NULL, "TRC_AVCT", DEFAULT_CONF_TRACE_LEVEL}, 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVDT_INCLUDED==TRUE) 179aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_AVDT, BTTRC_ID_STK_AVDT, AVDT_SetTraceLevel, "TRC_AVDT", DEFAULT_CONF_TRACE_LEVEL}, 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVRC_INCLUDED==TRUE) 182aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_AVRC, BTTRC_ID_STK_AVRC, AVRC_SetTraceLevel, "TRC_AVRC", DEFAULT_CONF_TRACE_LEVEL}, 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVDT_INCLUDED==TRUE) 185aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton //{BTTRC_ID_AVDT_SCB, BTTRC_ID_AVDT_CCB, NULL, "TRC_AVDT_SCB", DEFAULT_CONF_TRACE_LEVEL}, 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (A2D_INCLUDED==TRUE) 188aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_A2D, BTTRC_ID_STK_A2D, A2D_SetTraceLevel, "TRC_A2D", DEFAULT_CONF_TRACE_LEVEL}, 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BIP_INCLUDED==TRUE) 191aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_BIP, BTTRC_ID_STK_BIP, BIP_SetTraceLevel, "TRC_BIP", DEFAULT_CONF_TRACE_LEVEL}, 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BNEP_INCLUDED==TRUE) 194aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_BNEP, BTTRC_ID_STK_BNEP, BNEP_SetTraceLevel, "TRC_BNEP", DEFAULT_CONF_TRACE_LEVEL}, 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BPP_INCLUDED==TRUE) 197aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_BPP, BTTRC_ID_STK_BPP, BPP_SetTraceLevel, "TRC_BPP", DEFAULT_CONF_TRACE_LEVEL}, 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 199aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_BTM_ACL, BTTRC_ID_STK_BTM_SEC, BTM_SetTraceLevel, "TRC_BTM", DEFAULT_CONF_TRACE_LEVEL}, 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (DUN_INCLUDED==TRUE) 201aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_DUN, BTTRC_ID_STK_DUN, DUN_SetTraceLevel, "TRC_DUN", DEFAULT_CONF_TRACE_LEVEL}, 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (GAP_INCLUDED==TRUE) 204aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_GAP, BTTRC_ID_STK_GAP, GAP_SetTraceLevel, "TRC_GAP", DEFAULT_CONF_TRACE_LEVEL}, 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (GOEP_INCLUDED==TRUE) 207aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_GOEP, BTTRC_ID_STK_GOEP, GOEP_SetTraceLevel, "TRC_GOEP", DEFAULT_CONF_TRACE_LEVEL}, 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (HCRP_INCLUDED==TRUE) 210aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_HCRP, BTTRC_ID_STK_HCRP, HCRP_SetTraceLevel, "TRC_HCRP", DEFAULT_CONF_TRACE_LEVEL}, 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (PAN_INCLUDED==TRUE) 213aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_PAN, BTTRC_ID_STK_PAN, PAN_SetTraceLevel, "TRC_PAN", DEFAULT_CONF_TRACE_LEVEL}, 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (SAP_SERVER_INCLUDED==TRUE) 216aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_SAP, BTTRC_ID_STK_SAP, NULL, "TRC_SAP", DEFAULT_CONF_TRACE_LEVEL}, 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 218aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_SDP, BTTRC_ID_STK_SDP, SDP_SetTraceLevel, "TRC_SDP", DEFAULT_CONF_TRACE_LEVEL}, 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED==TRUE) 220aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_GATT, BTTRC_ID_STK_GATT, GATT_SetTraceLevel, "TRC_GATT", DEFAULT_CONF_TRACE_LEVEL}, 221aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_SMP, BTTRC_ID_STK_SMP, SMP_SetTraceLevel, "TRC_SMP", DEFAULT_CONF_TRACE_LEVEL}, 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 224aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton /* LayerIDs for BTA, currently everything maps onto appl_trace_level. 225aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton */ 226aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_BTA_ACC, BTTRC_ID_BTAPP, BTAPP_SetTraceLevel, "TRC_BTAPP", DEFAULT_CONF_TRACE_LEVEL}, 227aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_BTA_ACC, BTTRC_ID_BTAPP, BTIF_SetTraceLevel, "TRC_BTIF", DEFAULT_CONF_TRACE_LEVEL}, 228689d66b6559dcb3a0ad7f6cc33b6129e50910253The Android Open Source Project 229aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {0, 0, NULL, NULL, DEFAULT_CONF_TRACE_LEVEL} 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 232aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic const UINT16 bttrc_map_size = sizeof(bttrc_set_level_map)/sizeof(tBTTRC_FUNC_MAP); 233aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 234aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonvoid bte_trace_conf_config(const config_t *config) { 235aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton assert(config != NULL); 236aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 237aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton for (tBTTRC_FUNC_MAP *functions = &bttrc_set_level_map[0]; functions->trc_name; ++functions) { 238aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton int value = config_get_int(config, CONFIG_DEFAULT_SECTION, functions->trc_name, -1); 239aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (value != -1) 240aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton functions->trace_level = value; 241aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton } 242aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 243aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 244aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonvoid LogMsg(uint32_t trace_set_mask, const char *fmt_str, ...) { 245aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton static char buffer[BTE_LOG_BUF_SIZE]; 246aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton int trace_layer = TRACE_GET_LAYER(trace_set_mask); 247aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (trace_layer >= TRACE_LAYER_MAX_NUM) 248aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton trace_layer = 0; 249aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 250aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_list ap; 251aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_start(ap, fmt_str); 252aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton vsnprintf(&buffer[MSG_BUFFER_OFFSET], BTE_LOG_MAX_SIZE, fmt_str, ap); 253aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_end(ap); 254aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 255aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton switch ( TRACE_GET_TYPE(trace_set_mask) ) { 256aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_ERROR: 257aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton LOGE0(bt_layer_tags[trace_layer], buffer); 258aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 259aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_WARNING: 260aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton LOGW0(bt_layer_tags[trace_layer], buffer); 261aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 262aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_API: 263aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_EVENT: 264aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton LOGI0(bt_layer_tags[trace_layer], buffer); 265aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 266aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_DEBUG: 267aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton LOGD0(bt_layer_tags[trace_layer], buffer); 268aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 269aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton default: 270aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton LOGE0(bt_layer_tags[trace_layer], buffer); /* we should never get this */ 271aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 272aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton } 273aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************** 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Function Name: BTE_InitTraceLevels 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Purpose: This function can be used to set the boot time reading it from the 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** platform. 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** WARNING: it is called under BTU context and it blocks the BTU task 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** till it returns (sync call) 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Input Parameters: None, platform to provide levels 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Returns: 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** Newly set levels, if any! 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ** 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *********************************************************************************/ 289aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonvoid BTE_InitTraceLevels(void) { 290aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton // Read and set trace levels by calling the different XXX_SetTraceLevel(). 291aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (trace_conf_enabled == false) { 292aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton ALOGI("[bttrc] using compile default trace settings"); 293aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton return; 294aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton } 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 296aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton tBTTRC_FUNC_MAP *p_f_map = (tBTTRC_FUNC_MAP *)&bttrc_set_level_map[0]; 297aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton while (p_f_map->trc_name != NULL) { 298aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton ALOGI("BTE_InitTraceLevels -- %s", p_f_map->trc_name); 299aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (p_f_map->p_f) 300aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton p_f_map->p_f(p_f_map->trace_level); 301aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton p_f_map++; 302aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton } 303aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 305aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton/* this function should go into BTAPP_DM for example */ 306aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTAPP_SetTraceLevel(uint8_t new_level) { 307aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (new_level != 0xFF) 308aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton appl_trace_level = new_level; 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 310aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton return appl_trace_level; 311aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 312aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 313aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTIF_SetTraceLevel(uint8_t new_level) { 314aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (new_level != 0xFF) 315aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton btif_trace_level = new_level; 316aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 317aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton return btif_trace_level; 318aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 319aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 320aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTU_SetTraceLevel(uint8_t new_level) { 321aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (new_level != 0xFF) 322aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton btu_cb.trace_level = new_level; 323aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 324aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton return btu_cb.trace_level; 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 326