1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/******************************************************************************
2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Copyright (C) 1999-2012 Broadcom Corporation
4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  you may not use this file except in compliance with the License.
7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  You may obtain a copy of the License at:
8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  See the License for the specific language governing permissions and
15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *  limitations under the License.
16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project *
17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/
18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef BT_TYPES_H
20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_TYPES_H
21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "data_types.h"
23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef _WIN32
25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef BLUESTACK_TESTER
26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    #include "bte_stack_entry.h"
27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* READ WELL !!
31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** This section defines global events. These are events that cross layers.
33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Any event that passes between layers MUST be one of these events. Tasks
34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** can use their own events internally, but a FUNDAMENTAL design issue is
35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** that global events MUST be one of these events defined below.
36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The convention used is the the event name contains the layer that the
38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** event is going to.
39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_MASK                 0xFF00
41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_SUB_EVT_MASK             0x00FF
42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                /* To Bluetooth Upper Layers        */
43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                /************************************/
44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_L2C_EVT       0x0900      /* L2CAP event */
45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCI_EVT       0x1000      /* HCI Event                        */
46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCI_BR_EDR_EVT (0x0000 | BT_EVT_TO_BTU_HCI_EVT)      /* event from BR/EDR controller */
47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCI_AMP1_EVT   (0x0001 | BT_EVT_TO_BTU_HCI_EVT)      /* event from local AMP 1 controller */
48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCI_AMP2_EVT   (0x0002 | BT_EVT_TO_BTU_HCI_EVT)      /* event from local AMP 2 controller */
49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCI_AMP3_EVT   (0x0003 | BT_EVT_TO_BTU_HCI_EVT)      /* event from local AMP 3 controller */
50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCI_ACL       0x1100      /* ACL Data from HCI                */
52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCI_SCO       0x1200      /* SCO Data from HCI                */
53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCIT_ERR      0x1300      /* HCI Transport Error              */
54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_SP_EVT        0x1400      /* Serial Port Event                */
56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_SP_DATA       0x1500      /* Serial Port Data                 */
57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCI_CMD       0x1600      /* HCI command from upper layer     */
59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_L2C_SEG_XMIT  0x1900      /* L2CAP segment(s) transmitted     */
62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_PROXY_INCOMING_MSG   0x1A00      /* BlueStackTester event: incoming message from target */
64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTSIM                0x1B00      /* Insight BTSIM event */
66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTISE                0x1C00      /* Insight Script Engine event */
67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                /* To LM                            */
69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                /************************************/
70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_HCI_CMD        0x2000      /* HCI Command                      */
71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_HCI_ACL        0x2100      /* HCI ACL Data                     */
72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_HCI_SCO        0x2200      /* HCI SCO Data                     */
73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_HCIT_ERR       0x2300      /* HCI Transport Error              */
74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_LC_EVT         0x2400      /* LC event                         */
75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_LC_LMP         0x2500      /* LC Received LMP command frame    */
76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_LC_ACL         0x2600      /* LC Received ACL data             */
77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_LC_SCO         0x2700      /* LC Received SCO data  (not used) */
78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_LC_ACL_TX      0x2800      /* LMP data transmit complete       */
79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_LC_LMPC_TX     0x2900      /* LMP Command transmit complete    */
80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_LOCAL_ACL_LB   0x2a00      /* Data to be locally loopbacked    */
81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_HCI_ACL_ACK    0x2b00      /* HCI ACL Data ack      (not used) */
82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_LM_DIAG           0x2c00      /* LM Diagnostics commands          */
83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTM_CMDS          0x2f00
86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTM_PM_MDCHG_EVT (0x0001 | BT_EVT_TO_BTM_CMDS)
87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_TCS_CMDS          0x3000
89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_OBX_CL_MSG        0x3100
91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_OBX_SR_MSG        0x3200
92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_CTP_CMDS          0x3300
94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Obex Over L2CAP */
96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_OBX_CL_L2C_MSG    0x3400
97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_OBX_SR_L2C_MSG    0x3500
98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* ftp events */
100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_FTP_SRVR_CMDS     0x3600
101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_FTP_CLNT_CMDS     0x3700
102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_SAP           0x3800       /* SIM Access Profile events */
104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* opp events */
106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_OPP_SRVR_CMDS     0x3900
107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_OPP_CLNT_CMDS     0x3a00
108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* gap events */
110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_GAP_MSG           0x3b00
111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* start timer */
113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_START_TIMER       0x3c00
114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* stop timer */
116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_STOP_TIMER        0x3d00
117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* start quick timer */
119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_START_QUICK_TIMER 0x3e00
120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* for NFC                          */
123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                                /************************************/
124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_NFC_NCI           0x4000      /* NCI Command, Notification or Data*/
125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_NFC_NCI_VS        0x4200      /* Vendor specific message */
126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_NFC_MSGS          0x4300      /* messages between NFC and NCI task */
127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_NFCCSIM_NCI       0x4a00      /* events to NFCC simulation (NCI packets) */
129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* HCISU Events */
131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_HCISU                0x5000
133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_HCISU_LP_APP_SLEEPING_EVT     (0x0005 | BT_EVT_HCISU)
135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_HCISU_LP_ALLOW_BT_SLEEP_EVT   (0x0006 | BT_EVT_HCISU)
136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_HCISU_LP_WAKEUP_HOST_EVT      (0x0007 | BT_EVT_HCISU)
137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_HCISU_LP_RCV_H4IBSS_EVT       (0x0008 | BT_EVT_HCISU)
138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_HCISU_H5_RESET_EVT            (0x0009 | BT_EVT_HCISU)
139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_HCISU_START_QUICK_TIMER          (0x000a | BT_EVT_HCISU)
140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_DATA_TO_AMP_1        0x5100
142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_DATA_TO_AMP_15       0x5f00
143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* HSP Events */
145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_HSP2             0x6000
147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HSP2_EVT     (0x0001 | BT_EVT_BTU_HSP2)
149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* BPP Events */
151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BPP_PR_CMDS       0x6100      /* Printer Events */
152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BPP_SND_CMDS      0x6200      /* BPP Sender Events */
153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* BIP Events */
155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BIP_CMDS          0x6300
156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* HCRP Events */
158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_HCRP             0x7000
160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCRP_EVT     (0x0001 | BT_EVT_BTU_HCRP)
162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HCRPM_EVT    (0x0002 | BT_EVT_BTU_HCRP)
163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_HFP              0x8000
166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_TO_BTU_HFP_EVT      (0x0001 | BT_EVT_BTU_HFP)
167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_EVT          0x9000
169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_LOGMSG_EVT  (0x0000 | BT_EVT_BTU_IPC_EVT)
170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_ACL_EVT     (0x0001 | BT_EVT_BTU_IPC_EVT)
171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_BTU_EVT     (0x0002 | BT_EVT_BTU_IPC_EVT)
172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_L2C_EVT     (0x0003 | BT_EVT_BTU_IPC_EVT)
173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_L2C_MSG_EVT (0x0004 | BT_EVT_BTU_IPC_EVT)
174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_BTM_EVT     (0x0005 | BT_EVT_BTU_IPC_EVT)
175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_AVDT_EVT    (0x0006 | BT_EVT_BTU_IPC_EVT)
176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_SLIP_EVT    (0x0007 | BT_EVT_BTU_IPC_EVT)
177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_MGMT_EVT    (0x0008 | BT_EVT_BTU_IPC_EVT)
178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_BTTRC_EVT   (0x0009 | BT_EVT_BTU_IPC_EVT)
179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVT_BTU_IPC_BURST_EVT   (0x000A | BT_EVT_BTU_IPC_EVT)
180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define the header of each buffer used in the Bluetooth stack.
182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16          event;
186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16          len;
187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16          offset;
188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16          layer_specific;
189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} BT_HDR;
190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_HDR_SIZE (sizeof (BT_HDR))
192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_SDP                      0x0001
194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_RFCOMM                   0x0003
195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_TCS                      0x0005
196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_CTP                      0x0007
197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_BNEP                     0x000F
198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_HIDC                     0x0011
199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_HIDI                     0x0013
200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_UPNP                     0x0015
201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_AVCTP                    0x0017
202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_AVDTP                    0x0019
203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_AVCTP_13                 0x001B /* Advanced Control - Browsing */
204e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_UDI_CP                   0x001D /* Unrestricted Digital Information Profile C-Plane  */
205e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_ATT                      0x001F /* Attribute Protocol  */
2065c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define BT_PSM_3DS                      0x0021 /* 3D sync */
207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* These macros extract the HCI opcodes from a buffer
210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define HCI_GET_CMD_HDR_OPCODE(p)    (UINT16)((*((UINT8 *)((p) + 1) + p->offset) + \
212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project                                              (*((UINT8 *)((p) + 1) + p->offset + 1) << 8)))
213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define HCI_GET_CMD_HDR_PARAM_LEN(p) (UINT8)  (*((UINT8 *)((p) + 1) + p->offset + 2))
214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define HCI_GET_EVT_HDR_OPCODE(p)    (UINT8)(*((UINT8 *)((p) + 1) + p->offset))
216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define HCI_GET_EVT_HDR_PARAM_LEN(p) (UINT8)  (*((UINT8 *)((p) + 1) + p->offset + 1))
217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
219e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************************************************
220e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Macros to get and put bytes to and from a stream (Little Endian format).
221e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
222e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT32_TO_STREAM(p, u32) {*(p)++ = (UINT8)(u32); *(p)++ = (UINT8)((u32) >> 8); *(p)++ = (UINT8)((u32) >> 16); *(p)++ = (UINT8)((u32) >> 24);}
223e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT24_TO_STREAM(p, u24) {*(p)++ = (UINT8)(u24); *(p)++ = (UINT8)((u24) >> 8); *(p)++ = (UINT8)((u24) >> 16);}
224e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT16_TO_STREAM(p, u16) {*(p)++ = (UINT8)(u16); *(p)++ = (UINT8)((u16) >> 8);}
225e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT8_TO_STREAM(p, u8)   {*(p)++ = (UINT8)(u8);}
226e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define INT8_TO_STREAM(p, u8)    {*(p)++ = (INT8)(u8);}
227e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define ARRAY32_TO_STREAM(p, a)  {register int ijk; for (ijk = 0; ijk < 32;           ijk++) *(p)++ = (UINT8) a[31 - ijk];}
228e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define ARRAY16_TO_STREAM(p, a)  {register int ijk; for (ijk = 0; ijk < 16;           ijk++) *(p)++ = (UINT8) a[15 - ijk];}
229e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define ARRAY8_TO_STREAM(p, a)   {register int ijk; for (ijk = 0; ijk < 8;            ijk++) *(p)++ = (UINT8) a[7 - ijk];}
230e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BDADDR_TO_STREAM(p, a)   {register int ijk; for (ijk = 0; ijk < BD_ADDR_LEN;  ijk++) *(p)++ = (UINT8) a[BD_ADDR_LEN - 1 - ijk];}
231e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define LAP_TO_STREAM(p, a)      {register int ijk; for (ijk = 0; ijk < LAP_LEN;      ijk++) *(p)++ = (UINT8) a[LAP_LEN - 1 - ijk];}
232e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define DEVCLASS_TO_STREAM(p, a) {register int ijk; for (ijk = 0; ijk < DEV_CLASS_LEN;ijk++) *(p)++ = (UINT8) a[DEV_CLASS_LEN - 1 - ijk];}
233e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define ARRAY_TO_STREAM(p, a, len) {register int ijk; for (ijk = 0; ijk < len;        ijk++) *(p)++ = (UINT8) a[ijk];}
234e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define REVERSE_ARRAY_TO_STREAM(p, a, len)  {register int ijk; for (ijk = 0; ijk < len; ijk++) *(p)++ = (UINT8) a[len - 1 - ijk];}
235e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
236e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_UINT8(u8, p)   {u8 = (UINT8)(*(p)); (p) += 1;}
237e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_UINT16(u16, p) {u16 = ((UINT16)(*(p)) + (((UINT16)(*((p) + 1))) << 8)); (p) += 2;}
238e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_UINT24(u32, p) {u32 = (((UINT32)(*(p))) + ((((UINT32)(*((p) + 1)))) << 8) + ((((UINT32)(*((p) + 2)))) << 16) ); (p) += 3;}
239e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_UINT32(u32, p) {u32 = (((UINT32)(*(p))) + ((((UINT32)(*((p) + 1)))) << 8) + ((((UINT32)(*((p) + 2)))) << 16) + ((((UINT32)(*((p) + 3)))) << 24)); (p) += 4;}
240e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_BDADDR(a, p)   {register int ijk; register UINT8 *pbda = (UINT8 *)a + BD_ADDR_LEN - 1; for (ijk = 0; ijk < BD_ADDR_LEN; ijk++) *pbda-- = *p++;}
241e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_ARRAY32(a, p)  {register int ijk; register UINT8 *_pa = (UINT8 *)a + 31; for (ijk = 0; ijk < 32; ijk++) *_pa-- = *p++;}
242e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_ARRAY16(a, p)  {register int ijk; register UINT8 *_pa = (UINT8 *)a + 15; for (ijk = 0; ijk < 16; ijk++) *_pa-- = *p++;}
243e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_ARRAY8(a, p)   {register int ijk; register UINT8 *_pa = (UINT8 *)a + 7; for (ijk = 0; ijk < 8; ijk++) *_pa-- = *p++;}
244e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_DEVCLASS(a, p) {register int ijk; register UINT8 *_pa = (UINT8 *)a + DEV_CLASS_LEN - 1; for (ijk = 0; ijk < DEV_CLASS_LEN; ijk++) *_pa-- = *p++;}
245e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_LAP(a, p)      {register int ijk; register UINT8 *plap = (UINT8 *)a + LAP_LEN - 1; for (ijk = 0; ijk < LAP_LEN; ijk++) *plap-- = *p++;}
246e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define STREAM_TO_ARRAY(a, p, len) {register int ijk; for (ijk = 0; ijk < len; ijk++) ((UINT8 *) a)[ijk] = *p++;}
247e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define REVERSE_STREAM_TO_ARRAY(a, p, len) {register int ijk; register UINT8 *_pa = (UINT8 *)a + len - 1; for (ijk = 0; ijk < len; ijk++) *_pa-- = *p++;}
248e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
249e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************************************************
250e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Macros to get and put bytes to and from a field (Little Endian format).
251e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** These are the same as to stream, except the pointer is not incremented.
252e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
253e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT32_TO_FIELD(p, u32) {*(UINT8 *)(p) = (UINT8)(u32); *((UINT8 *)(p)+1) = (UINT8)((u32) >> 8); *((UINT8 *)(p)+2) = (UINT8)((u32) >> 16); *((UINT8 *)(p)+3) = (UINT8)((u32) >> 24);}
254e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT24_TO_FIELD(p, u24) {*(UINT8 *)(p) = (UINT8)(u24); *((UINT8 *)(p)+1) = (UINT8)((u24) >> 8); *((UINT8 *)(p)+2) = (UINT8)((u24) >> 16);}
255e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT16_TO_FIELD(p, u16) {*(UINT8 *)(p) = (UINT8)(u16); *((UINT8 *)(p)+1) = (UINT8)((u16) >> 8);}
256e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT8_TO_FIELD(p, u8)   {*(UINT8 *)(p) = (UINT8)(u8);}
257e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
258e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
259e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************************************************
260e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Macros to get and put bytes to and from a stream (Big Endian format)
261e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
262e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT32_TO_BE_STREAM(p, u32) {*(p)++ = (UINT8)((u32) >> 24);  *(p)++ = (UINT8)((u32) >> 16); *(p)++ = (UINT8)((u32) >> 8); *(p)++ = (UINT8)(u32); }
263e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT24_TO_BE_STREAM(p, u24) {*(p)++ = (UINT8)((u24) >> 16); *(p)++ = (UINT8)((u24) >> 8); *(p)++ = (UINT8)(u24);}
264e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT16_TO_BE_STREAM(p, u16) {*(p)++ = (UINT8)((u16) >> 8); *(p)++ = (UINT8)(u16);}
265e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT8_TO_BE_STREAM(p, u8)   {*(p)++ = (UINT8)(u8);}
266e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define ARRAY_TO_BE_STREAM(p, a, len) {register int ijk; for (ijk = 0; ijk < len; ijk++) *(p)++ = (UINT8) a[ijk];}
267e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
268e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BE_STREAM_TO_UINT8(u8, p)   {u8 = (UINT8)(*(p)); (p) += 1;}
269e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BE_STREAM_TO_UINT16(u16, p) {u16 = (UINT16)(((UINT16)(*(p)) << 8) + (UINT16)(*((p) + 1))); (p) += 2;}
270e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BE_STREAM_TO_UINT24(u32, p) {u32 = (((UINT32)(*((p) + 2))) + ((UINT32)(*((p) + 1)) << 8) + ((UINT32)(*(p)) << 16)); (p) += 3;}
271e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BE_STREAM_TO_UINT32(u32, p) {u32 = ((UINT32)(*((p) + 3)) + ((UINT32)(*((p) + 2)) << 8) + ((UINT32)(*((p) + 1)) << 16) + ((UINT32)(*(p)) << 24)); (p) += 4;}
272e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BE_STREAM_TO_ARRAY(p, a, len) {register int ijk; for (ijk = 0; ijk < len; ijk++) ((UINT8 *) a)[ijk] = *p++;}
273e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
274e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
275e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************************************************
276e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Macros to get and put bytes to and from a field (Big Endian format).
277e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** These are the same as to stream, except the pointer is not incremented.
278e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
279e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT32_TO_BE_FIELD(p, u32) {*(UINT8 *)(p) = (UINT8)((u32) >> 24);  *((UINT8 *)(p)+1) = (UINT8)((u32) >> 16); *((UINT8 *)(p)+2) = (UINT8)((u32) >> 8); *((UINT8 *)(p)+3) = (UINT8)(u32); }
280e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT24_TO_BE_FIELD(p, u24) {*(UINT8 *)(p) = (UINT8)((u24) >> 16); *((UINT8 *)(p)+1) = (UINT8)((u24) >> 8); *((UINT8 *)(p)+2) = (UINT8)(u24);}
281e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT16_TO_BE_FIELD(p, u16) {*(UINT8 *)(p) = (UINT8)((u16) >> 8); *((UINT8 *)(p)+1) = (UINT8)(u16);}
282e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UINT8_TO_BE_FIELD(p, u8)   {*(UINT8 *)(p) = (UINT8)(u8);}
283e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
284e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
285e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Common Bluetooth field definitions */
286e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BD_ADDR_LEN     6                   /* Device address length */
287e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 BD_ADDR[BD_ADDR_LEN];         /* Device address */
288e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 *BD_ADDR_PTR;                 /* Pointer to Device Address */
289e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
290e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_KEY_TYPE_GAMP       0
291e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_KEY_TYPE_WIFI       1
292e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_KEY_TYPE_UWB        2
293e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tAMP_KEY_TYPE;
294e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
295e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_OCTET8_LEN    8
296e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 BT_OCTET8[BT_OCTET8_LEN];   /* octet array: size 16 */
297e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
298e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define LINK_KEY_LEN    16
299e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 LINK_KEY[LINK_KEY_LEN];       /* Link Key */
300e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
301e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_LINK_KEY_LEN        32
302e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 AMP_LINK_KEY[AMP_LINK_KEY_LEN];   /* Dedicated AMP and GAMP Link Keys */
303e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
304e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_OCTET16_LEN    16
305e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 BT_OCTET16[BT_OCTET16_LEN];   /* octet array: size 16 */
306e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
307e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define PIN_CODE_LEN    16
308e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 PIN_CODE[PIN_CODE_LEN];       /* Pin Code (upto 128 bits) MSB is 0 */
309e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 *PIN_CODE_PTR;                /* Pointer to Pin Code */
310e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
311e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define DEV_CLASS_LEN   3
312e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 DEV_CLASS[DEV_CLASS_LEN];     /* Device class */
313e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 *DEV_CLASS_PTR;               /* Pointer to Device class */
314e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
315e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define EXT_INQ_RESP_LEN   3
316e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 EXT_INQ_RESP[EXT_INQ_RESP_LEN];/* Extended Inquiry Response */
317e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 *EXT_INQ_RESP_PTR;             /* Pointer to Extended Inquiry Response */
318e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
319e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BD_NAME_LEN     248
320e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 BD_NAME[BD_NAME_LEN + 1];         /* Device name */
321e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 *BD_NAME_PTR;                 /* Pointer to Device name */
322e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
323e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BD_FEATURES_LEN 8
324e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 BD_FEATURES[BD_FEATURES_LEN]; /* LMP features supported by device */
325e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
326e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EVENT_MASK_LEN  8
327e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 BT_EVENT_MASK[BT_EVENT_MASK_LEN];   /* Event Mask */
328e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
329e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define LAP_LEN         3
330e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 LAP[LAP_LEN];                 /* IAC as passed to Inquiry (LAP) */
331e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 INQ_LAP[LAP_LEN];             /* IAC as passed to Inquiry (LAP) */
332e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
333e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define RAND_NUM_LEN    16
334e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 RAND_NUM[RAND_NUM_LEN];
335e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
336e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define ACO_LEN         12
337e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 ACO[ACO_LEN];                 /* Authenticated ciphering offset */
338e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
339e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define COF_LEN         12
340e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 COF[COF_LEN];                 /* ciphering offset number */
341e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
342e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct {
343e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               qos_flags;          /* TBD */
344e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT8               service_type;       /* see below */
345e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32              token_rate;         /* bytes/second */
346e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32              token_bucket_size;  /* bytes */
347e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32              peak_bandwidth;     /* bytes/second */
348e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32              latency;            /* microseconds */
349e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32              delay_variation;    /* microseconds */
350e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} FLOW_SPEC;
351e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
352e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Values for service_type */
353e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define NO_TRAFFIC      0
354e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BEST_EFFORT     1
355e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GUARANTEED      2
356e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
357e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Service class of the CoD */
358e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SERV_CLASS_NETWORKING               (1 << 1)
359e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SERV_CLASS_RENDERING                (1 << 2)
360e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SERV_CLASS_CAPTURING                (1 << 3)
361e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SERV_CLASS_OBJECT_TRANSFER          (1 << 4)
362e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SERV_CLASS_OBJECT_AUDIO             (1 << 5)
363e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SERV_CLASS_OBJECT_TELEPHONY         (1 << 6)
364e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SERV_CLASS_OBJECT_INFORMATION       (1 << 7)
365e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
366e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Second byte */
367e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SERV_CLASS_LIMITED_DISC_MODE        (0x20)
368e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
369e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Field size definitions. Note that byte lengths are rounded up. */
370e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define ACCESS_CODE_BIT_LEN             72
371e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define ACCESS_CODE_BYTE_LEN            9
372e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SHORTENED_ACCESS_CODE_BIT_LEN   68
373e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
374e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 ACCESS_CODE[ACCESS_CODE_BYTE_LEN];
375e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
376e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SYNTH_TX                1           /* want synth code to TRANSMIT at this freq */
377e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SYNTH_RX                2           /* want synth code to RECEIVE at this freq */
378e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
379e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SYNC_REPS 1             /* repeats of sync word transmitted to start of burst */
380e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
381e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Bluetooth CLK27 */
382e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_CLK27            (2 << 26)
383e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
384e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Bluetooth CLK12 is 1.28 sec */
385e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_CLK12_TO_MS(x)    ((x) * 1280)
386e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_MS_TO_CLK12(x)    ((x) / 1280)
387e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_CLK12_TO_SLOTS(x) ((x) << 11)
388e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
389e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Bluetooth CLK is 0.625 msec */
390e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_CLK_TO_MS(x)      (((x) * 5 + 3) / 8)
391e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_MS_TO_CLK(x)      (((x) * 8 + 2) / 5)
392e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
393e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_CLK_TO_MICROSECS(x)  (((x) * 5000 + 3) / 8)
394e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_MICROSECS_TO_CLK(x)  (((x) * 8 + 2499) / 5000)
395e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
396e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Maximum UUID size - 16 bytes, and structure to hold any type of UUID. */
397e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define MAX_UUID_SIZE              16
398e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
399e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
400e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define LEN_UUID_16     2
401e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define LEN_UUID_32     4
402e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define LEN_UUID_128    16
403e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
404e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT16          len;
405e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
406e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    union
407e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    {
408e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        UINT16      uuid16;
409e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        UINT32      uuid32;
410e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project        UINT8       uuid128[MAX_UUID_SIZE];
411e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    } uu;
412e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
413e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tBT_UUID;
414e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
415e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_FLAGS_TYPE                   0x01
416e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_MORE_16BITS_UUID_TYPE        0x02
417e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_COMPLETE_16BITS_UUID_TYPE    0x03
418e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_MORE_32BITS_UUID_TYPE        0x04
419e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_COMPLETE_32BITS_UUID_TYPE    0x05
420e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_MORE_128BITS_UUID_TYPE       0x06
421e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_COMPLETE_128BITS_UUID_TYPE   0x07
422e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_SHORTENED_LOCAL_NAME_TYPE    0x08
423e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_COMPLETE_LOCAL_NAME_TYPE     0x09
424e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_TX_POWER_LEVEL_TYPE          0x0A
425e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_OOB_BD_ADDR_TYPE             0x0C
426e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_OOB_COD_TYPE                 0x0D
427e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_OOB_SSP_HASH_C_TYPE          0x0E
428e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_OOB_SSP_RAND_R_TYPE          0x0F
4295c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define BT_EIR_3D_SYNC_TYPE                 0x3D
430e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_EIR_MANUFACTURER_SPECIFIC_TYPE   0xFF
431e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
432e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_OOB_COD_SIZE            3
433e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_OOB_HASH_C_SIZE         16
434e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_OOB_RAND_R_SIZE         16
435e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
436e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Broadcom proprietary UUIDs and reserved PSMs
437e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
438e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** The lowest 4 bytes byte of the UUID or GUID depends on the feature. Typically,
439e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** the value of those bytes will be the PSM or SCN, but it is up to the features.
440e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
441e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BRCM_PROPRIETARY_UUID_BASE  0xDA, 0x23, 0x41, 0x02, 0xA3, 0xBB, 0xC1, 0x71, 0xBA, 0x09, 0x6f, 0x21
442e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BRCM_PROPRIETARY_GUID_BASE  0xda23, 0x4102, 0xa3, 0xbb, 0xc1, 0x71, 0xba, 0x09, 0x6f, 0x21
443e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
444e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* We will not allocate a PSM in the reserved range to 3rd party apps
445e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
446e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BRCM_RESERVED_PSM_START	    0x5AE1
447e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BRCM_RESERVED_PSM_END	    0x5AFF
448e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
449e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BRCM_UTILITY_SERVICE_PSM    0x5AE1
450e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BRCM_MATCHER_PSM            0x5AE3
451e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
452e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Connection statistics
453e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
454e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
455e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Structure to hold connection stats */
456e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef BT_CONN_STATS_DEFINED
457e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_CONN_STATS_DEFINED
458e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
459e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* These bits are used in the bIsConnected field */
460e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_CONNECTED_USING_BREDR   1
461e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_CONNECTED_USING_AMP     2
462e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
463e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
464e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
465e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32   is_connected;
466e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    INT32    rssi;
467e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32   bytes_sent;
468e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32   bytes_rcvd;
469e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    UINT32   duration;
470e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tBT_CONN_STATS;
471e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
472e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
473e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
474e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* AMP transport selection criteria definitions.
475e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** NOTE: if underlying L2CAP connection uses basic mode than it can use only BR/EDR.
476e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**       For such L2CAP connections AMP connection the criteria provided by application
477e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**       is reset by AMP manager to AMP_USE_AMP_NEVER.
478e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
479e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_AMP_NEVER                      0   /* Connection only via BR/EDR controller, no AMP allowed        */
480e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_AMP_IF_PEER_TRIES_IT           1   /* Allow AMP to be used if the peer tries to use it             */
481e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_AMP_IF_PHY_CONN_EXISTS         2   /* Use AMP if there is already a physical connection (default)  */
482e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_AMP_IF_LC_POWER_ON             3   /* Only try to use AMP if the Local Controller is powered on    */
483e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_AMP_IF_LC_AND_PEER_POWER_ON    4   /* Only try to use AMP if both LC and peer are powered on       */
484e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_AMP_IF_POSSIBLE                5   /* Try to use AMP if at all possible                            */
485e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_AMP_ONLY                       6   /* Only use AMP, never use BR/EDR                               */
486e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_AMP_MAX_DEF            AMP_USE_AMP_ONLY /* Maximum enum defined for AMP Criteria                        */
487e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
488e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define	AMP_AUTOSWITCH_ALLOWED 		           0x80000000  /* flag to indicate that this connection is auto-switch ready */
489e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define AMP_USE_CURRENT_CRITERIA               0xFFFFFFFF  /* Flag if previous criteria was to be still used        */
490e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
491e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT32 tAMP_CRITERIA;
492e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
493e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
494e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************
495e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**                          Low Energy definitions
496e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project**
497e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** Address types
498e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
499e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BLE_ADDR_PUBLIC         0x00
500e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BLE_ADDR_RANDOM         0x01
501e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BLE_ADDR_TYPE_MASK      (BLE_ADDR_RANDOM | BLE_ADDR_PUBLIC)
502e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tBLE_ADDR_TYPE;
503e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
504e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BLE_ADDR_IS_STATIC(x)   ((x[0] & 0xC0) == 0xC0)
505e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
506e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct
507e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{
508e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    tBLE_ADDR_TYPE      type;
509e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project    BD_ADDR             bda;
510e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tBLE_BD_ADDR;
511e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
512e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Device Types
513e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/
514e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_DEVICE_TYPE_BREDR   0x01
515e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_DEVICE_TYPE_BLE     0x02
516e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_DEVICE_TYPE_DUMO    0x03
517e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef UINT8 tBT_DEVICE_TYPE;
518e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*****************************************************************************/
519e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
520e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
521e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define trace levels */
522e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_TRACE_LEVEL_NONE    0          /* No trace messages to be generated    */
523e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_TRACE_LEVEL_ERROR   1          /* Error condition trace messages       */
524e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_TRACE_LEVEL_WARNING 2          /* Warning condition trace messages     */
525e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_TRACE_LEVEL_API     3          /* API traces                           */
526e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_TRACE_LEVEL_EVENT   4          /* Debug messages for events            */
527e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_TRACE_LEVEL_DEBUG   5          /* Full debug messages                  */
528e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
529e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define MAX_TRACE_LEVEL        5
530e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
531e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
532e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define New Trace Type Definition */
533e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* TRACE_CTRL_TYPE                  0x^^000000*/
534e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_CTRL_MASK             0xff000000
535e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_GET_CTRL(x)           ((((UINT32)(x)) & TRACE_CTRL_MASK) >> 24)
536e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
537e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_CTRL_GENERAL          0x00000000
538e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_CTRL_STR_RESOURCE     0x01000000
539e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_CTRL_SEQ_FLOW         0x02000000
540e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_CTRL_MAX_NUM          3
541e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
542e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* LAYER SPECIFIC                   0x00^^0000*/
543e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_MASK            0x00ff0000
544e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_GET_LAYER(x)          ((((UINT32)(x)) & TRACE_LAYER_MASK) >> 16)
545e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
546e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_NONE            0x00000000
547e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_USB             0x00010000
548e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_SERIAL          0x00020000
549e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_SOCKET          0x00030000
550e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_RS232           0x00040000
551e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_TRANS_MAX_NUM   5
552e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_TRANS_ALL       0x007f0000
553e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_LC              0x00050000
554e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_LM              0x00060000
555e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_HCI             0x00070000
556e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_L2CAP           0x00080000
557e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_RFCOMM          0x00090000
558e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_SDP             0x000a0000
559e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_TCS             0x000b0000
560e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_OBEX            0x000c0000
561e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_BTM             0x000d0000
562e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_GAP             0x000e0000
563e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_DUN             0x000f0000
564e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_GOEP            0x00100000
565e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_ICP             0x00110000
566e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_HSP2            0x00120000
567e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_SPP             0x00130000
568e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_CTP             0x00140000
569e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_BPP             0x00150000
570e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_HCRP            0x00160000
571e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_FTP             0x00170000
572e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_OPP             0x00180000
573e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_BTU             0x00190000
574e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_GKI             0x001a0000
575e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_BNEP            0x001b0000
576e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_PAN             0x001c0000
577e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_HFP             0x001d0000
578e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_HID             0x001e0000
579e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_BIP             0x001f0000
580e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_AVP             0x00200000
581e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_A2D             0x00210000
582e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_SAP             0x00220000
583e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_AMP             0x00230000
584e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_MCA             0x00240000
585e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_ATT             0x00250000
586e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_SMP             0x00260000
587e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_NFC             0x00270000
5885c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define TRACE_LAYER_NCI             0x00280000 /*it's overwritten in nfc_types.h*/
589e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_LLCP            0x00290000
590e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_NDEF            0x002a0000
591e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_RW              0x002b0000
592e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_CE              0x002c0000
593e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_P2P             0x002d0000
594e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_SNEP            0x002e0000
595e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_CHO             0x002f0000
596e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LAYER_NFA             0x00300000
5975c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define TRACE_LAYER_HAL             0x00310000 /*it's overwritten in nfc_types.h*/
5985c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define TRACE_LAYER_MAX_NUM         0x0032
599e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
600e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
601e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* TRACE_ORIGINATOR                 0x0000^^00*/
602e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_MASK              0x0000ff00
603e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_GET_ORG(x)            ((((UINT32)(x)) & TRACE_ORG_MASK) >> 8)
604e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
605e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_STACK             0x00000000
606e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_HCI_TRANS         0x00000100
607e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_PROTO_DISP        0x00000200
608e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_RPC               0x00000300
609e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_GKI               0x00000400
610e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_APPL              0x00000500
611e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_SCR_WRAPPER       0x00000600
612e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_SCR_ENGINE        0x00000700
613e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_USER_SCR          0x00000800
614e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_TESTER            0x00000900
615e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_MAX_NUM           10          /* 32-bit mask; must be < 32 */
616e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_LITE_ORG_MAX_NUM		6
617e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_ALL               0x03ff
618e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_RPC_TRANS         0x04
619e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
620e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_REG               0x00000909
621e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_ORG_REG_SUCCESS       0x0000090a
622e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
623e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* TRACE_TYPE                       0x000000^^*/
624e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_MASK             0x000000ff
625e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_GET_TYPE(x)           (((UINT32)(x)) & TRACE_TYPE_MASK)
626e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
627e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_ERROR            0x00000000
628e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_WARNING          0x00000001
629e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_API              0x00000002
630e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_EVENT            0x00000003
631e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_DEBUG            0x00000004
632e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_STACK_ONLY_MAX   TRACE_TYPE_DEBUG
633e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_TX               0x00000005
634e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_RX               0x00000006
635e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_DEBUG_ASSERT     0x00000007
636e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_GENERIC          0x00000008
637e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_REG              0x00000009
638e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_REG_SUCCESS      0x0000000a
639e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_CMD_TX           0x0000000b
640e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_EVT_TX           0x0000000c
641e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_ACL_TX           0x0000000d
642e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_CMD_RX           0x0000000e
643e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_EVT_RX           0x0000000f
644e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_ACL_RX           0x00000010
645e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_TARGET_TRACE     0x00000011
646e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_SCO_TX           0x00000012
647e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_SCO_RX           0x00000013
648e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
649e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
650e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_MAX_NUM          20
651e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TRACE_TYPE_ALL              0xffff
652e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
653e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define color for script type */
654e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_COLOR_DEFAULT       0
655e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_COLOR_TYPE_COMMENT  1
656e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_COLOR_TYPE_COMMAND  2
657e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_COLOR_TYPE_EVENT    3
658e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_COLOR_TYPE_SELECT   4
659e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
660e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define protocol trace flag values */
661e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_HCI_SUMMARY 0x00000001
662e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_HCI_DATA    0x00000002
663e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_L2CAP       0x00000004
664e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_RFCOMM      0x00000008
665e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_SDP         0x00000010
666e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_TCS         0x00000020
667e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_OBEX        0x00000040
668e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_OAPP        0x00000080 /* OBEX Application Profile */
669e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_AMP         0x00000100
670e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_BNEP        0x00000200
671e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_AVP         0x00000400
672e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_MCA         0x00000800
673e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_ATT         0x00001000
674e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_SMP         0x00002000
675e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_NCI         0x00004000
676e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_LLCP        0x00008000
677e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_NDEF        0x00010000
678e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_RW          0x00020000
679e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_CE          0x00040000
680e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_SNEP        0x00080000
681e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_CHO         0x00100000
682e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_ALL         0x001fffff
683e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define SCR_PROTO_TRACE_HCI_LOGGING_VSE 0x0800 /* Brcm vs event for logmsg and protocol traces */
684e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
685e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define MAX_SCRIPT_TYPE             5
686e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
687e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TCS_PSM_INTERCOM        5
688e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define TCS_PSM_CORDLESS        7
689e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define BT_PSM_BNEP             0x000F
690e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define PSMs HID uses */
691e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define HID_PSM_CONTROL         0x0011
692e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define HID_PSM_INTERRUPT       0x0013
693e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
694e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if defined(UCD_HID_INCLUDED) && (UCD_HID_INCLUDED == TRUE)
6955c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define UCD_PSM_MIN     0x8001
696e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define UCD_PSM_MAX     0x8003
6975c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define UCD_PSM_HID_CTRL 0x8001
6985c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define UCD_PSM_HID_INTR 0x8003
6995c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#endif
7005c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen
7015c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#if defined(HIDH_UCD_INCLUDED) && (HIDH_UCD_INCLUDED == TRUE)
7025c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HID_UCD_PSM_CONTROL 0x8001
7035c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen#define HID_UCD_PSM_INTERRUPT 0x8003
704e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
705e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
706e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Define a function for logging */
707e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef void (BT_LOG_FUNC) (int trace_type, const char *fmt_str, ...);
708e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
709e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif
710e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project
711