15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2009-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#ifndef BTIF_HL_H 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_H 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 228f247258317bfd015806badce0cc41df901fa6e7Marie Janssen#include <hardware/bluetooth.h> 238f247258317bfd015806badce0cc41df901fa6e7Marie Janssen 2449a86709488e5cfd5e23759da18bf9613e15b04dMarie Janssen#include "bta_hl_api.h" 25258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h" 2678bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov#include "osi/include/alarm.h" 2749a86709488e5cfd5e23759da18bf9613e15b04dMarie Janssen 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Constants & Macros 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************************************************/ 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_DATA_TYPE_NONE 0x0000 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_DATA_TYPE_PULSE_OXIMETER 0x1004 /* from BT assigned number */ 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_DATA_TYPE_BLOOD_PRESSURE_MON 0x1007 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_DATA_TYPE_BODY_THERMOMETER 0x1008 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_DATA_TYPE_BODY_WEIGHT_SCALE 0x100F 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_DATA_TYPE_GLUCOSE_METER 0x1011 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_DATA_TYPE_STEP_COUNTER 0x1068 39c8a9f438cd994a7e69aa7fa957e0b9139bfdb912Priti Aghera#define BTIF_HL_DATA_TYPE_BCA 0x1014 40c8a9f438cd994a7e69aa7fa957e0b9139bfdb912Priti Aghera#define BTIF_HL_DATA_TYPE_PEAK_FLOW 0x1015 41c8a9f438cd994a7e69aa7fa957e0b9139bfdb912Priti Aghera#define BTIF_HL_DATA_TYPE_CARDIO 0x1029 42c8a9f438cd994a7e69aa7fa957e0b9139bfdb912Priti Aghera#define BTIF_HL_DATA_TYPE_ACTIVITY_HUB 0x1047 43c8a9f438cd994a7e69aa7fa957e0b9139bfdb912Priti Aghera#define BTIF_HL_DATA_TYPE_AMM 0x1048 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_CCH_NUM_FILTER_ELEMS 3 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_APPLICATION_NAME_LEN 512 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Type definitions and return values 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************************************************/ 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef enum 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_SOC_STATE_IDLE, 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_SOC_STATE_W4_ADD, 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_SOC_STATE_W4_CONN, 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_SOC_STATE_W4_READ, 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_SOC_STATE_W4_REL 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_soc_state_t; 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef enum 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_STATE_DISABLED, 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_STATE_DISABLING, 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_STATE_ENABLED, 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_STATE_ENABLING, 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_state_t; 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef enum 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CCH_OP_NONE, 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CCH_OP_MDEP_FILTERING, 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CCH_OP_MATCHED_CTRL_PSM, 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CCH_OP_DCH_OPEN, 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CCH_OP_DCH_RECONNECT, 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CCH_OP_DCH_ECHO_TEST 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_cch_op_t; 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef enum 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_PEND_DCH_OP_NONE, 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_PEND_DCH_OP_DELETE_MDL, 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_PEND_DCH_OP_OPEN, 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_PEND_DCH_OP_RECONNECT 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_pend_dch_op_t; 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef enum 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_DCH_OP_NONE, 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_DCH_OP_DISC 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_dch_op_t; 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef enum 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CHAN_CB_STATE_NONE, 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CHAN_CB_STATE_CONNECTING_PENDING, 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CHAN_CB_STATE_CONNECTED_PENDING, 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CHAN_CB_STATE_DISCONNECTING_PENDING, 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CHAN_CB_STATE_DISCONNECTED_PENDING, 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_CHAN_CB_STATE_DESTROYED_PENDING, 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_chan_cb_state_t; 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_SEND_CONNECTED_CB, 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_SEND_DISCONNECTED_CB, 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_REG_APP, 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_UNREG_APP, 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTIF_HL_UPDATE_MDL, 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdep_cfg_idx; 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int data_type; 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_ID peer_mdep_id; 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_extra_mdl_cfg_t; 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG base; 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_extra_mdl_cfg_t extra; 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_mdl_cfg_t; 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN active; 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 app_idx; 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_app_data_t; 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int channel_id; 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdep_cfg_idx; 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int max_s; 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int socket_id[2]; 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 app_idx; 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mcl_idx; 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdl_idx; 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_soc_state_t state; 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}btif_hl_soc_cb_t; 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 data_type; 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 max_tx_apdu_size; 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 max_rx_apdu_size; 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_data_type_cfg_t; 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 data_type; 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_ROLE peer_mdep_role; 1565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_filter_elem_t; 1575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 num_elems; 1615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_filter_elem_t elem[BTIF_HL_CCH_NUM_FILTER_ELEMS]; 1625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_cch_filter_t; 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN in_use; 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 mdl_id; 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_HANDLE mdl_handle; 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_dch_op_t dch_oper; 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_ID local_mdep_id; 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 local_mdep_cfg_idx; 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_DCH_CFG local_cfg; 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_ID peer_mdep_id; 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 peer_data_type; 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDEP_ROLE peer_mdep_role; 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_DCH_MODE dch_mode; 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_SEC sec_mask; 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_the_first_reliable; 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN delete_mdl; 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 mtu; 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tMCA_CHNL_CFG chnl_cfg; 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 tx_size; 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_tx_pkt; 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_rx_pkt; 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN cong; 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_soc_cb_t *p_scb; 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int channel_id; 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_mdl_cb_t; 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int channel_id; 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int mdep_cfg_idx; 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN in_use; 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_chan_cb_state_t cb_state; 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_pend_dch_op_t op; 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN abort_pending; 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_pending_chan_cb_t; 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_mdl_cb_t mdl[BTA_HL_NUM_MDLS_PER_MCL]; 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN in_use; 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN is_connected; 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 req_ctrl_psm; 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 ctrl_psm; 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 data_psm; 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 cch_mtu; 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_SEC sec_mask; 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MCL_HANDLE mcl_handle; 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_pending_chan_cb_t pcb; 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN valid_sdp_idx; 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sdp_idx; 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SDP sdp; 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_cch_op_t cch_oper; 21878bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov alarm_t *cch_timer; 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_mcl_cb_t; 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN active; 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 mdl_id; 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 mdep_cfg_idx; 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int channel_id; 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_delete_mdl_t; 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_mcl_cb_t mcb[BTA_HL_NUM_MCLS]; /* application Control Blocks */ 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN in_use; /* this CB is in use*/ 2345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN reg_pending; 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 app_id; 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SUP_FEATURE sup_feature; 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_DCH_CFG channel_type[BTA_HL_NUM_MDEPS]; 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_SDP_INFO_IND sdp_info_ind; 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_cch_filter_t filter; 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_mdl_cfg_t mdl_cfg[BTA_HL_NUM_MDL_CFGS]; 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int mdl_cfg_channel_id[BTA_HL_NUM_MDL_CFGS]; 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_delete_mdl_t delete_mdl; 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_DEVICE_TYPE dev_type; 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_APP_HANDLE app_handle; 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 sec_mask; /* Security mask for BTM_SetSecurityLevel() */ 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char srv_name[BTA_SERVICE_NAME_LEN +1]; /* service name to be used in the SDP; null terminated*/ 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char srv_desp[BTA_SERVICE_DESP_LEN +1]; /* service description to be used in the SDP; null terminated */ 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char provider_name[BTA_PROVIDER_NAME_LEN +1]; /* provide name to be used in the SDP; null terminated */ 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project char application_name[BTIF_HL_APPLICATION_NAME_LEN +1]; /* applicaiton name */ 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_app_cb_t; 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN in_use; 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 app_idx; 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_pending_reg_cb_t; 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BTIF-HL control block */ 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_app_cb_t acb[BTA_HL_NUM_APPS]; /* HL Control Blocks */ 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_CTRL_CBACK *p_ctrl_cback; /* pointer to control callback function */ 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 next_app_id; 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 next_channel_id; 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_state_t state; 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_cb_t; 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 btif_hl_evt_t; 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int app_id; 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int mdep_cfg_index; 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int channel_id; 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_chan_cb_state_t cb_state; 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project int fd; 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_send_chan_state_cb_t; 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 app_idx; 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_reg_t; 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef btif_hl_reg_t btif_hl_unreg_t; 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef btif_hl_reg_t btif_hl_update_mdl_t; 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef union 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_send_chan_state_cb_t chan_cb; 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_reg_t reg; 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_unreg_t unreg; 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project btif_hl_update_mdl_t update_mdl; 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_evt_cb_t; 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Functions 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project********************************************************************************/ 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_CB_PTR() &(btif_hl_cb) 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_APP_CB_PTR(app_idx) &(btif_hl_cb.acb[(app_idx)]) 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_MCL_CB_PTR(app_idx, mcl_idx) &(btif_hl_cb.acb[(app_idx)].mcb[(mcl_idx)]) 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx) &(btif_hl_cb.acb[(app_idx)].mcb[(mcl_idx)].mdl[mdl_idx]) 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_PCB_PTR(app_idx, mcl_idx) &(btif_hl_cb.acb[app_idx].mcb[mcl_idx].pcb) 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_MDL_CFG_PTR(app_idx, item_idx) &(btif_hl_cb.acb[(app_idx)].mdl_cfg[(item_idx)]) 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_MDL_CFG_CHANNEL_ID_PTR(app_idx, item_idx) &(btif_hl_cb.acb[(app_idx)].mdl_cfg_channel_id[(item_idx)]) 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern btif_hl_cb_t btif_hl_cb; 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern btif_hl_cb_t *p_btif_hl_cb; 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_find_mcl_idx(UINT8 app_idx, BD_ADDR p_bd_addr, UINT8 *p_mcl_idx); 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_find_app_idx(UINT8 app_id, UINT8 *p_app_idx); 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_find_avail_mcl_idx(UINT8 app_idx, UINT8 *p_mcl_idx); 3175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_find_avail_mdl_idx(UINT8 app_idx, UINT8 mcl_idx, 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_idx); 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_find_mcl_idx_using_handle( tBTA_HL_MCL_HANDLE mcl_handle, 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_app_idx, UINT8 *p_mcl_idx); 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_save_mdl_cfg(UINT8 app_id, UINT8 item_idx, tBTA_HL_MDL_CFG *p_mdl_cfg); 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_delete_mdl_cfg(UINT8 app_id, UINT8 item_idx); 3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_find_mdl_idx_using_handle(tBTA_HL_MDL_HANDLE mdl_handle, 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_app_idx,UINT8 *p_mcl_idx, 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_mdl_idx); 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void btif_hl_abort_pending_chan_setup(UINT8 app_idx, UINT8 mcl_idx); 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_proc_pending_op(UINT8 app_idx, UINT8 mcl_idx); 3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN btif_hl_load_mdl_config (UINT8 app_id, UINT8 buffer_size, 3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HL_MDL_CFG *p_mdl_buf ); 3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 331