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