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