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