bte_logmsg.cc revision 78bcff79e1b1f0efce436b33bdd6da88745bfc8a
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 1949a86709488e5cfd5e23759da18bf9613e15b04dMarie Janssen#define LOG_TAG "bt_bte" 2049120dc867c7818511b5afec461dfc97d17eef58Marie Janssen 219f8a8aeda32156121bd4dc58b20bc992082c24ccSharvil Nanavati#include <assert.h> 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdio.h> 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdlib.h> 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdarg.h> 26aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include <sys/time.h> 27aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include <time.h> 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "avrc_api.h" 30aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include "bta_api.h" 31db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "bte.h" 32db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "btm_api.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btu.h" 34db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "gap_api.h" 35258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h" 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "l2c_api.h" 37db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "osi/include/config.h" 38db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "osi/include/log.h" 3944802768c447ab480d4227b3a852a97d923b816dSharvil Nanavati#include "osi/include/log.h" 40db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "port_api.h" 41db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "sdp_api.h" 429891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson#include "stack_config.h" 43aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVDT_INCLUDED==TRUE) 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "avdt_api.h" 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (A2D_INCLUDED==TRUE) 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "a2d_api.h" 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BNEP_INCLUDED==TRUE) 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bnep_api.h" 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (PAN_INCLUDED==TRUE) 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "pan_api.h" 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED==TRUE) 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gatt_api.h" 58ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "smp_api.h" 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef DEFAULT_CONF_TRACE_LEVEL 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define DEFAULT_CONF_TRACE_LEVEL BT_TRACE_LEVEL_WARNING 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTE_LOG_BUF_SIZE 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTE_LOG_BUF_SIZE 1024 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 69aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#define BTE_LOG_MAX_SIZE (BTE_LOG_BUF_SIZE - 12) 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_BUFFER_OFFSET 0 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 73aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton/* LayerIDs for BTA, currently everything maps onto appl_trace_level */ 74aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic const char * const bt_layer_tags[] = { 75f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_btif", 76f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_usb", 77f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_serial", 78f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_socket", 79f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_rs232", 80f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_lc", 81f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_lm", 82f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_hci", 83f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_l2cap", 84f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_rfcomm", 85f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_sdp", 86f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_tcs", 87f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_obex", 88f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_btm", 89f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_gap", 90e623c26bb2e14c2fa7cf76d55e51d93c1ac42782Zach Johnson "UNUSED", 91c8235d00e545208e92de1e0a85f2e4763e495cdfZach Johnson "UNUSED", 92f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_icp", 93f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_hsp2", 94f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_spp", 95f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_ctp", 96f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_bpp", 97f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_hcrp", 98f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_ftp", 99f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_opp", 100f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_btu", 101258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov "bt_gki", /* OBSOLETED */ 102f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_bnep", 103f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_pan", 104f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_hfp", 105f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_hid", 106f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_bip", 107f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_avp", 108f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_a2d", 109f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_sap", 110f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_amp", 111f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_mca", 112f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_att", 113f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_smp", 114f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_nfc", 115f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_nci", 116f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_idep", 117f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_ndep", 118f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_llcp", 119f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_rw", 120f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_ce", 121f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_snep", 122f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_ndef", 123f8027005333c88a2f097cfd70d15c3d54c7764aeChris Manton "bt_nfa", 124aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton}; 125aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTAPP_SetTraceLevel(uint8_t new_level); 126aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTIF_SetTraceLevel(uint8_t new_level); 127aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTU_SetTraceLevel(uint8_t new_level); 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* make sure list is order by increasing layer id!!! */ 130aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic tBTTRC_FUNC_MAP bttrc_set_level_map[] = { 131aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_BTU, BTTRC_ID_STK_HCI, BTU_SetTraceLevel, "TRC_HCI", DEFAULT_CONF_TRACE_LEVEL}, 132aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_L2CAP, BTTRC_ID_STK_L2CAP, L2CA_SetTraceLevel, "TRC_L2CAP", DEFAULT_CONF_TRACE_LEVEL}, 133aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_RFCOMM, BTTRC_ID_STK_RFCOMM_DATA, PORT_SetTraceLevel, "TRC_RFCOMM", DEFAULT_CONF_TRACE_LEVEL}, 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVDT_INCLUDED==TRUE) 135aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_AVDT, BTTRC_ID_STK_AVDT, AVDT_SetTraceLevel, "TRC_AVDT", DEFAULT_CONF_TRACE_LEVEL}, 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 137aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_AVRC, BTTRC_ID_STK_AVRC, AVRC_SetTraceLevel, "TRC_AVRC", DEFAULT_CONF_TRACE_LEVEL}, 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (AVDT_INCLUDED==TRUE) 139aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton //{BTTRC_ID_AVDT_SCB, BTTRC_ID_AVDT_CCB, NULL, "TRC_AVDT_SCB", DEFAULT_CONF_TRACE_LEVEL}, 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (A2D_INCLUDED==TRUE) 142aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_A2D, BTTRC_ID_STK_A2D, A2D_SetTraceLevel, "TRC_A2D", DEFAULT_CONF_TRACE_LEVEL}, 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BNEP_INCLUDED==TRUE) 145aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_BNEP, BTTRC_ID_STK_BNEP, BNEP_SetTraceLevel, "TRC_BNEP", DEFAULT_CONF_TRACE_LEVEL}, 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 147aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_BTM_ACL, BTTRC_ID_STK_BTM_SEC, BTM_SetTraceLevel, "TRC_BTM", DEFAULT_CONF_TRACE_LEVEL}, 148aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_GAP, BTTRC_ID_STK_GAP, GAP_SetTraceLevel, "TRC_GAP", DEFAULT_CONF_TRACE_LEVEL}, 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (PAN_INCLUDED==TRUE) 150aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_PAN, BTTRC_ID_STK_PAN, PAN_SetTraceLevel, "TRC_PAN", DEFAULT_CONF_TRACE_LEVEL}, 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 152aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_SDP, BTTRC_ID_STK_SDP, SDP_SetTraceLevel, "TRC_SDP", DEFAULT_CONF_TRACE_LEVEL}, 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED==TRUE) 154aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_GATT, BTTRC_ID_STK_GATT, GATT_SetTraceLevel, "TRC_GATT", DEFAULT_CONF_TRACE_LEVEL}, 155aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_STK_SMP, BTTRC_ID_STK_SMP, SMP_SetTraceLevel, "TRC_SMP", DEFAULT_CONF_TRACE_LEVEL}, 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 158aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton /* LayerIDs for BTA, currently everything maps onto appl_trace_level. 159aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton */ 160aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_BTA_ACC, BTTRC_ID_BTAPP, BTAPP_SetTraceLevel, "TRC_BTAPP", DEFAULT_CONF_TRACE_LEVEL}, 161aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {BTTRC_ID_BTA_ACC, BTTRC_ID_BTAPP, BTIF_SetTraceLevel, "TRC_BTIF", DEFAULT_CONF_TRACE_LEVEL}, 162689d66b6559dcb3a0ad7f6cc33b6129e50910253The Android Open Source Project 163aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton {0, 0, NULL, NULL, DEFAULT_CONF_TRACE_LEVEL} 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 166aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic const UINT16 bttrc_map_size = sizeof(bttrc_set_level_map)/sizeof(tBTTRC_FUNC_MAP); 167aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 168aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonvoid LogMsg(uint32_t trace_set_mask, const char *fmt_str, ...) { 169aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton static char buffer[BTE_LOG_BUF_SIZE]; 170aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton int trace_layer = TRACE_GET_LAYER(trace_set_mask); 171aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (trace_layer >= TRACE_LAYER_MAX_NUM) 172aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton trace_layer = 0; 173aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 174aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_list ap; 175aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_start(ap, fmt_str); 176aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton vsnprintf(&buffer[MSG_BUFFER_OFFSET], BTE_LOG_MAX_SIZE, fmt_str, ap); 177aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_end(ap); 178aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 179aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton switch ( TRACE_GET_TYPE(trace_set_mask) ) { 180aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_ERROR: 181db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_ERROR(bt_layer_tags[trace_layer], "%s", buffer); 182aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 183aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_WARNING: 184db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_WARN(bt_layer_tags[trace_layer], "%s", buffer); 185aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 186aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_API: 187aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_EVENT: 188db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_INFO(bt_layer_tags[trace_layer], "%s", buffer); 189aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 190aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_DEBUG: 191db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_DEBUG(bt_layer_tags[trace_layer], "%s", buffer); 192aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 193aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton default: 194db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_ERROR(bt_layer_tags[trace_layer], "%s", buffer); /* we should never get this */ 195aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 196aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton } 197aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 199aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton/* this function should go into BTAPP_DM for example */ 200aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTAPP_SetTraceLevel(uint8_t new_level) { 201aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (new_level != 0xFF) 202aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton appl_trace_level = new_level; 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 204aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton return appl_trace_level; 205aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 206aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 207aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTIF_SetTraceLevel(uint8_t new_level) { 208aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (new_level != 0xFF) 209aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton btif_trace_level = new_level; 210aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 211aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton return btif_trace_level; 212aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 213aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 214aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTU_SetTraceLevel(uint8_t new_level) { 215aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton if (new_level != 0xFF) 21678bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov btu_trace_level = new_level; 217aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 21878bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov return btu_trace_level; 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 2209891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 2219891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnsonstatic void load_levels_from_config(const config_t *config) { 2229891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson assert(config != NULL); 2239891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 2249891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson for (tBTTRC_FUNC_MAP *functions = &bttrc_set_level_map[0]; functions->trc_name; ++functions) { 225db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_INFO(LOG_TAG, "BTE_InitTraceLevels -- %s", functions->trc_name); 2269891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson int value = config_get_int(config, CONFIG_DEFAULT_SECTION, functions->trc_name, -1); 2279891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson if (value != -1) 2289891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson functions->trace_level = value; 2299891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 2309891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson if (functions->p_f) 2319891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson functions->p_f(functions->trace_level); 2329891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson } 2339891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson} 2349891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 2359891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnsonstatic future_t *init(void) { 2369891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson const stack_config_t *stack_config = stack_config_get_interface(); 2379891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson if (!stack_config->get_trace_config_enabled()) { 238db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_INFO(LOG_TAG, "using compile default trace settings"); 2399891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson return NULL; 2409891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson } 2419891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 2429891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson load_levels_from_config(stack_config->get_all()); 2439891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson return NULL; 2449891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson} 2459891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 2461f81b64b337832452e9ba1f530e612a685aebb82Ian CoolidgeEXPORT_SYMBOL const module_t bte_logmsg_module = { 2479891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson .name = BTE_LOGMSG_MODULE, 2489891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson .init = init, 2499891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson .start_up = NULL, 2509891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson .shut_down = NULL, 2519891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson .clean_up = NULL, 2529891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson .dependencies = { 2539891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson STACK_CONFIG_MODULE, 2549891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson NULL 2559891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson } 2569891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson}; 257