bte_logmsg.cc revision 5b790feeeb211c42bf78ca3ae9c26aa30e516765
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35b790feeeb211c42bf78ca3ae9c26aa30e516765Jakub Pawlowski * Copyright 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 21f2af1c42ccb2f642b241c2261b42d0be61d45438Jack He#include <base/logging.h> 22911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#include <stdarg.h> 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdio.h> 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <stdlib.h> 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include <string.h> 26aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include <sys/time.h> 27aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include <time.h> 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 29db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "avrc_api.h" 30911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#include "bt_common.h" 31aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton#include "bta_api.h" 32db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "bte.h" 33db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "btm_api.h" 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "btu.h" 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "l2c_api.h" 36911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#include "main_int.h" 37db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "osi/include/config.h" 38db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "osi/include/log.h" 39db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "port_api.h" 40db554581079863974af8e1289646f5deea6fc044Marie Janssen#include "sdp_api.h" 419891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson#include "stack_config.h" 42aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 43d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (AVDT_INCLUDED == TRUE) 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "avdt_api.h" 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 46d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (A2D_INCLUDED == TRUE) 47f66f4e95f2b4bc8d36033f2d65b387e32601fcd8Pavlin Radoslavov#include "a2dp_api.h" 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 49d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (BNEP_INCLUDED == TRUE) 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bnep_api.h" 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 52d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (PAN_INCLUDED == TRUE) 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "pan_api.h" 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 558843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#if (HID_HOST_INCLUDED == TRUE) 568843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#include "hidh_api.h" 578843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#endif 588843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#if (HID_DEV_INCLUDED == TRUE) 598843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#include "hidd_api.h" 608843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#endif 618843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta 62ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#include "smp_api.h" 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef DEFAULT_CONF_TRACE_LEVEL 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define DEFAULT_CONF_TRACE_LEVEL BT_TRACE_LEVEL_WARNING 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTE_LOG_BUF_SIZE 69911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTE_LOG_BUF_SIZE 1024 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 72911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTE_LOG_MAX_SIZE (BTE_LOG_BUF_SIZE - 12) 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define MSG_BUFFER_OFFSET 0 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 76aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton/* LayerIDs for BTA, currently everything maps onto appl_trace_level */ 77911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonstatic const char* const bt_layer_tags[] = { 78911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_btif", "bt_usb", "bt_serial", "bt_socket", "bt_rs232", "bt_lc", 79911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_lm", "bt_hci", "bt_l2cap", "bt_rfcomm", "bt_sdp", "bt_tcs", 80911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_obex", "bt_btm", "bt_gap", "UNUSED", "UNUSED", "bt_icp", 81911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_hsp2", "bt_spp", "bt_ctp", "bt_bpp", "bt_hcrp", "bt_ftp", 82911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_opp", "bt_btu", "bt_gki", /* OBSOLETED */ 83911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_bnep", "bt_pan", "bt_hfp", "bt_hid", "bt_bip", "bt_avp", 84911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_a2d", "bt_sap", "bt_amp", "bt_mca", "bt_att", "bt_smp", 85911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_nfc", "bt_nci", "bt_idep", "bt_ndep", "bt_llcp", "bt_rw", 86911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "bt_ce", "bt_snep", "bt_ndef", "bt_nfa", 87aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton}; 88aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTAPP_SetTraceLevel(uint8_t new_level); 89aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTIF_SetTraceLevel(uint8_t new_level); 90aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTU_SetTraceLevel(uint8_t new_level); 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* make sure list is order by increasing layer id!!! */ 93aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic tBTTRC_FUNC_MAP bttrc_set_level_map[] = { 94911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_BTU, BTTRC_ID_STK_HCI, BTU_SetTraceLevel, "TRC_HCI", 95911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 96911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_L2CAP, BTTRC_ID_STK_L2CAP, L2CA_SetTraceLevel, "TRC_L2CAP", 97911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 98911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_RFCOMM, BTTRC_ID_STK_RFCOMM_DATA, PORT_SetTraceLevel, 99911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson "TRC_RFCOMM", DEFAULT_CONF_TRACE_LEVEL}, 100d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (AVDT_INCLUDED == TRUE) 101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_AVDT, BTTRC_ID_STK_AVDT, AVDT_SetTraceLevel, "TRC_AVDT", 102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_AVRC, BTTRC_ID_STK_AVRC, AVRC_SetTraceLevel, "TRC_AVRC", 105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 106d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (AVDT_INCLUDED == TRUE) 107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson//{BTTRC_ID_AVDT_SCB, BTTRC_ID_AVDT_CCB, NULL, "TRC_AVDT_SCB", 108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson// DEFAULT_CONF_TRACE_LEVEL}, 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 110d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (A2D_INCLUDED == TRUE) 111911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_A2DP, BTTRC_ID_STK_A2DP, A2DP_SetTraceLevel, "TRC_A2D", 112911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 114d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (BNEP_INCLUDED == TRUE) 115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_BNEP, BTTRC_ID_STK_BNEP, BNEP_SetTraceLevel, "TRC_BNEP", 116911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 118911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_BTM_ACL, BTTRC_ID_STK_BTM_SEC, BTM_SetTraceLevel, "TRC_BTM", 119911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 1208843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#if (HID_HOST_INCLUDED == TRUE) 1218843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta {BTTRC_ID_STK_HID, BTTRC_ID_STK_HID, HID_HostSetTraceLevel, "TRC_HID_HOST", 1228843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta DEFAULT_CONF_TRACE_LEVEL}, 1238843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#endif 124d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (PAN_INCLUDED == TRUE) 125911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_PAN, BTTRC_ID_STK_PAN, PAN_SetTraceLevel, "TRC_PAN", 126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_SDP, BTTRC_ID_STK_SDP, SDP_SetTraceLevel, "TRC_SDP", 129911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 130911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_STK_SMP, BTTRC_ID_STK_SMP, SMP_SetTraceLevel, "TRC_SMP", 131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 1328843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#if (HID_DEV_INCLUDED == TRUE) 1338843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta {BTTRC_ID_STK_HIDD, BTTRC_ID_STK_HIDD, HID_DevSetTraceLevel, "TRC_HID_DEV", 1348843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta DEFAULT_CONF_TRACE_LEVEL}, 1358843cc830b522cfe6f1e361297fc28fd331a1378Hemant Gupta#endif 136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson 137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson /* LayerIDs for BTA, currently everything maps onto appl_trace_level. 138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson */ 139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_BTA_ACC, BTTRC_ID_BTAPP, BTAPP_SetTraceLevel, "TRC_BTAPP", 140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {BTTRC_ID_BTA_ACC, BTTRC_ID_BTAPP, BTIF_SetTraceLevel, "TRC_BTIF", 142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson DEFAULT_CONF_TRACE_LEVEL}, 143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson 144911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson {0, 0, NULL, NULL, DEFAULT_CONF_TRACE_LEVEL}}; 145911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson 146911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonvoid LogMsg(uint32_t trace_set_mask, const char* fmt_str, ...) { 147aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton static char buffer[BTE_LOG_BUF_SIZE]; 148aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton int trace_layer = TRACE_GET_LAYER(trace_set_mask); 149911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (trace_layer >= TRACE_LAYER_MAX_NUM) trace_layer = 0; 150aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 151aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_list ap; 152aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_start(ap, fmt_str); 153aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton vsnprintf(&buffer[MSG_BUFFER_OFFSET], BTE_LOG_MAX_SIZE, fmt_str, ap); 154aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton va_end(ap); 155aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson switch (TRACE_GET_TYPE(trace_set_mask)) { 157aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_ERROR: 158db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_ERROR(bt_layer_tags[trace_layer], "%s", buffer); 159aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 160aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_WARNING: 161db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_WARN(bt_layer_tags[trace_layer], "%s", buffer); 162aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 163aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_API: 164aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_EVENT: 165db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_INFO(bt_layer_tags[trace_layer], "%s", buffer); 166aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 167aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton case TRACE_TYPE_DEBUG: 168db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_DEBUG(bt_layer_tags[trace_layer], "%s", buffer); 169aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 170aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton default: 1719ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson /* we should never get this */ 1725d700dd909645dd1fe120014d817041aaed43b8dMyles Watson LOG_ERROR(bt_layer_tags[trace_layer], "!BAD TRACE TYPE! %s", buffer); 1735d700dd909645dd1fe120014d817041aaed43b8dMyles Watson CHECK(TRACE_GET_TYPE(trace_set_mask) == TRACE_TYPE_ERROR); 174aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton break; 175aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton } 176aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 178aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton/* this function should go into BTAPP_DM for example */ 179aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTAPP_SetTraceLevel(uint8_t new_level) { 180911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (new_level != 0xFF) appl_trace_level = new_level; 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 182aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton return appl_trace_level; 183aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 184aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 185aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTIF_SetTraceLevel(uint8_t new_level) { 186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (new_level != 0xFF) btif_trace_level = new_level; 187aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 188aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton return btif_trace_level; 189aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton} 190aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 191aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Mantonstatic uint8_t BTU_SetTraceLevel(uint8_t new_level) { 192911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (new_level != 0xFF) btu_trace_level = new_level; 193aa0f6ecc4cfd5c401e6278ee7139ce0cacc40483Chris Manton 19478bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov return btu_trace_level; 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 1969891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 197911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonstatic void load_levels_from_config(const config_t* config) { 198f2af1c42ccb2f642b241c2261b42d0be61d45438Jack He CHECK(config != NULL); 1999891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 200911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson for (tBTTRC_FUNC_MAP* functions = &bttrc_set_level_map[0]; 201911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson functions->trc_name; ++functions) { 202f3fb316634973d26cc4b4f55656b86e2a15bd69cJakub Pawlowski int value = config_get_int(*config, CONFIG_DEFAULT_SECTION, 203f3fb316634973d26cc4b4f55656b86e2a15bd69cJakub Pawlowski functions->trc_name, -1); 204911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (value != -1) functions->trace_level = value; 2059891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 206911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson if (functions->p_f) functions->p_f(functions->trace_level); 2079891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson } 2089891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson} 2099891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 210911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsonstatic future_t* init(void) { 211911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson const stack_config_t* stack_config = stack_config_get_interface(); 2129891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson if (!stack_config->get_trace_config_enabled()) { 213db554581079863974af8e1289646f5deea6fc044Marie Janssen LOG_INFO(LOG_TAG, "using compile default trace settings"); 2149891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson return NULL; 2159891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson } 2169891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 21775b83661eaecceeb48c73891ced70904bf0ce01bJakub Pawlowski init_cpp_logging(stack_config->get_all()); 21875b83661eaecceeb48c73891ced70904bf0ce01bJakub Pawlowski 2199891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson load_levels_from_config(stack_config->get_all()); 2209891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson return NULL; 2219891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson} 2229891f32471b5c01cf58e4d7dadb04cb3024a9a88Zach Johnson 223b2a292b5d8df2f359c38b0787bc01181225a9bc9Pavlin RadoslavovEXPORT_SYMBOL extern const module_t bte_logmsg_module = { 224911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson .name = BTE_LOGMSG_MODULE, 225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson .init = init, 226911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson .start_up = NULL, 227911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson .shut_down = NULL, 228911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson .clean_up = NULL, 229911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson .dependencies = {STACK_CONFIG_MODULE, NULL}}; 230