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