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 24258c2538e3b62a8cdb403f2730c45d721e5292b4Pavlin Radoslavov#include "bt_common.h" 256bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#include "bta_hl_api.h" 2678bcff79e1b1f0efce436b33bdd6da88745bfc8aPavlin Radoslavov#include "osi/include/alarm.h" 2749a86709488e5cfd5e23759da18bf9613e15b04dMarie Janssen 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 296bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson * Constants & Macros 30ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 326bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_NONE 0x0000 336bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#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 356bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_BODY_THERMOMETER 0x1008 366bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_BODY_WEIGHT_SCALE 0x100F 376bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_GLUCOSE_METER 0x1011 386bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_STEP_COUNTER 0x1068 396bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_BCA 0x1014 406bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_PEAK_FLOW 0x1015 416bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_CARDIO 0x1029 426bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_ACTIVITY_HUB 0x1047 436bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_DATA_TYPE_AMM 0x1048 446bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 456bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_CCH_NUM_FILTER_ELEMS 3 466bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_APPLICATION_NAME_LEN 512 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 496bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson * Type definitions and return values 50ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 516bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 526bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef enum { 536bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_SOC_STATE_IDLE, 546bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_SOC_STATE_W4_ADD, 556bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_SOC_STATE_W4_CONN, 566bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_SOC_STATE_W4_READ, 576bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_SOC_STATE_W4_REL 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_soc_state_t; 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 606bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef enum { 616bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_STATE_DISABLED, 626bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_STATE_DISABLING, 636bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_STATE_ENABLED, 646bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_STATE_ENABLING, 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_state_t; 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 676bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef enum { 686bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CCH_OP_NONE, 696bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CCH_OP_MDEP_FILTERING, 706bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CCH_OP_MATCHED_CTRL_PSM, 716bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CCH_OP_DCH_OPEN, 726bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CCH_OP_DCH_RECONNECT, 736bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CCH_OP_DCH_ECHO_TEST 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_cch_op_t; 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 766bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef enum { 776bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_PEND_DCH_OP_NONE, 786bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_PEND_DCH_OP_DELETE_MDL, 796bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_PEND_DCH_OP_OPEN, 806bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_PEND_DCH_OP_RECONNECT 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_pend_dch_op_t; 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 836bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef enum { BTIF_HL_DCH_OP_NONE, BTIF_HL_DCH_OP_DISC } btif_hl_dch_op_t; 846bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 856bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef enum { 866bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CHAN_CB_STATE_NONE, 876bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CHAN_CB_STATE_CONNECTING_PENDING, 886bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CHAN_CB_STATE_CONNECTED_PENDING, 896bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 906bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CHAN_CB_STATE_DISCONNECTING_PENDING, 916bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CHAN_CB_STATE_DISCONNECTED_PENDING, 926bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_CHAN_CB_STATE_DESTROYED_PENDING, 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_chan_cb_state_t; 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 956bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonenum { 966bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_SEND_CONNECTED_CB, 976bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_SEND_DISCONNECTED_CB, 986bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_REG_APP, 996bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_UNREG_APP, 1006bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson BTIF_HL_UPDATE_MDL, 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1036bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1046bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t mdep_cfg_idx; 1056bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int data_type; 1066bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDEP_ID peer_mdep_id; 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_extra_mdl_cfg_t; 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1096bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1106bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDL_CFG base; 1116bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_extra_mdl_cfg_t extra; 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_mdl_cfg_t; 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1146bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1156bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool active; 1166bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t app_idx; 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_app_data_t; 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1196bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1206bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int channel_id; 1219e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski RawAddress bd_addr; 1226bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t mdep_cfg_idx; 1236bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int max_s; 1246bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int socket_id[2]; 1256bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t app_idx; 1266bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t mcl_idx; 1276bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t mdl_idx; 1286bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_soc_state_t state; 1296bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson} btif_hl_soc_cb_t; 1306bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 1316bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1326bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t data_type; 1336bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t max_tx_apdu_size; 1346bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t max_rx_apdu_size; 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_data_type_cfg_t; 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1376bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1386bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t data_type; 1396bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDEP_ROLE peer_mdep_role; 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_filter_elem_t; 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1426bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1436bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t num_elems; 1446bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_filter_elem_t elem[BTIF_HL_CCH_NUM_FILTER_ELEMS]; 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_cch_filter_t; 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1476bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1486bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool in_use; 1496bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t mdl_id; 1506bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDL_HANDLE mdl_handle; 1516bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_dch_op_t dch_oper; 1526bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDEP_ID local_mdep_id; 1536bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t local_mdep_cfg_idx; 1546bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_DCH_CFG local_cfg; 1556bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDEP_ID peer_mdep_id; 1566bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t peer_data_type; 1576bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDEP_ROLE peer_mdep_role; 1586bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_DCH_MODE dch_mode; 1596bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_SEC sec_mask; 1606bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool is_the_first_reliable; 1616bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool delete_mdl; 1626bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t mtu; 1636bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tMCA_CHNL_CFG chnl_cfg; 1646bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t tx_size; 1656bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_tx_pkt; 1666bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_rx_pkt; 1676bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool cong; 1686bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_soc_cb_t* p_scb; 1696bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int channel_id; 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_mdl_cb_t; 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1726bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1736bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int channel_id; 1746bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int mdep_cfg_idx; 1756bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool in_use; 1766bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_chan_cb_state_t cb_state; 1776bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_pend_dch_op_t op; 1789e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski RawAddress bd_addr; 1796bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool abort_pending; 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_pending_chan_cb_t; 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1826bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 1836bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_mdl_cb_t mdl[BTA_HL_NUM_MDLS_PER_MCL]; 1846bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool in_use; 1856bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool is_connected; 1866bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t req_ctrl_psm; 1876bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t ctrl_psm; 1886bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t data_psm; 1899e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski RawAddress bd_addr; 1906bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t cch_mtu; 1916bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_SEC sec_mask; 1926bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MCL_HANDLE mcl_handle; 1936bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_pending_chan_cb_t pcb; 1946bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool valid_sdp_idx; 1956bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t sdp_idx; 1966bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_SDP sdp; 1976bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_cch_op_t cch_oper; 1986bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson alarm_t* cch_timer; 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_mcl_cb_t; 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2016bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 2026bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool active; 2036bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t mdl_id; 2046bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t mdep_cfg_idx; 2059e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski RawAddress bd_addr; 2066bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int channel_id; 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_delete_mdl_t; 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2096bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 2106bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_mcl_cb_t mcb[BTA_HL_NUM_MCLS]; /* application Control Blocks */ 2116bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool in_use; /* this CB is in use*/ 2126bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool reg_pending; 2136bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t app_id; 2146bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 2156bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_SUP_FEATURE sup_feature; 2166bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_DCH_CFG channel_type[BTA_HL_NUM_MDEPS]; 2176bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_SDP_INFO_IND sdp_info_ind; 2186bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_cch_filter_t filter; 2196bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 2206bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_mdl_cfg_t mdl_cfg[BTA_HL_NUM_MDL_CFGS]; 2216bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int mdl_cfg_channel_id[BTA_HL_NUM_MDL_CFGS]; 2226bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 2236bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_delete_mdl_t delete_mdl; 2246bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_DEVICE_TYPE dev_type; 2256bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_APP_HANDLE app_handle; 2266bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t sec_mask; /* Security mask for BTM_SetSecurityLevel() */ 2276bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson char srv_name[BTA_SERVICE_NAME_LEN + 2286bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 1]; /* service name to be used in the SDP; null terminated*/ 229f45481678af0694902b5200ba69ced4cb61d73f0Myles Watson char srv_desp[BTA_SERVICE_DESP_LEN + 1]; /* service description to be used in 230f45481678af0694902b5200ba69ced4cb61d73f0Myles Watson the SDP; null terminated */ 2316bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson char provider_name[BTA_PROVIDER_NAME_LEN + 1]; /* provide name to be used in 2326bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson the SDP; null terminated */ 2336bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson char 2346bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson application_name[BTIF_HL_APPLICATION_NAME_LEN + 1]; /* applicaiton name */ 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_app_cb_t; 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2376bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 2386bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson bool in_use; 2396bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t app_idx; 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_pending_reg_cb_t; 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BTIF-HL control block */ 2436bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 2446bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_app_cb_t acb[BTA_HL_NUM_APPS]; /* HL Control Blocks */ 2456bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_CTRL_CBACK* p_ctrl_cback; /* pointer to control callback function */ 2466bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t next_app_id; 2476bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint16_t next_channel_id; 2486bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_state_t state; 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_cb_t; 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 251b7f64bc45dec7f7fec74ceb04874f322b9434bbfMarie Janssentypedef uint8_t btif_hl_evt_t; 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2536bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { 2546bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int app_id; 2559e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowski RawAddress bd_addr; 2566bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int mdep_cfg_index; 2576bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int channel_id; 2586bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_chan_cb_state_t cb_state; 2596bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson int fd; 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_send_chan_state_cb_t; 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2626bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef struct { uint8_t app_idx; } btif_hl_reg_t; 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef btif_hl_reg_t btif_hl_unreg_t; 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef btif_hl_reg_t btif_hl_update_mdl_t; 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2676bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsontypedef union { 2686bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_send_chan_state_cb_t chan_cb; 2696bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_reg_t reg; 2706bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_unreg_t unreg; 2716bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson btif_hl_update_mdl_t update_mdl; 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} btif_hl_evt_cb_t; 2735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************* 2756bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson * Functions 276ee96a3c60fca590d38025925c072d264e06493c4Myles Watson ******************************************************************************/ 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_CB_PTR() &(btif_hl_cb) 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTIF_HL_GET_APP_CB_PTR(app_idx) &(btif_hl_cb.acb[(app_idx)]) 2806bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_GET_MCL_CB_PTR(app_idx, mcl_idx) \ 2816bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson &(btif_hl_cb.acb[(app_idx)].mcb[(mcl_idx)]) 2826bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_GET_MDL_CB_PTR(app_idx, mcl_idx, mdl_idx) \ 2836bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson &(btif_hl_cb.acb[(app_idx)].mcb[(mcl_idx)].mdl[mdl_idx]) 2846bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_GET_PCB_PTR(app_idx, mcl_idx) \ 2856bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson &(btif_hl_cb.acb[app_idx].mcb[mcl_idx].pcb) 2866bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_GET_MDL_CFG_PTR(app_idx, item_idx) \ 2876bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson &(btif_hl_cb.acb[(app_idx)].mdl_cfg[(item_idx)]) 2886bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson#define BTIF_HL_GET_MDL_CFG_CHANNEL_ID_PTR(app_idx, item_idx) \ 2896bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson &(btif_hl_cb.acb[(app_idx)].mdl_cfg_channel_id[(item_idx)]) 2906bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 2916bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonextern btif_hl_cb_t btif_hl_cb; 2926bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonextern btif_hl_cb_t* p_btif_hl_cb; 2936bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson 2949e030fde05352ec4385d7baf6cc2af89e95e039cJakub Pawlowskiextern bool btif_hl_find_mcl_idx(uint8_t app_idx, const RawAddress& p_bd_addr, 2956bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_mcl_idx); 2966bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonextern bool btif_hl_find_app_idx(uint8_t app_id, uint8_t* p_app_idx); 2976bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonextern bool btif_hl_find_avail_mcl_idx(uint8_t app_idx, uint8_t* p_mcl_idx); 298b7f64bc45dec7f7fec74ceb04874f322b9434bbfMarie Janssenextern bool btif_hl_find_avail_mdl_idx(uint8_t app_idx, uint8_t mcl_idx, 2996bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_mdl_idx); 3006bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonextern bool btif_hl_find_mcl_idx_using_handle(tBTA_HL_MCL_HANDLE mcl_handle, 3016bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_app_idx, 3026bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_mcl_idx); 3036bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonextern bool btif_hl_save_mdl_cfg(uint8_t app_id, uint8_t item_idx, 3046bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDL_CFG* p_mdl_cfg); 3056bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonextern bool btif_hl_delete_mdl_cfg(uint8_t app_id, uint8_t item_idx); 306b7f64bc45dec7f7fec74ceb04874f322b9434bbfMarie Janssenextern bool btif_hl_find_mdl_idx_using_handle(tBTA_HL_MDL_HANDLE mdl_handle, 3076bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_app_idx, 3086bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_mcl_idx, 3096bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson uint8_t* p_mdl_idx); 310b7f64bc45dec7f7fec74ceb04874f322b9434bbfMarie Janssenextern void btif_hl_abort_pending_chan_setup(uint8_t app_idx, uint8_t mcl_idx); 311b7f64bc45dec7f7fec74ceb04874f322b9434bbfMarie Janssenextern bool btif_hl_proc_pending_op(uint8_t app_idx, uint8_t mcl_idx); 3126bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watsonextern bool btif_hl_load_mdl_config(uint8_t app_id, uint8_t buffer_size, 3136bd442f543972b072ef2cbbcf2f7c91202de1045Myles Watson tBTA_HL_MDL_CFG* p_mdl_buf); 314713993d1784ab7c23aee1fa3cf1ab8676cc0aa69Jakub Pawlowski 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 316