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