15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/****************************************************************************** 25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 35738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * Copyright (C) 1999-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 the main Bluetooth Upper Layer definitions. The Broadcom 225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * implementations of L2CAP RFCOMM, SDP and the BTIf run as one GKI task. The 235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * btu_task switches between them. 245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project * 255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/ 265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef BTU_H 285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_H 295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "bt_target.h" 315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#include "gki.h" 325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the BTU mailbox usage 345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_HCI_RCV_MBOX TASK_MBOX_0 /* Messages from HCI */ 365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_BTIF_MBOX TASK_MBOX_1 /* Messages to BTIF */ 375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* callbacks 395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef void (*tBTU_TIMER_CALLBACK)(TIMER_LIST_ENT *p_tle); 415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef void (*tBTU_EVENT_CALLBACK)(BT_HDR *p_hdr); 425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the timer types maintained by BTU 455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BTM_DEV_CTL 1 475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_L2CAP_LINK 2 485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_L2CAP_CHNL 3 495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_L2CAP_HOLD 4 505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_SDP 5 515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BTM_SCO 6 525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BTM_ACL 9 535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BTM_RMT_NAME 10 545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_RFCOMM_MFC 11 555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_RFCOMM_PORT 12 565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_TCS_L2CAP 13 575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_TCS_CALL 14 585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_TCS_WUG 15 595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_AUTO_SYNC 16 605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_CTP_RECON 17 615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_CTP_T100 18 625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_CTP_GUARD 19 635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_CTP_DETACH 20 645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_SPP_CONN_RETRY 21 665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_USER_FUNC 22 675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_FTP_DISC 25 695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_OPP_DISC 26 705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_CTP_TL_DISCVY 28 725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_IPFRAG_TIMER 29 735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HSP2_AT_CMD_TO 30 745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HSP2_REPEAT_RING 31 755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_CTP_GW_INIT 32 775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_CTP_GW_CONN 33 785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_CTP_GW_IDLE 35 795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_ICP_L2CAP 36 815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_ICP_T100 37 825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HSP2_WAIT_OK 38 845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCRP Timers */ 865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRP_NOTIF_REG 39 875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRP_PROTO_RSP 40 885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRP_CR_GRANT 41 895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRP_CR_CHECK 42 905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRP_W4_CLOSE 43 915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCRPM Timers */ 935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRPM_NOTIF_REG 44 945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRPM_NOTIF_KEEP 45 955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRPM_API_RSP 46 965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRPM_W4_OPEN 47 975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HCRPM_W4_CLOSE 48 985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BNEP Timers */ 1005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BNEP 50 1015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* OBX */ 1035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_OBX_CLIENT_TO 51 1045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_OBX_SERVER_TO 52 1055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_OBX_SVR_SESS_TO 53 1065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HSP2_SDP_FAIL_TO 55 1095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HSP2_SDP_RTRY_TO 56 1105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BTU internal */ 1125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* unused 60 */ 1135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_AVDT_CCB_RET 61 1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_AVDT_CCB_RSP 62 1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_AVDT_CCB_IDLE 63 1175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_AVDT_SCB_TC 64 1185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HID_DEV_REPAGE_TO 65 1205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HID_HOST_REPAGE_TO 66 1215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_HSP2_DELAY_CKPD_RCV 67 1235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_SAP_TO 68 1255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BPP Timer */ 1275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BPP_REF_CHNL 72 1285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* LP HC idle Timer */ 1305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_LP_HC_IDLE_TO 74 1315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Patch RAM Timer */ 1335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_PATCHRAM_TO 75 1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* eL2CAP Info Request and other proto cmds timer */ 1365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_L2CAP_FCR_ACK 78 1375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_L2CAP_INFO 79 1385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BTU internal for BR/EDR and AMP HCI command timeout (reserve up to 3 AMP controller) */ 1405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BTU_CMD_CMPL 80 1415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BTU_AMP1_CMD_CMPL 81 1425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BTU_AMP2_CMD_CMPL 82 1435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BTU_AMP3_CMD_CMPL 83 1445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_MCA_CCB_RSP 98 1465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BTU internal timer for BLE activity */ 1485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BLE_INQUIRY 99 1495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BLE_GAP_LIM_DISC 100 1505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_ATT_WAIT_FOR_RSP 101 1515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_SMP_PAIRING_CMD 102 1525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_BLE_RANDOM_ADDR 103 1535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_ATT_WAIT_FOR_APP_RSP 104 1545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_TTYPE_ATT_WAIT_FOR_IND_ACK 105 155ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 15697e75b73a57602b7d9771f28216630ba32fd702aChaojing Sun#define BTU_TTYPE_BLE_GAP_FAST_ADV 106 15797e75b73a57602b7d9771f28216630ba32fd702aChaojing Sun#define BTU_TTYPE_BLE_OBSERVE 107 1588fe58875ce67c6e1099e7ba2339dcd2b979491b0Ganesh Ganapathi Batta 1598fe58875ce67c6e1099e7ba2339dcd2b979491b0Ganesh Ganapathi Batta 16097e75b73a57602b7d9771f28216630ba32fd702aChaojing Sun#define BTU_TTYPE_UCD_TO 108 1618fe58875ce67c6e1099e7ba2339dcd2b979491b0Ganesh Ganapathi Batta 162ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta 1635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the BTU_TASK APPL events 1655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 1665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(NFC_SHARED_TRANSPORT_ENABLED) && (NFC_SHARED_TRANSPORT_ENABLED==TRUE)) 1675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_NFC_AVAILABLE_EVT EVENT_MASK(APPL_EVT_0) /* Notifies BTU task that NFC is available (used for shared NFC+BT transport) */ 1685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* This is the inquiry response information held by BTU, and available 1715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** to applications. 1725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 1735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BD_ADDR remote_bd_addr; 1765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 page_scan_rep_mode; 1775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 page_scan_per_mode; 1785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 page_scan_mode; 1795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project DEV_CLASS dev_class; 1805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 clock_offset; 1815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTU_INQ_INFO; 1825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_MAX_REG_TIMER (2) /* max # timer callbacks which may register */ 1865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_MAX_REG_EVENT (6) /* max # event callbacks which may register */ 1875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_DEFAULT_DATA_SIZE (0x2a0) 1885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (BLE_INCLUDED == TRUE) 1905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_DEFAULT_BLE_DATA_SIZE (27) 1915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 1925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 1935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* structure to hold registered timers */ 1945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 1955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 1965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT *p_tle; /* timer entry */ 1975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTU_TIMER_CALLBACK timer_cb; /* callback triggered when timer expires */ 1985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTU_TIMER_REG; 1995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* structure to hold registered event callbacks */ 2015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 event_range; /* start of event range */ 2045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTU_EVENT_CALLBACK event_cb; /* callback triggered when event is in range */ 2055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTU_EVENT_REG; 2065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define NFC_MAX_LOCAL_CTRLS 0 2085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* the index to BTU command queue array */ 2105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define NFC_CONTROLLER_ID (1) 2115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define BTU_MAX_LOCAL_CTRLS (1 + NFC_MAX_LOCAL_CTRLS) /* only BR/EDR */ 2125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AMP HCI control block */ 2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BUFFER_Q cmd_xmit_q; 2175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BUFFER_Q cmd_cmpl_q; 2185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 cmd_window; 2195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT cmd_cmpl_timer; /* Command complete timer */ 2205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(BTU_CMD_CMPL_TOUT_DOUBLE_CHECK) && BTU_CMD_CMPL_TOUT_DOUBLE_CHECK == TRUE) 2215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN checked_hcisu; 2225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tHCI_CMD_CB; 2245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define structure holding BTU variables 2265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 2275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projecttypedef struct 2285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project{ 2295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTU_TIMER_REG timer_reg[BTU_MAX_REG_TIMER]; 2305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tBTU_EVENT_REG event_reg[BTU_MAX_REG_EVENT]; 2315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_Q quick_timer_queue; /* Timer queue for transport level (100/10 msec)*/ 2335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_Q timer_queue; /* Timer queue for normal BTU task (1 second) */ 2340aee331900424ed23857ee2390fbb03338a60d91Chris Manton TIMER_LIST_Q timer_queue_oneshot; /* Timer queue for oneshot BTU tasks */ 2355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project TIMER_LIST_ENT cmd_cmpl_timer; /* Command complete timer */ 2375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 hcit_acl_data_size; /* Max ACL data size across HCI transport */ 2395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 hcit_acl_pkt_size; /* Max ACL packet size across HCI transport */ 2405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* (this is data size plus 4 bytes overhead) */ 2415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BLE_INCLUDED == TRUE 2435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 hcit_ble_acl_data_size; /* Max BLE ACL data size across HCI transport */ 2445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT16 hcit_ble_acl_pkt_size; /* Max BLE ACL packet size across HCI transport */ 2455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project /* (this is data size plus 4 bytes overhead) */ 2465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project BOOLEAN reset_complete; /* TRUE after first ack from device received */ 2495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project UINT8 trace_level; /* Trace level for HCI layer */ 2505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project tHCI_CMD_CB hci_cmd_cb[BTU_MAX_LOCAL_CTRLS]; /* including BR/EDR */ 2525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tBTU_CB; 2535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 2555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Projectextern "C" { 2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Global BTU data */ 2595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if BTU_DYNAMIC_MEMORY == FALSE 2605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern tBTU_CB btu_cb; 2615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#else 2625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern tBTU_CB *btu_cb_ptr; 2635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define btu_cb (*btu_cb_ptr) 2645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern const BD_ADDR BT_BD_ANY; 2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Functions provided by btu_task.c 2695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project************************************ 2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_start_timer (TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout); 2725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_stop_timer (TIMER_LIST_ENT *p_tle); 2730aee331900424ed23857ee2390fbb03338a60d91Chris MantonBTU_API extern void btu_start_timer_oneshot(TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout); 2740aee331900424ed23857ee2390fbb03338a60d91Chris MantonBTU_API extern void btu_stop_timer_oneshot(TIMER_LIST_ENT *p_tle); 2750aee331900424ed23857ee2390fbb03338a60d91Chris Manton 2765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern UINT32 btu_remaining_time (TIMER_LIST_ENT *p_tle); 2775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_uipc_rx_cback(BT_HDR *p_msg); 2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_hcif_flush_cmd_queue(void); 2815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* 2825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project** Quick Timer 2835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if defined(QUICK_TIMER_TICKS_PER_SEC) && (QUICK_TIMER_TICKS_PER_SEC > 0) 2855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define QUICK_TIMER_TICKS (GKI_SECS_TO_TICKS (1)/QUICK_TIMER_TICKS_PER_SEC) 2865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_start_quick_timer (TIMER_LIST_ENT *p_tle, UINT16 type, UINT32 timeout); 2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_stop_quick_timer (TIMER_LIST_ENT *p_tle); 2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_process_quick_timer_evt (void); 2895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void process_quick_timer_evt (TIMER_LIST_Q *p_tlq); 2905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#if (defined(HCILP_INCLUDED) && HCILP_INCLUDED == TRUE) 2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_check_bt_sleep (void); 2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 2955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 2965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Functions provided by btu_hcif.c 2975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project************************************ 2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 2995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_hcif_process_event (UINT8 controller_id, BT_HDR *p_buf); 3005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_hcif_send_cmd (UINT8 controller_id, BT_HDR *p_msg); 3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_hcif_send_host_rdy_for_data(void); 3025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_hcif_cmd_timeout (UINT8 controller_id); 3035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Functions provided by btu_core.c 3055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project************************************ 3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/ 3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void btu_init_core(void); 3085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern void BTE_Init(void); 3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern UINT16 BTU_AclPktSize(void); 3105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source ProjectBTU_API extern UINT16 BTU_BleAclPktSize(void); 3115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifdef __cplusplus 3135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} 3145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 3155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project 3165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif 317