bta_hh_int.h revision ac1d544eac1b849dd4105bd69e59ffeca00a43a6
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 2005-2012 Broadcom Corporation 45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * you may not use this file except in compliance with the License. 75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * You may obtain a copy of the License at: 85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * See the License for the specific language governing permissions and 155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * limitations under the License. 165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * This file contains BTA HID Host internal definitions 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTA_HH_INT_H 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HH_INT_H 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_sys.h" 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bd.h" 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "utl.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bta_hh_api.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 332e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if BTA_HH_LE_INCLUDED == TRUE 342e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#include "bta_gatt_api.h" 352e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 362e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* can be moved to bta_api.h */ 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HH_MAX_RPT_CHARS 8 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 402e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if (BTA_GATT_INCLUDED == FALSE || BLE_INCLUDED == FALSE) 412e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#undef BTA_HH_LE_INCLUDED 422e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_INCLUDED FALSE 432e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state machine events, these events are handled by the state machine */ 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_API_OPEN_EVT = BTA_SYS_EVT_START(BTA_ID_HH), 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_API_CLOSE_EVT, 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_INT_OPEN_EVT, 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_INT_CLOSE_EVT, 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_INT_DATA_EVT, 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_INT_CTRL_DATA, 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_INT_HANDSK_EVT, 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_SDP_CMPL_EVT, 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_API_WRITE_DEV_EVT, 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_API_GET_DSCP_EVT, 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_API_MAINT_DEV_EVT, 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_OPEN_CMPL_EVT, 602e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) 612e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_GATT_CLOSE_EVT, 622e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_GATT_OPEN_EVT, 632e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_START_ENC_EVT, 642e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_ENC_CMPL_EVT, 652e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_GATT_READ_CHAR_CMPL_EVT, 662e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_GATT_WRITE_CHAR_CMPL_EVT, 672e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_GATT_READ_DESCR_CMPL_EVT, 682e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_GATT_WRITE_DESCR_CMPL_EVT, 692e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BTA_HH_API_SCPP_UPDATE_EVT, 707051db3a486aae771d9b5a81c3546790f86ede34Zhihai Xu BTA_HH_GATT_ENC_CMPL_EVT, 712e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* not handled by execute state machine */ 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_API_ENABLE_EVT, 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_API_DISABLE_EVT, 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_DISC_CMPL_EVT 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT16 tBTA_HH_INT_EVT; /* HID host internal events */ 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HH_INVALID_EVT (BTA_HH_DISC_CMPL_EVT + 1) 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* event used to map between BTE event and BTA event */ 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HH_FST_TRANS_CB_EVT BTA_HH_GET_RPT_EVT 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HH_FST_BTE_TRANS_EVT HID_TRANS_GET_REPORT 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* sub event code used for device maintainence API call */ 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HH_ADD_DEV 0 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTA_HH_REMOVE_DEV 1 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* state machine states */ 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectenum 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_NULL_ST, 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_IDLE_ST, 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_W4_CONN_ST, 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BTA_HH_CONN_ST 972e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) 982e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach ,BTA_HH_W4_SEC 992e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 1002e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach ,BTA_HH_INVALID_ST /* Used to check invalid states before executing SM function */ 1012e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}; 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef UINT8 tBTA_HH_STATE; 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* data structure used to send a command/data to HID device */ 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 t_type; 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 param; 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 rpt_id; 1122e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) 1132e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 srvc_id; 1142e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 data; 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_data; 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_HH_CMD_DATA; 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* data type for BTA_HH_API_ENABLE_EVT */ 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sec_mask; 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 service_name[BTA_SERVICE_NAME_LEN+1]; 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_CBACK *p_cback; 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HH_API_ENABLE; 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bd_addr; 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sec_mask; 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_PROTO_MODE mode; 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_HH_API_CONN; 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* internal event data from BTE HID callback */ 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1402e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BD_ADDR addr; 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT32 data; 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR *p_data; 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_HH_CBACK_DATA; 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR bda; 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 attr_mask; 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 sub_event; 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sub_class; 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 app_id; 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_DEV_DSCP_INFO dscp_info; 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project}tBTA_HH_MAINT_DEV; 1555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1562e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if BTA_HH_LE_INCLUDED == TRUE 1572e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachtypedef struct 1582e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach{ 1592e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BT_HDR hdr; 1602e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT16 conn_id; 1612e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_GATT_REASON reason; /* disconnect reason code, not useful when connect event is reported */ 1622e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 1632e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach}tBTA_HH_LE_CLOSE; 1642e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 1652e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachtypedef struct 1662e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach{ 1672e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BT_HDR hdr; 1682e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT16 scan_int; 1692e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT16 scan_win; 1702e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach}tBTA_HH_SCPP_UPDATE; 1712e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* union of all event data types */ 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef union 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BT_HDR hdr; 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_API_ENABLE api_enable; 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_API_CONN api_conn; 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_CMD_DATA api_sndcmd; 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_CBACK_DATA hid_cback; 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_STATUS status; 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_MAINT_DEV api_maintdev; 1822e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if BTA_HH_LE_INCLUDED == TRUE 1832e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_HH_LE_CLOSE le_close; 1842e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_GATTC_OPEN le_open; 1852e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_HH_SCPP_UPDATE le_scpp_update; 1867051db3a486aae771d9b5a81c3546790f86ede34Zhihai Xu tBTA_GATTC_ENC_CMPL_CB le_enc_cmpl; 1872e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HH_DATA; 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1902e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) 1912e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachtypedef struct 1922e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach{ 1932e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 index; 1942e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BOOLEAN in_use; 1952e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 inst_id; /* share service instance ID and report instance ID, as 1962e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach hi 4 for service instance ID, low 4 as charatceristic instance ID */ 1972e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_HH_RPT_TYPE rpt_type; 1982e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT16 uuid; 1992e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT16 prop; 2002e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 rpt_id; 2012e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BOOLEAN client_cfg_exist; 2022e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT16 client_cfg_value; 2032e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach}tBTA_HH_LE_RPT; 2042e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2052e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#ifndef BTA_HH_LE_RPT_MAX 206ac1d544eac1b849dd4105bd69e59ffeca00a43a6Zhihai Xu#define BTA_HH_LE_RPT_MAX 20 2072e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 2082e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2092e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachtypedef struct 2102e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach{ 2112e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BOOLEAN in_use; 2122e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_HH_LE_RPT report[BTA_HH_LE_RPT_MAX]; 2132e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2142e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_PROTO_MODE_BIT 0x01 2152e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_CP_BIT 0x02 2162e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 option_char; /* control point char exisit or not */ 2172e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2182e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BOOLEAN expl_incl_srvc; 2192e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 incl_srvc_inst; /* assuming only one included service : battery service */ 2202e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 cur_expl_char_idx; /* currently discovering service index */ 2212e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2222e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_REMOTE_WAKE 0x01 2232e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_NORMAL_CONN 0x02 2242e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 flag; /* HID Information flag */ 2252e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 *rpt_map; 2262e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT16 ext_rpt_ref; 2272e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_HH_DEV_DESCR descriptor; 2282e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2292e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach}tBTA_HH_LE_HID_SRVC; 2302e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2312e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#ifndef BTA_HH_LE_HID_SRVC_MAX 2322e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_HID_SRVC_MAX 1 2332e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 2342e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2352e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach/* convert a HID handle to the LE CB index */ 2362e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_GET_LE_CB_IDX(x) (((x) >> 4) - 1) 2372e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach/* convert a GATT connection ID to HID device handle, it is the hi 4 bits of a UINT8 */ 2382e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_GET_LE_DEV_HDL(x) (UINT8)(((x) + 1) << 4) 2392e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach/* check to see if th edevice handle is a LE device handle */ 2402e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_IS_LE_DEV_HDL(x) ((x) & 0xf0) 2412e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_IS_LE_DEV_HDL_VALID(x) (((x)>>4) < BTA_HH_LE_MAX_KNOWN) 2422e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 2432e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* device control block */ 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_DEV_DSCP_INFO dscp_info; /* report descriptor and DI information */ 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR addr; /* BD-Addr of the HID device */ 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 attr_mask; /* attribute mask */ 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 w4_evt; /* W4_handshake event name */ 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 index; /* index number referenced to handle index */ 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sub_class; /* Cod sub class */ 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sec_mask; /* security mask */ 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 app_id; /* application ID for this connection */ 2552e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 hid_handle; /* device handle : low 4 bits for regular HID: HID_HOST_MAX_DEVICES can not exceed 15; 2562e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach high 4 bits for LE HID: GATT_MAX_PHY_CHANNEL can not exceed 15 */ 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN vp; /* virtually unplug flag */ 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN in_use; /* control block currently in use */ 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN incoming_conn; /* is incoming connection? */ 2602e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 incoming_hid_handle; /* temporary handle for incoming connection? */ 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN opened; /* TRUE if device successfully opened HID connection */ 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_PROTO_MODE mode; /* protocol mode */ 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_STATE state; /* CB state */ 2642e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2652e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if (BTA_HH_LE_INCLUDED == TRUE) 2662e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_DISC_NONE 0x00 2672e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_DISC_HIDS 0x01 2682e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_DISC_DIS 0x02 2692e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_DISC_SCPS 0x04 2702e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2712e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 disc_active; 2722e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_HH_STATUS status; 2732e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BOOLEAN is_le_device; 2742e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_HH_LE_HID_SRVC hid_srvc[BTA_HH_LE_HID_SRVC_MAX]; 2752e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT16 conn_id; 2762e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BOOLEAN in_bg_conn; 2772e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 total_srvc; 2782e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 clt_cfg_idx; 2792e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 cur_srvc_index; /* currently discovering service index */ 2802e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach BOOLEAN scps_supported; 2812e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2822e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_SCPS_NOTIFY_NONE 0 2832e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_SCPS_NOTIFY_SPT 0x01 2842e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#define BTA_HH_LE_SCPS_NOTIFY_ENB 0x02 2852e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 scps_notify; /* scan refresh supported/notification enabled */ 2862e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 2872e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 2887051db3a486aae771d9b5a81c3546790f86ede34Zhihai Xu BOOLEAN security_pending; 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HH_DEV_CB; 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* key board parsing control block */ 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN mod_key[4]; /* ctrl, shift(upper), Alt, GUI */ 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN num_lock; 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN caps_lock; 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 last_report[BTA_HH_MAX_RPT_CHARS]; 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTA_HH_KB_CB; 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Main Control Block 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*******************************************************************************/ 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_KB_CB kb_cb; /* key board control block, 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project suppose BTA will connect 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project to only one keyboard at 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project the same time */ 309ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta tBTA_HH_DEV_CB kdev[BTA_HH_MAX_DEVICE]; /* device control block */ 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_DEV_CB* p_cur; /* current device control 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project block idx, used in sdp */ 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 cb_index[BTA_HH_MAX_KNOWN]; /* maintain a CB index 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project map to dev handle */ 3142e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#if (defined BTA_HH_LE_INCLUDED && BTA_HH_LE_INCLUDED == TRUE) 3152e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach UINT8 le_cb_index[BTA_HH_MAX_DEVICE]; /* maintain a CB index map to LE dev handle */ 3162e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach tBTA_GATTC_IF gatt_if; 3172e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach#endif 3185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_CBACK *p_cback; /* Application callbacks */ 3195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tSDP_DISCOVERY_DB* p_disc_db; 3205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 trace_level; /* tracing level */ 3215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 cnt_num; /* connected device number */ 3225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN w4_disable; /* w4 disable flag */ 3235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjecttBTA_HH_CB; 3255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_DYNAMIC_MEMORY == FALSE 3275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTA_HH_CB bta_hh_cb; 3285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 3295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTA_HH_CB *bta_hh_cb_ptr; 3305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define bta_hh_cb (*bta_hh_cb_ptr) 3315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 3325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* from bta_hh_cfg.c */ 3345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern tBTA_HH_CFG *p_bta_hh_cfg; 3355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/***************************************************************************** 3375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Function prototypes 3385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*****************************************************************************/ 3395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN bta_hh_hdl_event(BT_HDR *p_msg); 3405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_sm_execute(tBTA_HH_DEV_CB *p_cb, UINT16 event, 3415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTA_HH_DATA *p_data); 3425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* action functions */ 3445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_api_disc_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_open_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_close_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_data_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data); 3485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_ctrl_dat_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA * p_data); 3495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_start_sdp(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_sdp_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_get_dscp_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_handsk_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_maint_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_open_cmpl_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3562e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_open_failure(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* utility functions */ 3595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern UINT8 bta_hh_find_cb(BD_ADDR bda); 3605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_parse_keybd_rpt(tBTA_HH_BOOT_RPT *p_kb_data, 3615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_report, UINT16 report_len); 3625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_parse_mice_rpt(tBTA_HH_BOOT_RPT *p_kb_data, 3635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 *p_report, UINT16 report_len); 3645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern BOOLEAN bta_hh_tod_spt(tBTA_HH_DEV_CB *p_cb,UINT8 sub_class); 3655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_clean_up_kdev(tBTA_HH_DEV_CB *p_cb); 3665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_add_device_to_list(tBTA_HH_DEV_CB *p_cb, UINT8 handle, 3685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 attr_mask, 3695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tHID_DEV_DSCP_INFO *p_dscp_info, 3705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 sub_class, UINT16 max_latency, UINT16 min_tout, UINT8 app_id); 3715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_update_di_info(tBTA_HH_DEV_CB *p_cb, UINT16 vendor_id, UINT16 product_id, 372ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta UINT16 version, UINT8 flag); 373ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern void bta_hh_cleanup_disable(tBTA_HH_STATUS status); 374ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 375ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern UINT8 bta_hh_dev_handle_to_cb_idx(UINT8 dev_handle); 3765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* action functions used outside state machine */ 3785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_api_enable(tBTA_HH_DATA *p_data); 3795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_api_disable(void); 3805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_disc_cmpl(void); 3815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 382ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Battaextern tBTA_HH_STATUS bta_hh_read_ssr_param(BD_ADDR bd_addr, UINT16 *p_max_ssr_lat, UINT16 *p_min_ssr_tout); 3835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3842e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach/* functions for LE HID */ 3852e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_enable(void); 38636b686527892172cb44091d160b7d2806d49fc76Zhihai Xuextern BOOLEAN bta_hh_le_is_hh_gatt_if(tBTA_GATTC_IF client_if); 3872e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_deregister(void); 3882e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern BOOLEAN bta_hh_is_le_device(tBTA_HH_DEV_CB *p_cb, BD_ADDR remote_bda); 3892e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_open_conn(tBTA_HH_DEV_CB *p_cb, BD_ADDR remote_bda); 3902e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_api_disc_act(tBTA_HH_DEV_CB *p_cb); 3912e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_get_dscp_act(tBTA_HH_DEV_CB *p_cb); 3922e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_write_dev_act(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3932e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern UINT8 bta_hh_le_add_device(tBTA_HH_DEV_CB *p_cb, tBTA_HH_MAINT_DEV *p_dev_info); 3942e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_remove_dev_bg_conn(tBTA_HH_DEV_CB *p_cb); 3952e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_open_fail(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3962e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_gatt_open(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3972e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_gatt_close(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 3982e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_start_security(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 3992e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_start_srvc_discovery(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4002e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_w4_le_read_char_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4012e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_read_char_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4022e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_w4_le_read_descr_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4032e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_read_descr_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4042e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_w4_le_write_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4052e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_write_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4062e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_write_char_descr_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4072e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_start_security(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4082e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_security_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4092e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbachextern void bta_hh_le_update_scpp(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_buf); 4107051db3a486aae771d9b5a81c3546790f86ede34Zhihai Xuextern void bta_hh_le_notify_enc_cmpl(tBTA_HH_DEV_CB *p_cb, tBTA_HH_DATA *p_data); 4112e7fa68bfd9723b7ec7b6b0b128d89f31a2e06eeAndre Eisenbach 4125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTA_HH_DEBUG 4135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern void bta_hh_trace_dev_db(void); 4145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 4165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 4175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 418