15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 1998-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 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This is the private file for the message access equipment (MSE) 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * subsystem. 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTA_HL_INT_H 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HL_INT_H 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_hl_api.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_hl_co.h" 31cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#include "bta_sys.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "l2cdefs.h" 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 34cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef uint16_t(tBTA_HL_ALLOCATE_PSM)(void); 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 378af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Constants and data types 388af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTA_HL_DISC_SIZE 41cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DISC_SIZE 1600 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 43cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_NUM_SRCH_ATTR 10 44cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_MIN_SDP_MDEP_LEN 7 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* L2CAP defualt parameters */ 47cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_L2C_TX_WIN_SIZE 10 48cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_L2C_MAX_TRANSMIT 32 49cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_L2C_RTRANS_TOUT 2000 50cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_L2C_MON_TOUT 12000 51cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_L2C_MPS 1017 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* L2CAP FCS setting*/ 54cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_MCA_USE_FCS MCA_FCS_USE 55cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_MCA_NO_FCS MCA_FCS_BYPASS 56cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_L2C_USE_FCS 1 57cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_L2C_NO_FCS 0 58cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DEFAULT_SOURCE_FCS BTA_HL_L2C_USE_FCS 59cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_MCA_FCS_USE_MASK MCA_FCS_USE_MASK 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* SDP Operations */ 62cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_SDP_OP_NONE 0 63cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_SDP_OP_CCH_INIT 1 64cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_SDP_OP_DCH_OPEN_INIT 2 65cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_SDP_OP_DCH_RECONNECT_INIT 3 66cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_SDP_OP_SDP_QUERY_NEW 4 67cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_SDP_OP_SDP_QUERY_CURRENT 5 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 69e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint8_t tBTA_HL_SDP_OPER; 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* CCH Operations */ 72cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CCH_OP_NONE 0 73cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CCH_OP_LOCAL_OPEN 1 74cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CCH_OP_REMOTE_OPEN 2 75cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CCH_OP_LOCAL_CLOSE 3 76cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CCH_OP_REMOTE_CLOSE 4 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 78e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint8_t tBTA_HL_CCH_OPER; 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Pending DCH close operations when closing a CCH */ 81cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CCH_CLOSE_OP_DCH_NONE 0 82cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CCH_CLOSE_OP_DCH_ABORT 1 83cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CCH_CLOSE_OP_DCH_CLOSE 2 84e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint8_t tBTA_HL_CCH_CLOSE_DCH_OPER; 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* DCH Operations */ 87cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_NONE 0 88cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_REMOTE_CREATE 1 89cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_LOCAL_OPEN 2 90cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_REMOTE_OPEN 3 91cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_LOCAL_CLOSE 4 92cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_REMOTE_CLOSE 5 93cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_LOCAL_DELETE 6 94cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_REMOTE_DELETE 7 95cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_LOCAL_RECONNECT 8 96cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_REMOTE_RECONNECT 9 97cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_LOCAL_CLOSE_ECHO_TEST 10 98cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_DCH_OP_LOCAL_CLOSE_RECONNECT 11 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 100e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint8_t tBTA_HL_DCH_OPER; 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Echo test Operations */ 103cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_NONE 0 104cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_CI_GET_ECHO_DATA 1 105cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_SDP_INIT 2 106cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_MDL_CREATE_CFM 3 107cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_DCH_OPEN_CFM 4 108cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_LOOP_BACK 5 109cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_CI_PUT_ECHO_DATA 6 110cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_DCH_CLOSE_CFM 7 111cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_OPEN_IND 8 112cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ECHO_OP_ECHO_PKT 9 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 114e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint8_t tBTA_HL_ECHO_OPER; 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* abort status mask for abort_oper */ 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 118cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ABORT_NONE_MASK 0x00 119cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ABORT_PENDING_MASK 0x01 120cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ABORT_LOCAL_MASK 0x10 121cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_ABORT_REMOTE_MASK 0x20 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HL_ABORT_CCH_CLOSE_MASK 0x40 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* call out mask for cout_oper */ 125cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CO_NONE_MASK 0x00 126cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CO_GET_TX_DATA_MASK 0x01 127cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson#define BTA_HL_CO_PUT_RX_DATA_MASK 0x02 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HL_CO_GET_ECHO_DATA_MASK 0x04 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HL_CO_PUT_ECHO_DATA_MASK 0x08 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 131cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 132cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t mtu; 133cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t fcs; /* '0' No FCS, otherwise '1' */ 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_L2CAP_CFG_INFO; 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* State Machine Events */ 137cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonenum { 138cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson /* these events are handled by the state machine */ 139cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HL), 140cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_SDP_OK_EVT, 141cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_SDP_FAIL_EVT, 142cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_CONNECT_IND_EVT, 143cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_DISCONNECT_IND_EVT, 144cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_CLOSE_EVT, 145cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_CLOSE_CMPL_EVT, 146cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_RSP_TOUT_IND_EVT, 147cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson /* DCH EVENT */ 148cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_SDP_INIT_EVT, 149cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_OPEN_EVT, 150cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_CREATE_IND_EVT, 151cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_CREATE_CFM_EVT, 152cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_OPEN_IND_EVT, 153cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 154cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_OPEN_CFM_EVT, 155cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_CLOSE_EVT, 156cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_CLOSE_IND_EVT, 157cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_CLOSE_CFM_EVT, 158cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_SEND_DATA_EVT, 159cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 160cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_RCV_DATA_EVT, 161cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_CLOSE_CMPL_EVT, 162cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_RECONNECT_EVT, 163cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_SDP_FAIL_EVT, 164cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_RECONNECT_IND_EVT, 165cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 166cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_RECONNECT_CFM_EVT, 167cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_CLOSE_ECHO_TEST_EVT, 168cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DCH_CREATE_RSP_EVT, 169cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_ABORT_EVT, 170cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_ABORT_IND_EVT, 171cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 172cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_ABORT_CFM_EVT, 173cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_CONG_CHG_EVT, 174cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CI_GET_TX_DATA_EVT, 175cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CI_PUT_RX_DATA_EVT, 176cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CI_GET_ECHO_DATA_EVT, 177cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_ECHO_TEST_EVT, 178cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CI_PUT_ECHO_DATA_EVT, 179cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 180cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson /* these events are handled outside the state machine */ 181cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_ENABLE_EVT, 182cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DISABLE_EVT, 183cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_UPDATE_EVT, 184cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_REGISTER_EVT, 185cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DEREGISTER_EVT, 186cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_CCH_OPEN_EVT, 187cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_CCH_CLOSE_EVT, 188cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DCH_OPEN_EVT, 189cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DCH_RECONNECT_EVT, 190cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DCH_CLOSE_EVT, 191cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DELETE_MDL_EVT, 192cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DCH_ABORT_EVT, 193cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 194cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_DCH_ECHO_TEST_EVT, 195cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_API_SDP_QUERY_EVT, 196cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_SDP_QUERY_OK_EVT, 197cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_SDP_QUERY_FAIL_EVT, 198cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_DELETE_IND_EVT, 199cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_MCA_DELETE_CFM_EVT 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 201e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint16_t tBTA_HL_INT_EVT; 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HL_DCH_EVT_MIN BTA_HL_DCH_SDP_INIT_EVT 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HL_DCH_EVT_MAX 0xFFFF 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state machine states */ 207cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonenum { 208cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_IDLE_ST = 0, /* Idle */ 209cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_OPENING_ST, /* Opening a connection*/ 210cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_OPEN_ST, /* Connection is open */ 211cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_CCH_CLOSING_ST /* Closing is in progress */ 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 213e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint8_t tBTA_HL_CCH_STATE; 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 215cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonenum { 216cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_IDLE_ST = 0, /* Idle */ 217cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_OPENING_ST, /* Opening a connection*/ 218cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_OPEN_ST, /* Connection is open */ 219cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BTA_HL_DCH_CLOSING_ST /* Closing is in progress */ 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 221e9e58ced195ec2c983c7723c9cbdabd45eb0f2fdMarie Janssentypedef uint8_t tBTA_HL_DCH_STATE; 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 223cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 224cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 225cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CTRL_CBACK* p_cback; /* pointer to control callback function */ 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_ENABLE; 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 228cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 229cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 230cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_id; 231cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool is_register; /* Update HL application due to register or deregister */ 232cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CBACK* p_cback; /* pointer to application callback function */ 233cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */ 234cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_SEC sec_mask; /* security mask for accepting conenction*/ 235cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char srv_name[BTA_SERVICE_NAME_LEN + 236cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 1]; /* service name to be used in the SDP; null terminated*/ 237cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char srv_desp[BTA_SERVICE_DESP_LEN + 1]; /* service description to be used in 238cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson the SDP; null terminated */ 239cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char provider_name[BTA_PROVIDER_NAME_LEN + 1]; /* provide name to be used in 240cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson the SDP; null terminated */ 241f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 242f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera} tBTA_HL_API_UPDATE; 243f8f30c2cecf221b2c3983b72d5a849d799c39dd7Priti Aghera 244cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 245cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 246cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_id; 247cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CBACK* p_cback; /* pointer to application callback function */ 248cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DEVICE_TYPE dev_type; /* sink, source or dual roles */ 249cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_SEC sec_mask; /* security mask for accepting conenction*/ 250cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char srv_name[BTA_SERVICE_NAME_LEN + 251cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 1]; /* service name to be used in the SDP; null terminated*/ 252cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char srv_desp[BTA_SERVICE_DESP_LEN + 1]; /* service description to be used in 253cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson the SDP; null terminated */ 254cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char provider_name[BTA_PROVIDER_NAME_LEN + 1]; /* provide name to be used in 255cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson the SDP; null terminated */ 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_REGISTER; 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 258cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 259cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 260cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_id; 261cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CBACK* p_cback; /* pointer to application callback function */ 262cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle; 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_DEREGISTER; 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 265cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 266cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 267cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_id; 268cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle; 269cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t ctrl_psm; 2709e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski RawAddress bd_addr; /* Address of peer device */ 27150cf52cf6b097ecb57922d69c22d559097a205b0Jakub Pawlowski tBTA_SEC sec_mask; /* security mask for initiating connection*/ 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_CCH_OPEN; 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 274cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 275cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 276cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_CCH_CLOSE; 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 279cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 280cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 281cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 282cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t ctrl_psm; 283cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ID local_mdep_id; /* local MDEP ID */ 284cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ID peer_mdep_id; /* peer mdep id */ 285cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_CFG local_cfg; 286cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_SEC sec_mask; /* security mask for initiating connection*/ 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_DCH_OPEN; 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 289cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 290cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 292cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 293cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t ctrl_psm; 294cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_ID mdl_id; 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_DCH_RECONNECT; 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 297cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 298cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 299cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_HANDLE mdl_handle; 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_DCH_CLOSE; 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 302cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 303cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 304cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 305cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_ID mdl_id; 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_DELETE_MDL; 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 308cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 309cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 310cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_DCH_ABORT; 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 313cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 314cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 315cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_HANDLE mdl_handle; 316cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t pkt_size; 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_SEND_DATA; 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 319cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 320cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 321cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 322cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t ctrl_psm; 323cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t pkt_size; 324cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_CFG local_cfg; 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_DCH_ECHO_TEST; 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 327cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 328cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 329cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_idx; 330cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mcl_idx; 331cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool release_mcl_cb; 332cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson} tBTA_HL_CCH_SDP; 3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* MCA callback event parameters. */ 335cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 336cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 337cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle; 338cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 339cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tMCA_CTRL mca_data; 3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_MCA_EVT; 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* MCA callback event parameters. */ 343cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 344cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 345cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_idx; 346cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mcl_idx; 347cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx; 348cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_pkt; 3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_MCA_RCV_DATA_EVT; 3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 351cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 352cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 353cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_idx; 354cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mcl_idx; 355cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx; 356cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson} tBTA_HL_DCH_SDP; 357cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 358cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 359cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 360cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle; 361cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_id; 3629e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski RawAddress bd_addr; /* Address of peer device */ 3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_SDP_QUERY; 3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 365cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 366cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 367cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 368cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_ID mdl_id; 369cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ID local_mdep_id; 370cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_CREATE_RSP rsp_code; 371cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_CFG cfg_rsp; 3725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_API_DCH_CREATE_RSP; 3735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 374cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 375cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 376cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_HANDLE mdl_handle; 377cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status; 3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_CI_GET_PUT_DATA; 3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 380cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 381cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 382cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 383cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status; 3845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_CI_ECHO_DATA; 3855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* union of all state machine event data types */ 387cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef union { 388cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR hdr; 389cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_ENABLE api_enable; /* data for BTA_MSE_API_ENABLE_EVT */ 390cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_UPDATE api_update; 391cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_REGISTER api_reg; 392cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_DEREGISTER api_dereg; 393cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_CCH_OPEN api_cch_open; 394cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_CCH_CLOSE api_cch_close; 395cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_DCH_CREATE_RSP api_dch_create_rsp; 396cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_DCH_OPEN api_dch_open; 397cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_DCH_RECONNECT api_dch_reconnect; 398cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_DCH_CLOSE api_dch_close; 399cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_DELETE_MDL api_delete_mdl; 400cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_DCH_ABORT api_dch_abort; 401cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_SEND_DATA api_send_data; 402cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_DCH_ECHO_TEST api_dch_echo_test; 403cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_API_SDP_QUERY api_sdp_query; 404cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 405cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CCH_SDP cch_sdp; 406cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCA_EVT mca_evt; 407cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCA_RCV_DATA_EVT mca_rcv_data_evt; 408cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_SDP dch_sdp; /* for DCH_OPEN_EVT and DCH_RECONNECT_EVT */ 409cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CI_GET_PUT_DATA ci_get_put_data; 410cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CI_ECHO_DATA ci_get_put_echo_data; 4115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HL_DATA; 4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 413cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 414cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool in_use; 415cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t mdl_id; 416cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_HANDLE mdl_handle; 417cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_OPER dch_oper; 418cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool intentional_close; 419cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_STATE dch_state; 420cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t abort_oper; 421cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t req_data_psm; 422cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t max_rx_apdu_size; 423cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t max_tx_apdu_size; 424cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_tx_pkt; 425cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_rx_pkt; 426cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ID local_mdep_id; 427cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t local_mdep_cfg_idx; 428cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_CFG local_cfg; 429cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_CFG remote_cfg; 430cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ID peer_mdep_id; 431cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t peer_data_type; 432cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ROLE peer_mdep_role; 433cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_MODE dch_mode; 434cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_SEC sec_mask; 435cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool is_the_first_reliable; 436cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool delete_mdl; 437cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t mtu; 438cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tMCA_CHNL_CFG chnl_cfg; 439cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool mdl_cfg_idx_included; 440cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_cfg_idx; 441cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t echo_oper; 442cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool cong; 443cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool close_pending; 444cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t cout_oper; 445cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_echo_tx_pkt; 446cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson BT_HDR* p_echo_rx_pkt; 447cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS ci_put_echo_data_status; 448cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson} tBTA_HL_MDL_CB; 449cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 450cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 451cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_CB mdl[BTA_HL_NUM_MDLS_PER_MCL]; 452cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DELETE_MDL delete_mdl; 453cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool in_use; 454cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CCH_STATE cch_state; 455cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t req_ctrl_psm; 456cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t ctrl_psm; 457cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t data_psm; 4589e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski RawAddress bd_addr; 459cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t cch_mtu; 460cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t sec_mask; 461cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 462cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tSDP_DISCOVERY_DB* p_db; /* pointer to discovery database */ 463cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tSDP_DISC_CMPL_CB* sdp_cback; 464cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_SDP_OPER sdp_oper; 465cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool close_pending; 466cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t sdp_mdl_idx; 467cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_SDP sdp; 468cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t cch_oper; 469cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t force_close_local_cch_opening; 470cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool intentional_close; 471cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool rsp_tout; 472cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t timer_oper; 473cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool echo_test; 474cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t echo_mdl_idx; 475cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t cch_close_dch_oper; 476cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_id; 477cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson} tBTA_HL_MCL_CB; 478cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 479cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 480cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_CB mcb[BTA_HL_NUM_MCLS]; /* application Control Blocks */ 481cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CBACK* p_cback; /* pointer to control callback function */ 482cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool in_use; /* this CB is in use*/ 483cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool deregistering; 484cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_id; 485cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint32_t sdp_handle; /* SDP record handle */ 486cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_SUP_FEATURE sup_feature; 487cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_CFG mdl_cfg[BTA_HL_NUM_MDL_CFGS]; 488cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DEVICE_TYPE dev_type; 489cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle; 490cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t ctrl_psm; /* L2CAP PSM for the MCAP control channel */ 491cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t data_psm; /* L2CAP PSM for the MCAP data channel */ 492cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t sec_mask; /* Security mask for BTM_SetSecurityLevel() */ 493cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 494cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char srv_name[BTA_SERVICE_NAME_LEN + 495cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 1]; /* service name to be used in the SDP; null terminated*/ 496cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char srv_desp[BTA_SERVICE_DESP_LEN + 1]; /* service description to be used in 497cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson the SDP; null terminated */ 498cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson char provider_name[BTA_PROVIDER_NAME_LEN + 1]; /* provide name to be used in 499cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson the SDP; null terminated */ 500cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 501cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tMCA_CTRL_CBACK* p_mcap_cback; /* pointer to MCAP callback function */ 502cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tMCA_DATA_CBACK* p_data_cback; 503cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson} tBTA_HL_APP_CB; 504cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 505cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 506cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool in_use; 507cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_SDP_OPER sdp_oper; 508cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_idx; 509cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mcl_idx; 510cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx; 511cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson} tBTA_HL_SDP_CB; 512cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 513cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 514cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool in_use; 515cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_idx; 516cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mcl_idx; 517cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson} tBTA_HL_TIMER_CB; 518cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 519cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsontypedef struct { 520cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_CB acb[BTA_HL_NUM_APPS]; /* HL Control Blocks */ 521cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_CTRL_CBACK* p_ctrl_cback; /* pointer to control callback function */ 522cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool enable; 523cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool disabling; 524cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 525cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_SDP_CB scb[BTA_HL_NUM_SDP_CBACKS]; 526cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_TIMER_CB tcb[BTA_HL_NUM_TIMERS]; 527cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool enable_random_psm; 528cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_ALLOCATE_PSM* p_alloc_psm; 529cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson} tBTA_HL_CB; 5305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 5328af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Configuration Definitions 5338af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ******************************************************************************/ 5345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Configuration structure */ 5355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 5378af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Global data 5388af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 5395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HL control block */ 541cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tBTA_HL_CB bta_hl_cb; 5425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HL_GET_CB_PTR() &(bta_hl_cb) 5445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HL_GET_APP_CB_PTR(app_idx) &(bta_hl_cb.acb[(app_idx)]) 5453cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson#define BTA_HL_GET_MCL_CB_PTR(app_idx, mcl_idx) \ 5463cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson &(bta_hl_cb.acb[(app_idx)].mcb[(mcl_idx)]) 5473cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson#define BTA_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx) \ 5483cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson &(bta_hl_cb.acb[(app_idx)].mcb[(mcl_idx)].mdl[(mdl_idx)]) 5493cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson#define BTA_HL_GET_MDL_CFG_PTR(app_idx, item_idx) \ 5503cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson &(bta_hl_cb.acb[(app_idx)].mdl_cfg[(item_idx)]) 5513cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson#define BTA_HL_GET_ECHO_CFG_PTR(app_idx) \ 5523cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson &(bta_hl_cb.acb[(app_idx)].sup_feature.echo_cfg) 5533cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson#define BTA_HL_GET_MDEP_CFG_PTR(app_idx, mdep_cfg_idx) \ 5543cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson &(bta_hl_cb.acb[(app_idx)].sup_feature.mdep[(mdep_cfg_idx)].mdep_cfg) 5553cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson#define BTA_HL_GET_DATA_CFG_PTR(app_idx, mdep_cfg_idx, data_cfg_idx) \ 5563cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson &(bta_hl_cb.acb[(app_idx)] \ 5573cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson .sup_feature.mdep[(mdep_cfg_idx)] \ 5583cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson .mdep_cfg.data_cfg[(data_cfg_idx)]) 5593cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson#define BTA_HL_GET_BUF_PTR(p_pkt) \ 5603cb4b331a1a01d5b46b5af90263b1a9c8d9c5da1Myles Watson ((uint8_t*)((uint8_t*)((p_pkt) + 1) + (p_pkt)->offset)) 5615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 5625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 5638af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson * Function prototypes 5648af480e24549ba51a3f6858d9d9af504715e0beaMyles Watson ****************************************************************************/ 565cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson/* main */ 566cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_hdl_event(BT_HDR* p_msg); 567cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson/* sdp */ 568cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_fill_sup_feature_list(const tSDP_DISC_ATTR* p_attr, 569cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_SUP_FEATURE_LIST_ELEM* p_list); 570cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tBTA_HL_STATUS bta_hl_sdp_update(uint8_t app_id); 571cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tBTA_HL_STATUS bta_hl_sdp_register(uint8_t app_idx); 572cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tSDP_DISC_REC* bta_hl_find_sink_or_src_srv_class_in_db( 573cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson const tSDP_DISCOVERY_DB* p_db, const tSDP_DISC_REC* p_start_rec); 574cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 575cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson/* action routines */ 576cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_ci_get_tx_data(uint8_t app_idx, uint8_t mcl_idx, 577cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 578cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_ci_put_rx_data(uint8_t app_idx, uint8_t mcl_idx, 579cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 580cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_ci_get_echo_data(uint8_t app_idx, uint8_t mcl_idx, 581cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 582cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 583cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_echo_test(uint8_t app_idx, uint8_t mcl_idx, 584cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 585cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_ci_put_echo_data(uint8_t app_idx, uint8_t mcl_idx, 586cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 587cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_send_data(uint8_t app_idx, uint8_t mcl_idx, 588cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 589cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_sdp_fail(uint8_t app_idx, uint8_t mcl_idx, 590cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 591cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_cong_change(uint8_t app_idx, uint8_t mcl_idx, 592cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 593cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_reconnect_ind(uint8_t app_idx, uint8_t mcl_idx, 594cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 595cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_reconnect_cfm(uint8_t app_idx, uint8_t mcl_idx, 596cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 597cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_reconnect(uint8_t app_idx, uint8_t mcl_idx, 598cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 599cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_sdp_init(uint8_t app_idx, uint8_t mcl_idx, 600cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 601cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_close_echo_test(uint8_t app_idx, uint8_t mcl_idx, 602cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 603cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_create_rsp(uint8_t app_idx, uint8_t mcl_idx, 604cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 605cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_rcv_data(uint8_t app_idx, uint8_t mcl_idx, 606cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 607cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx, 608cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 609cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_close_cfm(uint8_t app_idx, uint8_t mcl_idx, 610cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 611cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_close_ind(uint8_t app_idx, uint8_t mcl_idx, 612cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 613cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_close(uint8_t app_idx, uint8_t mcl_idx, 614cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 615cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_delete_ind(uint8_t app_idx, uint8_t mcl_idx, 616cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 617cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 618cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_delete_cfm(uint8_t app_idx, uint8_t mcl_idx, 619cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 620cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_delete(uint8_t app_idx, uint8_t mcl_idx, 621cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 622cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_abort_ind(uint8_t app_idx, uint8_t mcl_idx, 623cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 624cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_abort_cfm(uint8_t app_idx, uint8_t mcl_idx, 625cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 626cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_abort(uint8_t app_idx, uint8_t mcl_idx, 627cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 628cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_open_ind(uint8_t app_idx, uint8_t mcl_idx, 629cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 630cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_open_cfm(uint8_t app_idx, uint8_t mcl_idx, 631cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 632cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_create_ind(uint8_t app_idx, uint8_t mcl_idx, 633cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 634cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_create_cfm(uint8_t app_idx, uint8_t mcl_idx, 635cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 636cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_mca_create(uint8_t app_idx, uint8_t mcl_idx, 637cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 638cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_deallocate_spd_cback(uint8_t sdp_cback_idx); 639cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tSDP_DISC_CMPL_CB* bta_hl_allocate_spd_cback(tBTA_HL_SDP_OPER sdp_oper, 640cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_idx, 641cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mcl_idx, 642cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, 643cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_sdp_cback_idx); 644cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tBTA_HL_STATUS bta_hl_init_sdp(tBTA_HL_SDP_OPER sdp_oper, 645cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_idx, uint8_t mcl_idx, 646cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx); 647cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_sdp_init(uint8_t app_idx, uint8_t mcl_idx, 648cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 649cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_mca_open(uint8_t app_idx, uint8_t mcl_idx, 650cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 651cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_mca_close(uint8_t app_idx, uint8_t mcl_idx, 652cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 653cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_close_cmpl(uint8_t app_idx, uint8_t mcl_idx, 654cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 655cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_mca_disconnect(uint8_t app_idx, uint8_t mcl_idx, 656cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 657cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_mca_disc_open(uint8_t app_idx, uint8_t mcl_idx, 658cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 659cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_mca_rsp_tout(uint8_t app_idx, uint8_t mcl_idx, 660cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 661cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_mca_connect(uint8_t app_idx, uint8_t mcl_idx, 662cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 663cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 664cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson/* State machine drivers */ 665cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_cch_sm_execute(uint8_t inst_idx, uint8_t mcl_idx, 666cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t event, tBTA_HL_DATA* p_data); 667cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_dch_sm_execute(uint8_t inst_idx, uint8_t mcl_idx, 668cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, uint16_t event, 669cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data); 670cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson/* MCAP callback functions */ 671cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_mcap_ctrl_cback(tMCA_HANDLE handle, tMCA_CL mcl, 672cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t event, tMCA_CTRL* p_data); 673cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 674cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_mcap_data_cback(tMCA_DL mdl, BT_HDR* p_pkt); 675cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 676cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson/* utility functions */ 677cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_set_ctrl_psm_for_dch(uint8_t app_idx, uint8_t mcl_idx, 678cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, uint16_t ctrl_psm); 679cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_sdp_idx_using_ctrl_psm(tBTA_HL_SDP* p_sdp, 680cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t ctrl_psm, 681cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_sdp_idx); 682cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern uint16_t bta_hl_set_user_tx_buf_size(uint16_t max_tx_size); 683cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern uint16_t bta_hl_set_user_rx_buf_size(uint16_t mtu); 684cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern uint8_t bta_hl_set_tx_win_size(uint16_t mtu, uint16_t mps); 685cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern uint16_t bta_hl_set_mps(uint16_t mtu); 686cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_clean_mdl_cb(uint8_t app_idx, uint8_t mcl_idx, 687cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx); 688cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern BT_HDR* bta_hl_get_buf(uint16_t data_size, bool fcs_use); 689cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_service_in_db(uint8_t app_idx, uint8_t mcl_idx, 690cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t service_uuid, 691cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tSDP_DISC_REC** pp_rec); 692cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern uint16_t bta_hl_get_service_uuids(uint8_t sdp_oper, uint8_t app_idx, 693cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mcl_idx, uint8_t mdl_idx); 694cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_echo_cfg_rsp(uint8_t app_idx, uint8_t mcl_idx, 695cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdep_idx, uint8_t cfg, 696cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_cfg_rsp); 697cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_validate_cfg(uint8_t app_idx, uint8_t mcl_idx, 698cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, uint8_t cfg); 699cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_cch_cb_indexes(tBTA_HL_DATA* p_msg, uint8_t* p_app_idx, 700cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mcl_idx); 701cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_dch_cb_indexes(tBTA_HL_DATA* p_msg, uint8_t* p_app_idx, 702cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mcl_idx, uint8_t* p_mdl_idx); 703cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern uint16_t bta_hl_allocate_mdl_id(uint8_t app_idx, uint8_t mcl_idx, 704cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx); 705cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_mdl_idx_using_handle(tBTA_HL_MDL_HANDLE mdl_handle, 706cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_app_idx, 707cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mcl_idx, 708cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdl_idx); 709cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_mdl_idx(uint8_t app_idx, uint8_t mcl_idx, 710cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t mdl_id, uint8_t* p_mdl_idx); 711cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_an_active_mdl_idx(uint8_t app_idx, uint8_t mcl_idx, 712cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdl_idx); 713cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_dch_setup_mdl_idx(uint8_t app_idx, uint8_t mcl_idx, 714cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdl_idx); 715cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_an_in_use_mcl_idx(uint8_t app_idx, uint8_t* p_mcl_idx); 716cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_an_in_use_app_idx(uint8_t* p_app_idx); 717cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_app_idx(uint8_t app_id, uint8_t* p_app_idx); 718cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_app_idx_using_handle(tBTA_HL_APP_HANDLE app_handle, 719cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_app_idx); 720cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_mcl_idx_using_handle(tBTA_HL_MCL_HANDLE mcl_handle, 721cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_app_idx, 722cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mcl_idx); 7239e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern bool bta_hl_find_mcl_idx(uint8_t app_idx, const RawAddress& p_bd_addr, 724cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mcl_idx); 725cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_is_the_first_reliable_existed(uint8_t app_idx, 726cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mcl_idx); 727cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_non_active_mdl_cfg(uint8_t app_idx, 728cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t start_mdl_cfg_idx, 729cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdl_cfg_idx); 730cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_avail_mdl_cfg_idx(uint8_t app_idx, uint8_t mcl_idx, 731cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdl_cfg_idx); 732cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_mdl_cfg_idx(uint8_t app_idx, uint8_t mcl_idx, 733cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_ID mdl_id, 734cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdl_cfg_idx); 735cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_get_cur_time(uint8_t app_idx, uint8_t* p_cur_time); 736cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_sort_cfg_time_idx(uint8_t app_idx, uint8_t* a, uint8_t n); 737cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_compact_mdl_cfg_time(uint8_t app_idx, uint8_t mdep_id); 73850cf52cf6b097ecb57922d69c22d559097a205b0Jakub Pawlowskiextern bool bta_hl_is_mdl_exsit_in_mcl(uint8_t app_idx, 7399e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski const RawAddress& bd_addr, 740cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_ID mdl_id); 7419e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern bool bta_hl_delete_mdl_cfg(uint8_t app_idx, const RawAddress& bd_addr, 742cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_ID mdl_id); 743cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_is_mdl_value_valid(tBTA_HL_MDL_ID mdl_id); 744cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_mdep_cfg_idx(uint8_t app_idx, 745cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ID local_mdep_id, 746cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdep_cfg_idx); 747cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_find_rxtx_apdu_size(uint8_t app_idx, uint8_t mdep_cfg_idx, 748cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t* p_rx_apu_size, 749cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint16_t* p_tx_apu_size); 750cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_validate_peer_cfg(uint8_t app_idx, uint8_t mcl_idx, 751cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, 752cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ID peer_mdep_id, 753cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ROLE peer_mdep_role, 754cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t sdp_idx); 755cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tBTA_HL_STATUS bta_hl_chk_local_cfg(uint8_t app_idx, uint8_t mcl_idx, 756cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdep_cfg_idx, 757cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_CFG local_cfg); 758cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 759cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_validate_reconnect_params( 760cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t app_idx, uint8_t mcl_idx, tBTA_HL_API_DCH_RECONNECT* p_reconnect, 761cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdep_cfg_idx, uint8_t* p_mdl_cfg_idx); 762cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_avail_mcl_idx(uint8_t app_idx, uint8_t* p_mcl_idx); 763cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_avail_mdl_idx(uint8_t app_idx, uint8_t mcl_idx, 764cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t* p_mdl_idx); 765cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_is_a_duplicate_id(uint8_t app_id); 766cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_find_avail_app_idx(uint8_t* p_idx); 767cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tBTA_HL_STATUS bta_hl_app_update(uint8_t app_id, bool is_register); 768cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern tBTA_HL_STATUS bta_hl_app_registration(uint8_t app_idx); 769cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_discard_data(uint16_t event, tBTA_HL_DATA* p_data); 770cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_save_mdl_cfg(uint8_t app_idx, uint8_t mcl_idx, 771cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx); 772cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_set_dch_chan_cfg(uint8_t app_idx, uint8_t mcl_idx, 773cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx, tBTA_HL_DATA* p_data); 774cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_get_l2cap_cfg(tBTA_HL_MDL_HANDLE mdl_hnd, 775cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_L2CAP_CFG_INFO* p_cfg); 776cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern bool bta_hl_validate_chan_cfg(uint8_t app_idx, uint8_t mcl_idx, 777cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson uint8_t mdl_idx); 7789e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern bool bta_hl_is_cong_on(uint8_t app_id, const RawAddress& bd_addr, 779cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_ID mdl_id); 780cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_check_cch_close(uint8_t app_idx, uint8_t mcl_idx, 781cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DATA* p_data, bool check_dch_setup); 782cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_clean_app(uint8_t app_idx); 783cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_check_deregistration(uint8_t app_idx, tBTA_HL_DATA* p_data); 784cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_check_disable(tBTA_HL_DATA* p_data); 785cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_abort_ind(tBTA_HL* p_evt_data, 786cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 787cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle); 788cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_abort_cfm(tBTA_HL* p_evt_data, 789cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 790cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 791cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status); 792cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_dch_close_cfm(tBTA_HL* p_evt_data, 793cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 794cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 795cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_HANDLE mdl_handle, 796cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status); 797cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_dch_close_ind(tBTA_HL* p_evt_data, 798cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 799cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 800cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_HANDLE mdl_handle, 801cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool intentional); 802cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_send_data_cfm(tBTA_HL* p_evt_data, 803cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 804cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 805cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_HANDLE mdl_handle, 806cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status); 807cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_rcv_data_ind(tBTA_HL* p_evt_data, 808cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 809cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 810cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_HANDLE mdl_handle); 811cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_cch_open_cfm(tBTA_HL* p_evt_data, uint8_t app_id, 812cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 813cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 8149e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski const RawAddress& bd_addr, 81550cf52cf6b097ecb57922d69c22d559097a205b0Jakub Pawlowski tBTA_HL_STATUS status); 816cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_cch_open_ind(tBTA_HL* p_evt_data, 817cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 818cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 8199e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski const RawAddress& bd_addr); 820cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_cch_close_cfm(tBTA_HL* p_evt_data, 821cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 822cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 823cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status); 824cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_cch_close_ind(tBTA_HL* p_evt_data, 825cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 826cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 827cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson bool intentional); 828cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 829cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_dch_open_cfm( 830cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL* p_evt_data, tBTA_HL_APP_HANDLE app_handle, 831cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, tBTA_HL_MDL_HANDLE mdl_handle, 832cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDEP_ID local_mdep_id, tBTA_HL_MDL_ID mdl_id, 833cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_DCH_MODE dch_mode, bool first_reliable, uint16_t mtu, 834cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status); 835cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson 836cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_delete_mdl_cfm(tBTA_HL* p_evt_data, 8375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle, 8385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle, 839cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MDL_ID mdl_id, 8405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_STATUS status); 841cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_echo_test_cfm(tBTA_HL* p_evt_data, 842cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 843cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_MCL_HANDLE mcl_handle, 844cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status); 845cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern void bta_hl_build_sdp_query_cfm(tBTA_HL* p_evt_data, uint8_t app_id, 846cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_APP_HANDLE app_handle, 8479e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski const RawAddress& bd_addr, 84850cf52cf6b097ecb57922d69c22d559097a205b0Jakub Pawlowski tBTA_HL_SDP* p_sdp, 849cd1fd07f1306e08fe048682dd5918987e579f937Myles Watson tBTA_HL_STATUS status); 8505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 8515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BTA_HL_DEBUG == TRUE) 852cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern const char* bta_hl_status_code(tBTA_HL_STATUS status); 853cd1fd07f1306e08fe048682dd5918987e579f937Myles Watsonextern const char* bta_hl_evt_code(tBTA_HL_INT_EVT evt_code); 8545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 855ad1e23d50e431fb82ff1b8d3ce02f64ca0c5a940Jack He 8565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif /* BTA_MSE_INT_H */ 857