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