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