hcidefs.h revision 8e774d1c533dde1b0775aa61933b24eef2213de4
15738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/******************************************************************************
25738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
3a6ce7751d84218c193eb90d390aef23217b1737eWei Wang *  Copyright (C) 1999-2014 Broadcom Corporation
45738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
55738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Licensed under the Apache License, Version 2.0 (the "License");
65738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  you may not use this file except in compliance with the License.
75738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  You may obtain a copy of the License at:
85738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
95738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  http://www.apache.org/licenses/LICENSE-2.0
105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  See the License for the specific language governing permissions and
155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *  limitations under the License.
165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project *
175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project ******************************************************************************/
185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#ifndef HCIDEFS_H
205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCIDEFS_H
215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
22911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PROTO_VERSION 0x01     /* Version for BT spec 1.1          */
23911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PROTO_VERSION_1_2 0x02 /* Version for BT spec 1.2          */
24911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PROTO_VERSION_2_0 0x03 /* Version for BT spec 2.0          */
25911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PROTO_VERSION_2_1 0x04 /* Version for BT spec 2.1 [Lisbon] */
26911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PROTO_VERSION_3_0 0x05 /* Version for BT spec 3.0          */
27911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PROTO_VERSION_4_0 0x06 /* Version for BT spec 4.0          */
28911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PROTO_VERSION_4_1 0x07 /* Version for BT spec 4.1          */
29911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PROTO_VERSION_4_2 0x08 /* Version for BT spec 4.2          */
30879aeec72706fc7bae66277350ae9a49648a73e7Andre Eisenbach
315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
32ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Definitions for HCI groups
335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
34911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GRP_LINK_CONTROL_CMDS (0x01 << 10)       /* 0x0400 */
35911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GRP_LINK_POLICY_CMDS (0x02 << 10)        /* 0x0800 */
36911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GRP_HOST_CONT_BASEBAND_CMDS (0x03 << 10) /* 0x0C00 */
37911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GRP_INFORMATIONAL_PARAMS (0x04 << 10)    /* 0x1000 */
38911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GRP_STATUS_PARAMS (0x05 << 10)           /* 0x1400 */
39911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GRP_TESTING_CMDS (0x06 << 10)            /* 0x1800 */
405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
41911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GRP_VENDOR_SPECIFIC (0x3F << 10) /* 0xFC00 */
425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Group occupies high 6 bits of the HCI command rest is opcode itself */
44911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OGF(p) (uint8_t)((0xFC00 & (p)) >> 10)
45911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OCF(p) (0x3FF & (p))
465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
48ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Definitions for Link Control Commands
495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Following opcode is used only in command complete event for flow control */
51911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_NONE 0x0000
525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Commands of HCI_GRP_LINK_CONTROL_CMDS group */
54911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY (0x0001 | HCI_GRP_LINK_CONTROL_CMDS)
55911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_CANCEL (0x0002 | HCI_GRP_LINK_CONTROL_CMDS)
56911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PERIODIC_INQUIRY_MODE (0x0003 | HCI_GRP_LINK_CONTROL_CMDS)
57911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_PERIODIC_INQUIRY_MODE (0x0004 | HCI_GRP_LINK_CONTROL_CMDS)
58911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_CONNECTION (0x0005 | HCI_GRP_LINK_CONTROL_CMDS)
59911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT (0x0006 | HCI_GRP_LINK_CONTROL_CMDS)
60911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ADD_SCO_CONNECTION (0x0007 | HCI_GRP_LINK_CONTROL_CMDS)
61911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_CONNECTION_CANCEL (0x0008 | HCI_GRP_LINK_CONTROL_CMDS)
62911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_CONNECTION_REQUEST (0x0009 | HCI_GRP_LINK_CONTROL_CMDS)
63911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REJECT_CONNECTION_REQUEST (0x000A | HCI_GRP_LINK_CONTROL_CMDS)
64911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_REPLY (0x000B | HCI_GRP_LINK_CONTROL_CMDS)
65911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_NEG_REPLY (0x000C | HCI_GRP_LINK_CONTROL_CMDS)
66911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_REPLY (0x000D | HCI_GRP_LINK_CONTROL_CMDS)
67911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_NEG_REPLY (0x000E | HCI_GRP_LINK_CONTROL_CMDS)
68911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_PACKET_TYPE (0x000F | HCI_GRP_LINK_CONTROL_CMDS)
69911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTHENTICATION_REQUESTED (0x0011 | HCI_GRP_LINK_CONTROL_CMDS)
70911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONN_ENCRYPTION (0x0013 | HCI_GRP_LINK_CONTROL_CMDS)
71911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_LINK_KEY (0x0015 | HCI_GRP_LINK_CONTROL_CMDS)
72911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MASTER_LINK_KEY (0x0017 | HCI_GRP_LINK_CONTROL_CMDS)
73911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RMT_NAME_REQUEST (0x0019 | HCI_GRP_LINK_CONTROL_CMDS)
74911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RMT_NAME_REQUEST_CANCEL (0x001A | HCI_GRP_LINK_CONTROL_CMDS)
75911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_FEATURES (0x001B | HCI_GRP_LINK_CONTROL_CMDS)
76911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_EXT_FEATURES (0x001C | HCI_GRP_LINK_CONTROL_CMDS)
77911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_VERSION_INFO (0x001D | HCI_GRP_LINK_CONTROL_CMDS)
78911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_CLOCK_OFFSET (0x001F | HCI_GRP_LINK_CONTROL_CMDS)
79911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LMP_HANDLE (0x0020 | HCI_GRP_LINK_CONTROL_CMDS)
80911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SETUP_ESCO_CONNECTION (0x0028 | HCI_GRP_LINK_CONTROL_CMDS)
81911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_ESCO_CONNECTION (0x0029 | HCI_GRP_LINK_CONTROL_CMDS)
82911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REJECT_ESCO_CONNECTION (0x002A | HCI_GRP_LINK_CONTROL_CMDS)
83899b77140675a157dba034e98527ab546bc9ac35Mudumba Ananth#define HCI_IO_CAPABILITY_REQUEST_REPLY (0x002B | HCI_GRP_LINK_CONTROL_CMDS)
84911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_CONF_REQUEST_REPLY (0x002C | HCI_GRP_LINK_CONTROL_CMDS)
85911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_CONF_VALUE_NEG_REPLY (0x002D | HCI_GRP_LINK_CONTROL_CMDS)
86911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_REQ_REPLY (0x002E | HCI_GRP_LINK_CONTROL_CMDS)
87911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_REQ_NEG_REPLY (0x002F | HCI_GRP_LINK_CONTROL_CMDS)
88911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REM_OOB_DATA_REQ_REPLY (0x0030 | HCI_GRP_LINK_CONTROL_CMDS)
89911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REM_OOB_DATA_REQ_NEG_REPLY (0x0033 | HCI_GRP_LINK_CONTROL_CMDS)
90911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_REQ_NEG_REPLY (0x0034 | HCI_GRP_LINK_CONTROL_CMDS)
915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AMP HCI */
93911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_PHYSICAL_LINK (0x0035 | HCI_GRP_LINK_CONTROL_CMDS)
94911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_PHYSICAL_LINK (0x0036 | HCI_GRP_LINK_CONTROL_CMDS)
95911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT_PHYSICAL_LINK (0x0037 | HCI_GRP_LINK_CONTROL_CMDS)
96911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_LOGICAL_LINK (0x0038 | HCI_GRP_LINK_CONTROL_CMDS)
97911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_LOGICAL_LINK (0x0039 | HCI_GRP_LINK_CONTROL_CMDS)
98911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT_LOGICAL_LINK (0x003A | HCI_GRP_LINK_CONTROL_CMDS)
99911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOGICAL_LINK_CANCEL (0x003B | HCI_GRP_LINK_CONTROL_CMDS)
100911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPEC_MODIFY (0x003C | HCI_GRP_LINK_CONTROL_CMDS)
101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENH_SETUP_ESCO_CONNECTION (0x003D | HCI_GRP_LINK_CONTROL_CMDS)
103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENH_ACCEPT_ESCO_CONNECTION (0x003E | HCI_GRP_LINK_CONTROL_CMDS)
104ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
105ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* ConnectionLess Broadcast */
106911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TRUNCATED_PAGE (0x003F | HCI_GRP_LINK_CONTROL_CMDS)
107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TRUNCATED_PAGE_CANCEL (0x0040 | HCI_GRP_LINK_CONTROL_CMDS)
108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CLB (0x0041 | HCI_GRP_LINK_CONTROL_CMDS)
109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RECEIVE_CLB (0x0042 | HCI_GRP_LINK_CONTROL_CMDS)
110911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_START_SYNC_TRAIN (0x0043 | HCI_GRP_LINK_CONTROL_CMDS)
111911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RECEIVE_SYNC_TRAIN (0x0044 | HCI_GRP_LINK_CONTROL_CMDS)
112ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
113911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_CTRL_CMDS_FIRST HCI_INQUIRY
114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_CTRL_CMDS_LAST HCI_RECEIVE_SYNC_TRAIN
1155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Commands of HCI_GRP_LINK_POLICY_CMDS */
117911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOLD_MODE (0x0001 | HCI_GRP_LINK_POLICY_CMDS)
118911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_MODE (0x0003 | HCI_GRP_LINK_POLICY_CMDS)
119911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_SNIFF_MODE (0x0004 | HCI_GRP_LINK_POLICY_CMDS)
120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PARK_MODE (0x0005 | HCI_GRP_LINK_POLICY_CMDS)
121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_PARK_MODE (0x0006 | HCI_GRP_LINK_POLICY_CMDS)
122911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_SETUP (0x0007 | HCI_GRP_LINK_POLICY_CMDS)
123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_DISCOVERY (0x0009 | HCI_GRP_LINK_POLICY_CMDS)
124911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SWITCH_ROLE (0x000B | HCI_GRP_LINK_POLICY_CMDS)
125911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_POLICY_SETTINGS (0x000C | HCI_GRP_LINK_POLICY_CMDS)
126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_POLICY_SETTINGS (0x000D | HCI_GRP_LINK_POLICY_CMDS)
127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_DEF_POLICY_SETTINGS (0x000E | HCI_GRP_LINK_POLICY_CMDS)
128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_DEF_POLICY_SETTINGS (0x000F | HCI_GRP_LINK_POLICY_CMDS)
129911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPECIFICATION (0x0010 | HCI_GRP_LINK_POLICY_CMDS)
130911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_SUB_RATE (0x0011 | HCI_GRP_LINK_POLICY_CMDS)
131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
132911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_POLICY_CMDS_FIRST HCI_HOLD_MODE
133911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_POLICY_CMDS_LAST HCI_SNIFF_SUB_RATE
1345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Commands of HCI_GRP_HOST_CONT_BASEBAND_CMDS */
136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_MASK (0x0001 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RESET (0x0003 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_FILTER (0x0005 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLUSH (0x0008 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PIN_TYPE (0x0009 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PIN_TYPE (0x000A | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_NEW_UNIT_KEY (0x000B | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GET_MWS_TRANS_LAYER_CFG (0x000C | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
144911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_STORED_LINK_KEY (0x000D | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
145911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_STORED_LINK_KEY (0x0011 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
146911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DELETE_STORED_LINK_KEY (0x0012 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
147911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_LOCAL_NAME (0x0013 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
148911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_NAME (0x0014 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
149911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CONN_ACCEPT_TOUT (0x0015 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
150911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CONN_ACCEPT_TOUT (0x0016 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
151911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_TOUT (0x0017 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
152911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_TOUT (0x0018 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
153911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SCAN_ENABLE (0x0019 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
154911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SCAN_ENABLE (0x001A | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
155911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGESCAN_CFG (0x001B | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGESCAN_CFG (0x001C | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQUIRYSCAN_CFG (0x001D | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
158911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQUIRYSCAN_CFG (0x001E | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
159911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AUTHENTICATION_ENABLE \
160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x001F | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AUTHENTICATION_ENABLE \
162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x0020 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
163911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ENCRYPTION_MODE (0x0021 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
164911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_ENCRYPTION_MODE (0x0022 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLASS_OF_DEVICE (0x0023 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CLASS_OF_DEVICE (0x0024 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_VOICE_SETTINGS (0x0025 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
168911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_VOICE_SETTINGS (0x0026 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
169911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AUTO_FLUSH_TOUT (0x0027 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
170911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AUTO_FLUSH_TOUT (0x0028 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_NUM_BCAST_REXMITS (0x0029 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
172911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_NUM_BCAST_REXMITS (0x002A | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
173911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_HOLD_MODE_ACTIVITY (0x002B | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
174911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_HOLD_MODE_ACTIVITY (0x002C | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
175911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_TRANSMIT_POWER_LEVEL (0x002D | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
176911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SCO_FLOW_CTRL_ENABLE (0x002E | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
177911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SCO_FLOW_CTRL_ENABLE \
178911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x002F | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
179911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_HC_TO_HOST_FLOW_CTRL (0x0031 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
180911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOST_BUFFER_SIZE (0x0033 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOST_NUM_PACKETS_DONE (0x0035 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
182911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LINK_SUPER_TOUT (0x0036 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
183911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LINK_SUPER_TOUT (0x0037 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
184911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_NUM_SUPPORTED_IAC (0x0038 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
185911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CURRENT_IAC_LAP (0x0039 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CURRENT_IAC_LAP (0x003A | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
187911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGESCAN_PERIOD_MODE (0x003B | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
188911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGESCAN_PERIOD_MODE \
189911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x003C | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
190911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGESCAN_MODE (0x003D | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
191911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGESCAN_MODE (0x003E | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
192911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_AFH_CHANNELS (0x003F | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
193911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
194911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQSCAN_TYPE (0x0042 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
195911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQSCAN_TYPE (0x0043 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
196911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQUIRY_MODE (0x0044 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
197911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQUIRY_MODE (0x0045 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
198911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGESCAN_TYPE (0x0046 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
199911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGESCAN_TYPE (0x0047 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
200911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AFH_ASSESSMENT_MODE (0x0048 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
201911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AFH_ASSESSMENT_MODE (0x0049 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
202911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_EXT_INQ_RESPONSE (0x0051 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
203911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_EXT_INQ_RESPONSE (0x0052 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
204911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REFRESH_ENCRYPTION_KEY (0x0053 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
205911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SIMPLE_PAIRING_MODE (0x0055 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
206911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SIMPLE_PAIRING_MODE (0x0056 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
207911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_OOB_DATA (0x0057 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
208911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQ_TX_POWER_LEVEL (0x0058 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
209911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQ_TX_POWER_LEVEL (0x0059 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
210911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ERRONEOUS_DATA_RPT (0x005A | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
211911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_ERRONEOUS_DATA_RPT (0x005B | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
212911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENHANCED_FLUSH (0x005F | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
213911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SEND_KEYPRESS_NOTIF (0x0060 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
2145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AMP HCI */
216911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT \
217911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x0061 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
218911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT \
219911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x0062 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
220911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_MASK_PAGE_2 (0x0063 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
221911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCATION_DATA (0x0064 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
222911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOCATION_DATA (0x0065 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
223911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_FLOW_CONTROL_MODE (0x0066 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
224911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_FLOW_CONTROL_MODE (0x0067 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BE_FLUSH_TOUT (0x0069 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
226911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_BE_FLUSH_TOUT (0x006A | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
2279ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* 802.11 only */
228911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SHORT_RANGE_MODE (0x006B | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
229911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LE_HOST_SUPPORT (0x006C | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
230911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LE_HOST_SUPPORT (0x006D | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
231ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
232ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* MWS coexistence */
233911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_CHANNEL_PARAMETERS \
234911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x006E | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
235911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EXTERNAL_FRAME_CONFIGURATION \
236911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x006F | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
237911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_SIGNALING (0x0070 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
238911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_TRANSPORT_LAYER (0x0071 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
239911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_SCAN_FREQUENCY_TABLE \
240911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x0072 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
241911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_PATTERN_CONFIGURATION \
242911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x0073 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
243ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
244899b77140675a157dba034e98527ab546bc9ac35Mudumba Ananth/* Connectionless Broadcast */
245911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_RESERVED_LT_ADDR (0x0074 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
246911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DELETE_RESERVED_LT_ADDR (0x0075 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
247911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CLB_DATA (0x0076 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
248911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SYNC_TRAIN_PARAM (0x0077 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
249911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SYNC_TRAIN_PARAM (0x0078 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
250911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
251911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SECURE_CONNS_SUPPORT (0x0079 | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
252911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SECURE_CONNS_SUPPORT \
253911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0x007A | HCI_GRP_HOST_CONT_BASEBAND_CMDS)
254911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONT_BASEBAND_CMDS_FIRST HCI_SET_EVENT_MASK
255911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONT_BASEBAND_CMDS_LAST HCI_READ_SYNC_TRAIN_PARAM
2565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Commands of HCI_GRP_INFORMATIONAL_PARAMS group */
258911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_VERSION_INFO (0x0001 | HCI_GRP_INFORMATIONAL_PARAMS)
259911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_SUPPORTED_CMDS (0x0002 | HCI_GRP_INFORMATIONAL_PARAMS)
260911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_FEATURES (0x0003 | HCI_GRP_INFORMATIONAL_PARAMS)
261911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_EXT_FEATURES (0x0004 | HCI_GRP_INFORMATIONAL_PARAMS)
262911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BUFFER_SIZE (0x0005 | HCI_GRP_INFORMATIONAL_PARAMS)
263911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_COUNTRY_CODE (0x0007 | HCI_GRP_INFORMATIONAL_PARAMS)
264911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BD_ADDR (0x0009 | HCI_GRP_INFORMATIONAL_PARAMS)
265911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_DATA_BLOCK_SIZE (0x000A | HCI_GRP_INFORMATIONAL_PARAMS)
266ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define HCI_READ_LOCAL_SUPPORTED_CODECS (0x000B | HCI_GRP_INFORMATIONAL_PARAMS)
2675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
268911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INFORMATIONAL_CMDS_FIRST HCI_READ_LOCAL_VERSION_INFO
269911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INFORMATIONAL_CMDS_LAST HCI_READ_LOCAL_SUPPORTED_CODECS
2705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Commands of HCI_GRP_STATUS_PARAMS group */
272911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_FAILED_CONTACT_COUNT (0x0001 | HCI_GRP_STATUS_PARAMS)
273911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RESET_FAILED_CONTACT_COUNT (0x0002 | HCI_GRP_STATUS_PARAMS)
274911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GET_LINK_QUALITY (0x0003 | HCI_GRP_STATUS_PARAMS)
275911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RSSI (0x0005 | HCI_GRP_STATUS_PARAMS)
276911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AFH_CH_MAP (0x0006 | HCI_GRP_STATUS_PARAMS)
277911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLOCK (0x0007 | HCI_GRP_STATUS_PARAMS)
278911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ENCR_KEY_SIZE (0x0008 | HCI_GRP_STATUS_PARAMS)
2795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AMP HCI */
281911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_AMP_INFO (0x0009 | HCI_GRP_STATUS_PARAMS)
282911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_AMP_ASSOC (0x000A | HCI_GRP_STATUS_PARAMS)
283911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_REMOTE_AMP_ASSOC (0x000B | HCI_GRP_STATUS_PARAMS)
2845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
285911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_STATUS_PARAMS_CMDS_FIRST HCI_READ_FAILED_CONTACT_COUNT
286911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_STATUS_PARAMS_CMDS_LAST HCI_WRITE_REMOTE_AMP_ASSOC
2875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Commands of HCI_GRP_TESTING_CMDS group */
289911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOOPBACK_MODE (0x0001 | HCI_GRP_TESTING_CMDS)
290911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOOPBACK_MODE (0x0002 | HCI_GRP_TESTING_CMDS)
291911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_DEV_UNDER_TEST_MODE (0x0003 | HCI_GRP_TESTING_CMDS)
292911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SIMP_PAIR_DEBUG_MODE (0x0004 | HCI_GRP_TESTING_CMDS)
2935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AMP HCI */
295911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_AMP_RCVR_REPORTS (0x0007 | HCI_GRP_TESTING_CMDS)
296911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_TEST_END (0x0008 | HCI_GRP_TESTING_CMDS)
297911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_TEST (0x0009 | HCI_GRP_TESTING_CMDS)
2985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
299911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TESTING_CMDS_FIRST HCI_READ_LOOPBACK_MODE
300911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TESTING_CMDS_LAST HCI_AMP_TEST
3015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
302911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VENDOR_CMDS_FIRST 0x0001
303911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VENDOR_CMDS_LAST 0xFFFF
304911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VSC_MULTI_AV_HANDLE 0x0AAA
305911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VSC_BURST_MODE_HANDLE 0x0BBB
3065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* BLE HCI */
308911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GRP_BLE_CMDS (0x08 << 10)
3095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Commands of BLE Controller setup and configuration */
310911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_SET_EVENT_MASK (0x0001 | HCI_GRP_BLE_CMDS)
311911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_BUFFER_SIZE (0x0002 | HCI_GRP_BLE_CMDS)
312911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_LOCAL_SPT_FEAT (0x0003 | HCI_GRP_BLE_CMDS)
313911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_LOCAL_SPT_FEAT (0x0004 | HCI_GRP_BLE_CMDS)
314911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_RANDOM_ADDR (0x0005 | HCI_GRP_BLE_CMDS)
315911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_ADV_PARAMS (0x0006 | HCI_GRP_BLE_CMDS)
316911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_ADV_CHNL_TX_POWER (0x0007 | HCI_GRP_BLE_CMDS)
317911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_ADV_DATA (0x0008 | HCI_GRP_BLE_CMDS)
318911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_SCAN_RSP_DATA (0x0009 | HCI_GRP_BLE_CMDS)
319911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_ADV_ENABLE (0x000A | HCI_GRP_BLE_CMDS)
320911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_SCAN_PARAMS (0x000B | HCI_GRP_BLE_CMDS)
321911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_SCAN_ENABLE (0x000C | HCI_GRP_BLE_CMDS)
322911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_CREATE_LL_CONN (0x000D | HCI_GRP_BLE_CMDS)
323911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_CREATE_CONN_CANCEL (0x000E | HCI_GRP_BLE_CMDS)
324911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_WHITE_LIST_SIZE (0x000F | HCI_GRP_BLE_CMDS)
325911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_CLEAR_WHITE_LIST (0x0010 | HCI_GRP_BLE_CMDS)
326911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ADD_WHITE_LIST (0x0011 | HCI_GRP_BLE_CMDS)
327911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_REMOVE_WHITE_LIST (0x0012 | HCI_GRP_BLE_CMDS)
328911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_UPD_LL_CONN_PARAMS (0x0013 | HCI_GRP_BLE_CMDS)
329911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_SET_HOST_CHNL_CLASS (0x0014 | HCI_GRP_BLE_CMDS)
330911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_CHNL_MAP (0x0015 | HCI_GRP_BLE_CMDS)
331911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_REMOTE_FEAT (0x0016 | HCI_GRP_BLE_CMDS)
332911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ENCRYPT (0x0017 | HCI_GRP_BLE_CMDS)
333911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_RAND (0x0018 | HCI_GRP_BLE_CMDS)
334911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_START_ENC (0x0019 | HCI_GRP_BLE_CMDS)
335911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_LTK_REQ_REPLY (0x001A | HCI_GRP_BLE_CMDS)
336911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_LTK_REQ_NEG_REPLY (0x001B | HCI_GRP_BLE_CMDS)
337911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_SUPPORTED_STATES (0x001C | HCI_GRP_BLE_CMDS)
338911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson/* 0x001D, 0x001E and 0x001F are reserved */
339911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_RECEIVER_TEST (0x001D | HCI_GRP_BLE_CMDS)
340911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_TRANSMITTER_TEST (0x001E | HCI_GRP_BLE_CMDS)
341444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* BLE TEST COMMANDS */
342911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_TEST_END (0x001F | HCI_GRP_BLE_CMDS)
343911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_RC_PARAM_REQ_REPLY (0x0020 | HCI_GRP_BLE_CMDS)
344911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_RC_PARAM_REQ_NEG_REPLY (0x0021 | HCI_GRP_BLE_CMDS)
345911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
346911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_SET_DATA_LENGTH (0x0022 | HCI_GRP_BLE_CMDS)
347911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_DEFAULT_DATA_LENGTH (0x0023 | HCI_GRP_BLE_CMDS)
348911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_WRITE_DEFAULT_DATA_LENGTH (0x0024 | HCI_GRP_BLE_CMDS)
349911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
350911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ADD_DEV_RESOLVING_LIST (0x0027 | HCI_GRP_BLE_CMDS)
351911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_RM_DEV_RESOLVING_LIST (0x0028 | HCI_GRP_BLE_CMDS)
352911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_CLEAR_RESOLVING_LIST (0x0029 | HCI_GRP_BLE_CMDS)
353911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_RESOLVING_LIST_SIZE (0x002A | HCI_GRP_BLE_CMDS)
354911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_RESOLVABLE_ADDR_PEER (0x002B | HCI_GRP_BLE_CMDS)
355911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_RESOLVABLE_ADDR_LOCAL (0x002C | HCI_GRP_BLE_CMDS)
356911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_SET_ADDR_RESOLUTION_ENABLE (0x002D | HCI_GRP_BLE_CMDS)
357911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_SET_RAND_PRIV_ADDR_TIMOUT (0x002E | HCI_GRP_BLE_CMDS)
3587fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
3595af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_RANDOM_ADDRESS (0x35 | HCI_GRP_BLE_CMDS)
3605af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_PARAM (0x36 | HCI_GRP_BLE_CMDS)
3615af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_DATA (0x37 | HCI_GRP_BLE_CMDS)
3625af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_SCAN_RESP (0x38 | HCI_GRP_BLE_CMDS)
3635af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_ENABLE (0x39 | HCI_GRP_BLE_CMDS)
3641f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski#define HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH (0x003A | HCI_GRP_BLE_CMDS)
3651f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski#define HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS \
3661f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski  (0x003B | HCI_GRP_BLE_CMDS)
3678e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_REMOVE_ADVERTISING_SET (0x003C | HCI_GRP_BLE_CMDS)
3688e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_CLEAR_ADVERTISING_SETS (0x003D | HCI_GRP_BLE_CMDS)
3698e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_SET_PERIODIC_ADVERTISING_PARAM (0x003E | HCI_GRP_BLE_CMDS)
3708e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_SET_PERIODIC_ADVERTISING_DATA (0x003F | HCI_GRP_BLE_CMDS)
3718e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE (0x0040 | HCI_GRP_BLE_CMDS)
3729df2a552f7df99d79e1602781b37f6a6380fc71cJakub Pawlowski#define HCI_LE_SET_EXTENDED_SCAN_PARAMETERS (0x0041 | HCI_GRP_BLE_CMDS)
3739df2a552f7df99d79e1602781b37f6a6380fc71cJakub Pawlowski#define HCI_LE_SET_EXTENDED_SCAN_ENABLE (0x0042 | HCI_GRP_BLE_CMDS)
37493df860536b5a2a901248a7ae7319aabff2624dfJakub Pawlowski#define HCI_LE_EXTENDED_CREATE_CONNECTION (0x0043 | HCI_GRP_BLE_CMDS)
3751f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski
376a6ce7751d84218c193eb90d390aef23217b1737eWei Wang/* LE Get Vendor Capabilities Command OCF */
377911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_VENDOR_CAP_OCF (0x0153 | HCI_GRP_VENDOR_SPECIFIC)
378a6ce7751d84218c193eb90d390aef23217b1737eWei Wang
379a6ce7751d84218c193eb90d390aef23217b1737eWei Wang/* Multi adv OCF */
380911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_MULTI_ADV_OCF (0x0154 | HCI_GRP_VENDOR_SPECIFIC)
381a6ce7751d84218c193eb90d390aef23217b1737eWei Wang
382c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* Batch scan OCF */
383911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_BATCH_SCAN_OCF (0x0156 | HCI_GRP_VENDOR_SPECIFIC)
384c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
3851a9247a1229aa65b3d1dce16426177bc5828e54dSatya Calloji/* ADV filter OCF */
386911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ADV_FILTER_OCF (0x0157 | HCI_GRP_VENDOR_SPECIFIC)
3871a9247a1229aa65b3d1dce16426177bc5828e54dSatya Calloji
388c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* Tracking OCF */
389911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_TRACK_ADV_OCF (0x0158 | HCI_GRP_VENDOR_SPECIFIC)
390c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
391e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji/* Energy info OCF */
392911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ENERGY_INFO_OCF (0x0159 | HCI_GRP_VENDOR_SPECIFIC)
393e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji
394979e3421c8111a56ebfcf176f6383df58eed52eaAndre Eisenbach/* Extended BLE Scan parameters OCF */
395911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_EXTENDED_SCAN_PARAMS_OCF (0x015A | HCI_GRP_VENDOR_SPECIFIC)
396979e3421c8111a56ebfcf176f6383df58eed52eaAndre Eisenbach
397ca58b09a9129e334f116b7bbdfc0a3834afa299eSatya Calloji/* Controller debug info OCF */
398911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONTROLLER_DEBUG_INFO_OCF (0x015B | HCI_GRP_VENDOR_SPECIFIC)
399ca58b09a9129e334f116b7bbdfc0a3834afa299eSatya Calloji
400a6ce7751d84218c193eb90d390aef23217b1737eWei Wang/* subcode for multi adv feature */
401911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_SET_PARAM 0x01
402911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_WRITE_ADV_DATA 0x02
403911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_WRITE_SCAN_RSP_DATA 0x03
404911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR 0x04
405911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_ENB 0x05
406a6ce7751d84218c193eb90d390aef23217b1737eWei Wang
407a6ce7751d84218c193eb90d390aef23217b1737eWei Wang/* multi adv VSE subcode */
4089ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* multi adv instance state change */
409911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VSE_SUBCODE_BLE_MULTI_ADV_ST_CHG 0x55
410a6ce7751d84218c193eb90d390aef23217b1737eWei Wang
411c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* subcode for batch scan feature */
412911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_BATCH_SCAN_ENB_DISAB_CUST_FEATURE 0x01
413911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_BATCH_SCAN_SET_STORAGE_PARAM 0x02
414911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_BATCH_SCAN_SET_PARAMS 0x03
415911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_BATCH_SCAN_READ_RESULTS 0x04
416c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
417c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* batch scan VSE subcode */
418911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VSE_SUBCODE_BLE_THRESHOLD_SUB_EVT 0x54 /* Threshold event */
419c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
420c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* tracking sub event */
421911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VSE_SUBCODE_BLE_TRACKING_SUB_EVT 0x56 /* Tracking event */
422c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
4235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* LE supported states definition */
424911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_STATE 0x00000001
425911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SCAN_STATE 0x00000002
426911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_INIT_STATE 0x00000004
427911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_CONN_SL_STATE 0x00000008
428911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_SCAN_STATE 0x00000010
429911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_INIT_STATE 0x00000020
430911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_MA_STATE 0x00000040
431911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_SL_STATE 0x00000080
432911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SCAN_INIT_STATE 0x00000100
433911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SCAN_MA_STATE 0x00000200
434911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SCAN_SL_STATE 0x00000400
435911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_INIT_MA_STATE 0x00000800
4365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4377fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* LE Supported States */
4387fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Non Connectable Adv state is supported. 0x0000000000000001 */
439911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK 0x01
440911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF 0
441911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_SUPPORTED(x) \
442911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF] &   \
443911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK)
4447fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4459ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scanneable Connectable Adv state  is supported. 0x0000000000000002 */
446911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_MASK 0x02
447911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATESSCAN_ADV_OFF 0
448911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_SUPPORTED(x) \
449911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATESSCAN_ADV_OFF] & HCI_SUPP_LE_STATES_SCAN_ADV_MASK)
4507fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4517fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Connectable Adv state is supported. 0x0000000000000004 */
452911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_MASK 0x04
453911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_OFF 0
454911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_SUPPORTED(x) \
455911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_OFF] & HCI_SUPP_LE_STATES_CONN_ADV_MASK)
4567fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4577fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Hi duty Cycle Directed Adv state is supported. 0x0000000000000008 */
458911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASK 0x08
459911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_OFF 0
460911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_SUPPORTED(x) \
461911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_OFF] &   \
462911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASK)
4637fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4647fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Passive Scan state is supported. 0x0000000000000010 */
465911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_MASK 0x10
466911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_OFF 0
467911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_PASS_SCAN_SUPPORTED(x) \
468911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_OFF] & HCI_SUPP_LE_STATES_PASS_SCAN_MASK)
4697fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4707fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Active Scan state is supported. 0x0000000000000020 */
471911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASK 0x20
472911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_OFF 0
473911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_ACTIVE_SCAN_SUPPORTED(x) \
474911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_OFF] &   \
475911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASK)
4767fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4779ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Initiating state is supported. 0x0000000000000040 (or connection state in
4789ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * master role is also supported) */
479911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASK 0x40
480911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_OFF 0
481911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_INIT_SUPPORTED(x) \
482911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_INIT_OFF] & HCI_SUPP_LE_STATES_INIT_MASK)
4837fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4849ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* connection state in slave  role is also supported. 0x0000000000000080 */
485911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SLAVE_MASK 0x80
486911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SLAVE_OFF 0
487911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SLAVE_SUPPORTED(x) \
488911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SLAVE_OFF] & HCI_SUPP_LE_STATES_SLAVE_MASK)
4897fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4909ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non Connectable Adv state and Passive Scanning State combination is
4919ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. 0x0000000000000100 */
492911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_MASK 0x01
493911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_OFF 1
494911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_PASS_SCAN_SUPPORTED(x) \
495911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_OFF] &   \
496911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_MASK)
4977fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4989ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv state and Passive Scanning State combination is supported.
4999ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000000200 */
500911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_MASK 0x02
501911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_OFF 1
502911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_PASS_SCAN_SUPPORTED(x) \
503911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_OFF] &   \
504911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_MASK)
5057fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5069ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Connectable Adv state and Passive Scanning State combination is supported.
5079ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000000400 */
508911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_MASK 0x04
509911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_OFF 1
510911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_PASS_SCAN_SUPPORTED(x) \
511911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_OFF] &   \
512911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_MASK)
5137fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5149ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycl Directed ADv and Passive Scanning State combination is
5159ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. 0x0000000000000800 */
516911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_MASK 0x08
517911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_OFF 1
518911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_SUPPORTED(x) \
519911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_MASK] &  \
520911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_OFF)
5217fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5229ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non Connectable Adv state and Passive Scanning State combination is
5239ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. 0x0000000000001000 */
524911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_MASK 0x10
525911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_OFF 1
526911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_SUPPORTED(x) \
527911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_OFF] &   \
528911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_MASK)
5297fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5309ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv state and Active Scanning State combination is supported.
5319ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000002000 */
532911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_MASK 0x20
533911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_OFF 1
534911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_ACTIVE_SCAN_SUPPORTED(x) \
535911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_OFF] &   \
536911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_MASK)
5377fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5389ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Connectable Adv state and Active Scanning State combination is supported.
5399ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000004000 */
540911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_MASK 0x40
541911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_OFF 1
542911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_ACTIVE_SCAN_SUPPORTED(x) \
543911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_OFF] &   \
544911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_MASK)
5457fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5469ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycl Directed ADv and ACtive Scanning State combination is
5479ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. 0x0000000000008000 */
548911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_MASK 0x80
549911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_OFF 1
550911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_SUPPORTED(x) \
551911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_MASK] &  \
552911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_OFF)
5537fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5549ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non-Connectable Adv state and Initiating State combination is supported.
5559ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000010000 */
556911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_INIT_MASK 0x01
557911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_INIT_OFF 2
558911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_INIT_SUPPORTED(x) \
559911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_INIT_OFF] &   \
560911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_INIT_MASK)
5617fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5629ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv state and Initiating State combination is supported.
5639ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000020000 */
564911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_INIT_MASK 0x02
565911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_INIT_OFF 2
566911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_INIT_SUPPORTED(x) \
567911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_INIT_OFF] &   \
568911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_INIT_MASK)
5697fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5709ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non-Connectable Adv state and Master Role combination is supported.
5719ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000040000 */
572911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_MASK 0x04
573911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_OFF 2
574911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_MASTER_SUPPORTED(x) \
575911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_OFF] &   \
576911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_MASK)
5777fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5789ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv state and Master Role combination is supported.
5799ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000040000 */
580911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_MASK 0x08
581911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_OFF 2
582911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_MASTER_SUPPORTED(x) \
583911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_OFF] &   \
584911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_MASK)
5857fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5869ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non-Connectable Adv and Slave Role combination is supported.
5879ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x000000000100000 */
588911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_MASK 0x10
589911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_OFF 2
590911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_SLAVE_SUPPORTED(x) \
591911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_OFF] &   \
592911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_MASK)
5937fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5949ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv and Slave Role combination is supported. 0x000000000200000 */
595911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_MASK 0x20
596911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_OFF 2
597911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_SLAVE_SUPPORTED(x) \
598911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_OFF] &   \
599911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_MASK)
6007fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6019ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Passive Scan and Initiating State combination is supported.
6029ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x000000000400000 */
603911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_INIT_MASK 0x40
604911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_INIT_OFF 2
605911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_PASS_SCAN_INIT_SUPPORTED(x) \
606911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_INIT_OFF] &   \
607911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_PASS_SCAN_INIT_MASK)
6087fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6099ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Active Scan and Initiating State combination is supported.
6109ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x000000000800000 */
611911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_MASK 0x80
612911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_OFF 2
613911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_ACTIVE_SCAN_INIT_SUPPORTED(x) \
614911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_OFF] &   \
615911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_MASK)
6167fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6179ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Passive Scan and Master Role combination is supported. 0x000000001000000 */
618911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_MASK 0x01
619911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_OFF 3
620911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_PASS_SCAN_MASTER_SUPPORTED(x) \
621911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_OFF] &   \
622911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_MASK)
6237fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6249ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Active Scan and Master Role combination is supported. 0x000000002000000 */
625911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_MASK 0x02
626911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_OFF 3
627911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_ACTIVE_SCAN_MASTER_SUPPORTED(x) \
628911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_OFF] &   \
629911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_MASK)
6307fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6319ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Passive Scan and Slave Role combination is supported. 0x000000004000000 */
632911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_MASK 0x04
633911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_OFF 3
634911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_PASS_SCAN_SLAVE_SUPPORTED(x) \
635911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_OFF] &   \
636911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_MASK)
6377fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6389ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Active Scan and Slave Role combination is supported. 0x000000008000000 */
639911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_MASK 0x08
640911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_OFF 3
641911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_ACTIVE_SCAN_SLAVE_SUPPORTED(x) \
642911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_OFF] &   \
643911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_MASK)
6447fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6459ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Link Layer Topology Added States Combo */
6469ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Initiating State and Master Role combination supported.
647911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  Master Role and Master Role combination is also supported. 0x0000000010000000
648911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  */
649911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASTER_MASK 0x10
650911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASTER_OFF 3
651911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_INIT_MASTER_SUPPORTED(x) \
652911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_INIT_MASTER_OFF] &   \
653911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_INIT_MASTER_MASK)
6547fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6559ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State . 0x0000000020000000 */
656911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASK 0x20
657911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_OFF 3
658911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LOW_DUTY_DIR_ADV_SUPPORTED(x) \
659911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LOW_DUTY_DIR_ADV_OFF] &   \
660911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LOW_DUTY_DIR_ADV_MASK)
661444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
6629ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and Passive scan combination.
6639ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000040000000 */
664911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_MASK 0x40
665911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_OFF 3
666911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_SUPPORTED(x) \
667911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_OFF] &   \
668911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_MASK)
669444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
6709ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and Active scan combination.
6719ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000080000000 */
672911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_MASK 0x80
673911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_OFF 3
674911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_SUPPORTED(x) \
675911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_OFF] &   \
676911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_MASK)
677444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
6789ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Connectable Advertising State and Initiating State combination supported.
6799ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000100000000 */
680911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_INIT_MASK 0x01
681911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_INIT_OFF 4
682911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_INIT_SUPPORTED(x) \
683911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_INIT_OFF] &   \
684911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_INIT_MASK)
6857fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6869ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycle Directed Advertising State and Initiating State combination
6879ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. */
688911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_MASK 0x02
689911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_OFF 4
690911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_INIT_SUPPORTED(x) \
691911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_OFF] &   \
692911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_MASK)
6937fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6949ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and Initiating State combination
6959ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
696911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_MASK 0x04
697911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_OFF 4
698911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_INIT_SUPPORTED(x) \
699911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_OFF] &   \
700911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_MASK)
7017fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7027fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Connectable Advertising State and Master Role combination supported.*/
703911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_MASTER_MASK 0x08
704911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_MASTER_OFF 4
705911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_MASTER_SUPPORTED(x) \
706911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_MASTER_OFF] &   \
707911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_MASTER_MASK)
7087fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7099ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycle Directed Advertising State and Master Role combination
7109ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
711911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_MASK 0x10
712911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_OFF 4
713911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_MASTER_SUPPORTED(x) \
714911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_OFF] &   \
715911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_MASK)
7167fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7179ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and Master Role combination
7189ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
719911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_MASK 0x20
720911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_OFF 4
721911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_MASTER_SUPPORTED(x) \
722911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_OFF] &   \
723911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_MASK)
7247fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7257fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Connectable Advertising State and Slave Role combination supported. */
726911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_MASK 0x40
727911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_OFF 4
728911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_SLAVE_SUPPORTED(x) \
729911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_OFF] &   \
730911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_MASK)
7317fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7329ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycle Directed Advertising State and slave Role combination
7339ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
734911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_MASK 0x80
735911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_OFF 4
736911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_SUPPORTED(x) \
737911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_OFF] &   \
738911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_MASK)
7397fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7409ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and slave Role combination
7419ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
742911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_MASK 0x01
743911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_OFF 5
744911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_SUPPORTED(x) \
745911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_OFF] &   \
746911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_MASK)
7477fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7487fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Initiating State and Slave Role combination supported.
7497fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta   Master Role and Slave Role combination also supported.
7507fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta */
751911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_MASK 0x02
752911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_OFF 5
753911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_INIT_MASTER_SLAVE_SUPPORTED(x) \
754911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_OFF] &   \
755911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_MASK)
7567fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
758ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Definitions for HCI Events
7595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
760911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_COMP_EVT 0x01
761911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_RESULT_EVT 0x02
762911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONNECTION_COMP_EVT 0x03
763911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONNECTION_REQUEST_EVT 0x04
764911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECTION_COMP_EVT 0x05
765911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTHENTICATION_COMP_EVT 0x06
766911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RMT_NAME_REQUEST_COMP_EVT 0x07
767911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCRYPTION_CHANGE_EVT 0x08
768911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_LINK_KEY_EVT 0x09
769911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MASTER_LINK_KEY_COMP_EVT 0x0A
770911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_FEATURES_COMP_EVT 0x0B
771911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_VERSION_COMP_EVT 0x0C
772911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_SETUP_COMP_EVT 0x0D
773911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_COMPLETE_EVT 0x0E
774911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_STATUS_EVT 0x0F
775911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HARDWARE_ERROR_EVT 0x10
776911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLUSH_OCCURED_EVT 0x11
777911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_CHANGE_EVT 0x12
778911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NUM_COMPL_DATA_PKTS_EVT 0x13
779911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_CHANGE_EVT 0x14
780911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RETURN_LINK_KEYS_EVT 0x15
781911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_EVT 0x16
782911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_EVT 0x17
783911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_NOTIFICATION_EVT 0x18
784911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_COMMAND_EVT 0x19
785911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_BUF_OVERFLOW_EVT 0x1A
786911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_SLOTS_CHANGED_EVT 0x1B
787911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLOCK_OFF_COMP_EVT 0x1C
788911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONN_PKT_TYPE_CHANGE_EVT 0x1D
789911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_VIOLATION_EVT 0x1E
790911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_MODE_CHANGE_EVT 0x1F
791911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_CHNG_EVT 0x20
792911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPECIFICATION_COMP_EVT 0x21
793911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_RSSI_RESULT_EVT 0x22
794911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_EXT_FEATURES_COMP_EVT 0x23
795911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_CONNECTION_COMP_EVT 0x2C
796911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_CONNECTION_CHANGED_EVT 0x2D
797911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_SUB_RATE_EVT 0x2E
798911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXTENDED_INQUIRY_RESULT_EVT 0x2F
7995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_ENCRYPTION_KEY_REFRESH_COMP_EVT 0x30
800911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAPABILITY_REQUEST_EVT 0x31
801911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAPABILITY_RESPONSE_EVT 0x32
802911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_CONFIRMATION_REQUEST_EVT 0x33
803911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_REQUEST_EVT 0x34
804911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_OOB_DATA_REQUEST_EVT 0x35
805911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SIMPLE_PAIRING_COMPLETE_EVT 0x36
806911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_SUPER_TOUT_CHANGED_EVT 0x38
807911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENHANCED_FLUSH_COMPLETE_EVT 0x39
808911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_NOTIFY_EVT 0x3B
809911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_KEYPRESS_NOTIFY_EVT 0x3C
810911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RMT_HOST_SUP_FEAT_NOTIFY_EVT 0x3D
8115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
8125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*#define HCI_GENERIC_AMP_LINK_KEY_NOTIF_EVT  0x3E Removed from spec */
813911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PHYSICAL_LINK_COMP_EVT 0x40
814911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANNEL_SELECTED_EVT 0x41
815911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISC_PHYSICAL_LINK_COMP_EVT 0x42
8165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_PHY_LINK_LOSS_EARLY_WARNING_EVT 0x43
817911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PHY_LINK_RECOVERY_EVT 0x44
818911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOGICAL_LINK_COMP_EVT 0x45
819911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISC_LOGICAL_LINK_COMP_EVT 0x46
820911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPEC_MODIFY_COMP_EVT 0x47
821911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NUM_COMPL_DATA_BLOCKS_EVT 0x48
822911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SHORT_RANGE_MODE_COMPLETE_EVT 0x4C
823911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_STATUS_CHANGE_EVT 0x4D
8247fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define HCI_SET_TRIGGERED_CLOCK_CAPTURE_EVT 0x4E
8255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
8265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ULP HCI Event */
827911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_EVENT 0x3e
8285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ULP Event sub code */
829911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_CONN_COMPLETE_EVT 0x01
830911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ADV_PKT_RPT_EVT 0x02
831911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_LL_CONN_PARAM_UPD_EVT 0x03
832911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_REMOTE_FEAT_CMPL_EVT 0x04
833911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_LTK_REQ_EVT 0x05
834911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_RC_PARAM_REQ_EVT 0x06
835911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_DATA_LENGTH_CHANGE_EVT 0x07
836911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ENHANCED_CONN_COMPLETE_EVT 0x0a
837911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_DIRECT_ADV_EVT 0x0b
838801db30048049a63869587af4b89a6e5a4dabb9bJakub Pawlowski#define HCI_LE_EXTENDED_ADVERTISING_REPORT_EVT 0x0D
839751381c64fee63590f0888c8eac5c8a474f1e25bJakub Pawlowski#define HCI_LE_ADVERTISING_SET_TERMINATED_EVT 0x12
8407fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
8417fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Definitions for LE Channel Map */
842911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_CHNL_MAP_SIZE 5
8435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
844911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VENDOR_SPECIFIC_EVT 0xFF /* Vendor specific events */
845911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NAP_TRACE_EVT                       \
846911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  0xFF /* was define 0xFE, 0xFD, change to 0xFF \
847911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson          because conflict w/ TCI_EVT and per   \
848911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson          specification compliant */
8495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
8505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
851ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Defentions for HCI Error Codes that are past in the events
8525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
853911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUCCESS 0x00
854911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PENDING 0x00
855911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ILLEGAL_COMMAND 0x01
856911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_NO_CONNECTION 0x02
857911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HW_FAILURE 0x03
858911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PAGE_TIMEOUT 0x04
859911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_AUTH_FAILURE 0x05
860911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_KEY_MISSING 0x06
861911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MEMORY_FULL 0x07
862911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONNECTION_TOUT 0x08
863911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MAX_NUM_OF_CONNECTIONS 0x09
864911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MAX_NUM_OF_SCOS 0x0A
865911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONNECTION_EXISTS 0x0B
866911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_COMMAND_DISALLOWED 0x0C
867911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_REJECT_RESOURCES 0x0D
868911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_REJECT_SECURITY 0x0E
869911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_REJECT_DEVICE 0x0F
870911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_TIMEOUT 0x10
871911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNSUPPORTED_VALUE 0x11
872911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ILLEGAL_PARAMETER_FMT 0x12
873911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PEER_USER 0x13
874911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PEER_LOW_RESOURCES 0x14
875911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PEER_POWER_OFF 0x15
876911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONN_CAUSE_LOCAL_HOST 0x16
877911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_REPEATED_ATTEMPTS 0x17
878911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PAIRING_NOT_ALLOWED 0x18
879911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNKNOWN_LMP_PDU 0x19
880911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNSUPPORTED_REM_FEATURE 0x1A
881911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_SCO_OFFSET_REJECTED 0x1B
882911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_SCO_INTERVAL_REJECTED 0x1C
883911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_SCO_AIR_MODE 0x1D
884911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_INVALID_LMP_PARAM 0x1E
885911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNSPECIFIED 0x1F
886911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNSUPPORTED_LMP_FEATURE 0x20
887911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ROLE_CHANGE_NOT_ALLOWED 0x21
888911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LMP_RESPONSE_TIMEOUT 0x22
889911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LMP_ERR_TRANS_COLLISION 0x23
890911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LMP_PDU_NOT_ALLOWED 0x24
891911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE 0x25
892911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNIT_KEY_USED 0x26
893911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_QOS_NOT_SUPPORTED 0x27
894911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_INSTANT_PASSED 0x28
895911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED 0x29
896911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_DIFF_TRANSACTION_COLLISION 0x2A
897911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNDEFINED_0x2B 0x2B
898911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_QOS_UNACCEPTABLE_PARAM 0x2C
899911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_QOS_REJECTED 0x2D
900911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CHAN_CLASSIF_NOT_SUPPORTED 0x2E
901911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_INSUFFCIENT_SECURITY 0x2F
902911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PARAM_OUT_OF_RANGE 0x30
903911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNDEFINED_0x31 0x31
904911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ROLE_SWITCH_PENDING 0x32
905911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNDEFINED_0x33 0x33
906911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_RESERVED_SLOT_VIOLATION 0x34
907911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ROLE_SWITCH_FAILED 0x35
908911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_INQ_RSP_DATA_TOO_LARGE 0x36
909911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_SIMPLE_PAIRING_NOT_SUPPORTED 0x37
910911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_BUSY_PAIRING 0x38
911911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_REJ_NO_SUITABLE_CHANNEL 0x39
912911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONTROLLER_BUSY 0x3A
913911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNACCEPT_CONN_INTERVAL 0x3B
914911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT 0x3C
915911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONN_TOUT_DUE_TO_MIC_FAILURE 0x3D
916911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONN_FAILED_ESTABLISHMENT 0x3E
917911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MAC_CONNECTION_FAILED 0x3F
9185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
919ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* ConnectionLess Broadcast errors */
920911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LT_ADDR_ALREADY_IN_USE 0x40
921911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LT_ADDR_NOT_ALLOCATED 0x41
922911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CLB_NOT_ENABLED 0x42
923911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CLB_DATA_TOO_BIG 0x43
924ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
925911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MAX_ERR 0x43
9265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
927911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HINT_TO_RECREATE_AMP_PHYS_LINK 0xFF
9285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
9295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
930ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Definitions for HCI enable event
9315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
932911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000001)
933911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_RESULT_EV(p) (*((uint32_t*)(p)) & 0x00000002)
934911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONNECTION_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000004)
935911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONNECTION_REQUEST_EV(p) (*((uint32_t*)(p)) & 0x00000008)
936911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECTION_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000010)
937911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTHENTICATION_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000020)
938911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RMT_NAME_REQUEST_COMPL_EV(p) (*((uint32_t*)(p)) & 0x00000040)
939911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_ENCRPT_ENABLE_EV(p) (*((uint32_t*)(p)) & 0x00000080)
940911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_LINK_KEY_EV(p) (*((uint32_t*)(p)) & 0x00000100)
941911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MASTER_LINK_KEY_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000200)
942911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_FEATURES_COMPL_EV(p) (*((uint32_t*)(p)) & 0x00000400)
943911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_VERSION_COMPL_EV(p) (*((uint32_t*)(p)) & 0x00000800)
944911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_SETUP_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00001000)
945911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00002000)
946911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_STATUS_EV(p) (*((uint32_t*)(p)) & 0x00004000)
947911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HARDWARE_ERROR_EV(p) (*((uint32_t*)(p)) & 0x00008000)
948911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLASH_OCCURED_EV(p) (*((uint32_t*)(p)) & 0x00010000)
949911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_CHANGE_EV(p) (*((uint32_t*)(p)) & 0x00020000)
950911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NUM_COMPLETED_PKTS_EV(p) (*((uint32_t*)(p)) & 0x00040000)
951911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_CHANGE_EV(p) (*((uint32_t*)(p)) & 0x00080000)
952911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RETURN_LINK_KEYS_EV(p) (*((uint32_t*)(p)) & 0x00100000)
953911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_EV(p) (*((uint32_t*)(p)) & 0x00200000)
954911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_EV(p) (*((uint32_t*)(p)) & 0x00400000)
955911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_NOTIFICATION_EV(p) (*((uint32_t*)(p)) & 0x00800000)
956911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_COMMAND_EV(p) (*((uint32_t*)(p)) & 0x01000000)
957911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_BUF_OVERFLOW_EV(p) (*((uint32_t*)(p)) & 0x02000000)
958911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_SLOTS_CHANGE_EV(p) (*((uint32_t*)(p)) & 0x04000000)
959911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLOCK_OFFSET_COMP_EV(p) (*((uint32_t*)(p)) & 0x08000000)
960911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONN_PKT_TYPE_CHANGED_EV(p) (*((uint32_t*)(p)) & 0x10000000)
961911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_VIOLATION_EV(p) (*((uint32_t*)(p)) & 0x20000000)
962911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_MODE_CHANGED_EV(p) (*((uint32_t*)(p)) & 0x40000000)
963911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_CHNG_EV(p) (*((uint32_t*)(p)) & 0x80000000)
9645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
9655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* the default event mask for 2.1+EDR (Lisbon) does not include Lisbon events */
966911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_EVENT_MASK_0 0xFFFFFFFF
967911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_EVENT_MASK_1 0x00001FFF
9685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
9695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* the event mask for 2.0 + EDR and later (includes Lisbon events) */
970911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LISBON_EVENT_MASK_0 0xFFFFFFFF
971911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LISBON_EVENT_MASK_1 0x1DBFFFFF
972911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LISBON_EVENT_MASK \
973911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  { 0x0D, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
974911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LISBON_EVENT_MASK_EXT \
975911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  { 0x1D, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
976911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DUMO_EVENT_MASK_EXT \
977911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  { 0x3D, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
9785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*  0x00001FFF FFFFFFFF Default - no Lisbon events
9795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00000800 00000000 Synchronous Connection Complete Event
9805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00001000 00000000 Synchronous Connection Changed Event
9815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00002000 00000000 Sniff Subrate Event
9825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00004000 00000000 Extended Inquiry Result Event
9835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00008000 00000000 Encryption Key Refresh Complete Event
9845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00010000 00000000 IO Capability Request Event
9855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00020000 00000000 IO Capability Response Event
9865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00040000 00000000 User Confirmation Request Event
9875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00080000 00000000 User Passkey Request Event
9885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00100000 00000000 Remote OOB Data Request Event
9895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00200000 00000000 Simple Pairing Complete Event
9905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00400000 00000000 Generic AMP Link Key Notification Event
9915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00800000 00000000 Link Supervision Timeout Changed Event
9925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x01000000 00000000 Enhanced Flush Complete Event
9935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x04000000 00000000 User Passkey Notification Event
9945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x08000000 00000000 Keypress Notification Event
9955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x10000000 00000000 Remote Host Supported Features Notification Event
9965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x20000000 00000000 LE Meta Event
9975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */
9985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
9995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* the event mask for AMP controllers */
1000911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_EVENT_MASK_3_0 "\x00\x00\x00\x00\x00\x00\x3F\xFF"
10015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*  0x0000000000000000 No events specified (default)
10035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000001 Physical Link Complete Event
10045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000002 Channel Selected Event
10055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000004 Disconnection Physical Link Event
10065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000008 Physical Link Loss Early Warning Event
10075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000010 Physical Link Recovery Event
10085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000020 Logical Link Complete Event
10095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000040 Disconnection Logical Link Complete Event
10105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000080 Flow Spec Modify Complete Event
10115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000100 Number of Completed Data Blocks Event
10125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000200 AMP Start Test Event
10135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000400 AMP Test End Event
10145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000800 AMP Receiver Report Event
10155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000001000 Short Range Mode Change Complete Event
10165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000002000 AMP Status Change Event
10175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
10185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10193aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/* the event mask page 2 (CLB + CSA4) for BR/EDR controller */
1020911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_2_EVENT_MASK "\x00\x00\x00\x00\x00\x7F\xC0\x00"
10213aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/*  0x0000000000004000 Triggered Clock Capture Event
10223aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000008000 Sync Train Complete Event
10233aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000010000 Sync Train Received Event
10243aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000020000 Connectionless Broadcast Receive Event
10253aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000040000 Connectionless Broadcast Timeout Event
10263aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000080000 Truncated Page Complete Event
10273aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000100000 Salve Page Response Timeout Event
10283aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000200000 Connectionless Broadcast Channel Map Change Event
10293aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000400000 Inquiry Response Notification Event
10303aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach*/
1031d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (BLE_PRIVACY_SPT == TRUE)
1032444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* BLE event mask */
1033911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_EVENT_MASK_DEF "\x00\x00\x00\x00\x00\x00\x07\xff"
1034444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji#else
1035911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_EVENT_MASK_DEF "\x00\x00\x00\x00\x00\x00\x00\x7f"
1036444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji#endif
10375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1038ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Definitions for packet type masks (BT1.2 and BT2.0 definitions)
10395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1040911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_2_DH1 0x0002
1041911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_3_DH1 0x0004
1042911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DM1 0x0008
1043911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DH1 0x0010
1044911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_HV1 0x0020
1045911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_HV2 0x0040
1046911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_HV3 0x0080
1047911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_2_DH3 0x0100
1048911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_3_DH3 0x0200
1049911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DM3 0x0400
1050911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DH3 0x0800
1051911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_2_DH5 0x1000
1052911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_3_DH5 0x2000
1053911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DM5 0x4000
1054911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DH5 0x8000
10555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Packet type should be one of valid but at least one should be specified */
1057911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VALID_SCO_PKT_TYPE(t)                         \
1058911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((((t) &                                               \
1059911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson      ~(HCI_PKT_TYPES_MASK_HV1 | HCI_PKT_TYPES_MASK_HV2 | \
1060911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_HV3)) == 0)) &&                \
1061911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   ((t) != 0))
10625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Packet type should not be invalid and at least one should be specified */
1064911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VALID_ACL_PKT_TYPE(t)                                             \
1065911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((((t) &                                                                   \
1066911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson      ~(HCI_PKT_TYPES_MASK_DM1 | HCI_PKT_TYPES_MASK_DH1 |                     \
1067911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_DM3 | HCI_PKT_TYPES_MASK_DH3 |                     \
1068911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_DM5 | HCI_PKT_TYPES_MASK_DH5 |                     \
1069911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_NO_2_DH1 | HCI_PKT_TYPES_MASK_NO_3_DH1 |           \
1070911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_NO_2_DH3 | HCI_PKT_TYPES_MASK_NO_3_DH3 |           \
1071911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_NO_2_DH5 | HCI_PKT_TYPES_MASK_NO_3_DH5)) == 0)) && \
1072911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   (((t) & (HCI_PKT_TYPES_MASK_DM1 | HCI_PKT_TYPES_MASK_DH1 |                 \
1073911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson            HCI_PKT_TYPES_MASK_DM3 | HCI_PKT_TYPES_MASK_DH3 |                 \
1074911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson            HCI_PKT_TYPES_MASK_DM5 | HCI_PKT_TYPES_MASK_DH5)) != 0))
10755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1077ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Definitions for eSCO packet type masks (BT1.2 and BT2.0 definitions)
10785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1079911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_HV1 0x0001
1080911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_HV2 0x0002
1081911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_HV3 0x0004
1082911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_EV3 0x0008
1083911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_EV4 0x0010
1084911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_EV5 0x0020
1085911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_NO_2_EV3 0x0040
1086911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_NO_3_EV3 0x0080
1087911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_NO_2_EV5 0x0100
1088911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_PKT_TYPES_MASK_NO_3_EV5 0x0200
10895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10909ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Packet type should be one of valid but at least one should be specified for
10919ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 1.2 */
1092911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VALID_ESCO_PKT_TYPE(t)                                  \
1093911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((((t) &                                                         \
1094911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson      ~(HCI_ESCO_PKT_TYPES_MASK_EV3 | HCI_ESCO_PKT_TYPES_MASK_EV4 | \
1095911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_ESCO_PKT_TYPES_MASK_EV5)) == 0)) &&                     \
1096911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   ((t) != 0))
1097911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1098911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VALID_ESCO_SCOPKT_TYPE(t)                               \
1099911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((((t) &                                                         \
1100911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson      ~(HCI_ESCO_PKT_TYPES_MASK_HV1 | HCI_ESCO_PKT_TYPES_MASK_HV2 | \
1101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_ESCO_PKT_TYPES_MASK_HV3)) == 0)) &&                     \
1102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   ((t) != 0))
1103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VALID_SCO_ALL_PKT_TYPE(t)                                         \
1105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((((t) &                                                                   \
1106911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson      ~(HCI_ESCO_PKT_TYPES_MASK_HV1 | HCI_ESCO_PKT_TYPES_MASK_HV2 |           \
1107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_ESCO_PKT_TYPES_MASK_HV3 | HCI_ESCO_PKT_TYPES_MASK_EV3 |           \
1108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_ESCO_PKT_TYPES_MASK_EV4 | HCI_ESCO_PKT_TYPES_MASK_EV5)) == 0)) && \
1109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   ((t) != 0))
11105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1112ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Define parameters to allow role switch during create connection
11135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CR_CONN_NOT_ALLOW_SWITCH 0x00
1115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CR_CONN_ALLOW_SWITCH 0x01
11165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1118ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Hold Mode command destination
11195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HOLD_MODE_DEST_LOCAL_DEVICE 0x00
1121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HOLD_MODE_DEST_RMT_DEVICE 0x01
11225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1124ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Definitions for different HCI parameters
11255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PER_INQ_MIN_MAX_PERIOD 0x0003
1127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PER_INQ_MAX_MAX_PERIOD 0xFFFF
1128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PER_INQ_MIN_MIN_PERIOD 0x0002
1129911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PER_INQ_MAX_MIN_PERIOD 0xFFFE
11305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_INQUIRY_LENGTH 0x30
11325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1133911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_INQ_LAP 0x9E8B00
1134911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_INQ_LAP 0x9E8B3F
11355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCI role defenitions */
1137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_MASTER 0x00
1138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_SLAVE 0x01
1139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_UNKNOWN 0xff
11405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCI mode defenitions */
1142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_ACTIVE 0x00
1143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_HOLD 0x01
1144911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_SNIFF 0x02
1145911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_PARK 0x03
11465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCI Flow Control Mode defenitions */
1148911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PACKET_BASED_FC_MODE 0x00
1149911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLOCK_BASED_FC_MODE 0x01
11505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define Packet types as requested by the Host */
1152911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_NONE 0x0000
1153911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DM1 0x0008
1154911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DH1 0x0010
1155911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_AUX1 0x0200
1156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DM3 0x0400
1157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DH3 0x0800
1158911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DM5 0x4000
1159911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DH5 0x8000
11605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define key type in the Master Link Key command */
1162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USE_SEMI_PERMANENT_KEY 0x00
1163911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USE_TEMPORARY_KEY 0x01
11645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page scan period modes */
1166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_R0 0x00
1167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_R1 0x01
1168911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_R2 0x02
11695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define limits for page scan repetition modes */
1171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_R1_LIMIT 0x0800
1172911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_R2_LIMIT 0x1000
11735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page scan period modes */
1175911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_PER_MODE_P0 0x00
1176911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_PER_MODE_P1 0x01
1177911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_PER_MODE_P2 0x02
11785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page scan modes */
1180911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MANDATARY_PAGE_SCAN_MODE 0x00
1181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OPTIONAL_PAGE_SCAN_MODE1 0x01
1182911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OPTIONAL_PAGE_SCAN_MODE2 0x02
1183911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OPTIONAL_PAGE_SCAN_MODE3 0x03
11845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page and inquiry scan types */
1186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SCAN_TYPE_STANDARD 0x00
1187911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SCAN_TYPE_INTERLACED 0x01 /* 1.2 devices or later */
1188911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_SCAN_TYPE HCI_SCAN_TYPE_STANDARD
11895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for quality of service service types */
1191911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SERVICE_NO_TRAFFIC 0x00
1192911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SERVICE_BEST_EFFORT 0x01
1193911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SERVICE_GUARANTEED 0x02
11945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1195911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_LATENCY_DO_NOT_CARE 0xFFFFFFFF
1196911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_DELAY_DO_NOT_CARE 0xFFFFFFFF
11975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Flow Specification */
11995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FLOW_SPEC_LATENCY_DO_NOT_CARE 0xFFFFFFFF
12005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for AFH Channel Map */
1202911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AFH_CHANNEL_MAP_LEN 10
12035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Extended Inquiry Response */
1205911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_INQ_RESPONSE_LEN 240
1206911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_FLAGS_TYPE BT_EIR_FLAGS_TYPE
1207911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_MORE_16BITS_UUID_TYPE BT_EIR_MORE_16BITS_UUID_TYPE
1208911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_COMPLETE_16BITS_UUID_TYPE BT_EIR_COMPLETE_16BITS_UUID_TYPE
1209911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_MORE_32BITS_UUID_TYPE BT_EIR_MORE_32BITS_UUID_TYPE
1210911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_COMPLETE_32BITS_UUID_TYPE BT_EIR_COMPLETE_32BITS_UUID_TYPE
1211911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_MORE_128BITS_UUID_TYPE BT_EIR_MORE_128BITS_UUID_TYPE
1212911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_COMPLETE_128BITS_UUID_TYPE BT_EIR_COMPLETE_128BITS_UUID_TYPE
1213911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SHORTENED_LOCAL_NAME_TYPE BT_EIR_SHORTENED_LOCAL_NAME_TYPE
1214911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_COMPLETE_LOCAL_NAME_TYPE BT_EIR_COMPLETE_LOCAL_NAME_TYPE
1215911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_TX_POWER_LEVEL_TYPE BT_EIR_TX_POWER_LEVEL_TYPE
1216911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_MANUFACTURER_SPECIFIC_TYPE BT_EIR_MANUFACTURER_SPECIFIC_TYPE
1217911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SERVICE_DATA_TYPE BT_EIR_SERVICE_DATA_TYPE
1218911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SERVICE_DATA_16BITS_UUID_TYPE \
1219911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  BT_EIR_SERVICE_DATA_16BITS_UUID_TYPE
1220911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SERVICE_DATA_32BITS_UUID_TYPE \
1221911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  BT_EIR_SERVICE_DATA_32BITS_UUID_TYPE
1222911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SERVICE_DATA_128BITS_UUID_TYPE \
1223911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  BT_EIR_SERVICE_DATA_128BITS_UUID_TYPE
1224911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_OOB_BD_ADDR_TYPE BT_EIR_OOB_BD_ADDR_TYPE
1225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_OOB_COD_TYPE BT_EIR_OOB_COD_TYPE
1226911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_OOB_SSP_HASH_C_TYPE BT_EIR_OOB_SSP_HASH_C_TYPE
1227911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_OOB_SSP_RAND_R_TYPE BT_EIR_OOB_SSP_RAND_R_TYPE
12285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Write Simple Pairing Mode */
1230911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SP_MODE_UNDEFINED 0x00
1231911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SP_MODE_ENABLED 0x01
12325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Write Simple Pairing Debug Mode */
1234911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SPD_MODE_DISABLED 0x00
1235911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SPD_MODE_ENABLED 0x01
12365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1237444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* Definitions for Write Secure Connections Host Support */
1238911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SC_MODE_DISABLED 0x00
1239911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SC_MODE_ENABLED 0x01
1240444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
12415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for IO Capability Response/Command */
1242911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_DISPLAY_ONLY 0x00
1243911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_DISPLAY_YESNO 0x01
1244911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_KEYBOARD_ONLY 0x02
1245911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_NO_IO 0x03
12465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1247911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OOB_AUTH_DATA_NOT_PRESENT 0x00
1248911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OOB_REM_AUTH_DATA_PRESENT 0x01
12495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1250911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MITM_PROTECT_NOT_REQUIRED 0x00
1251911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MITM_PROTECT_REQUIRED 0x01
12525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Policy settings status */
1254911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISABLE_ALL_LM_MODES 0x0000
1255911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_MASTER_SLAVE_SWITCH 0x0001
1256911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_HOLD_MODE 0x0002
1257911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_SNIFF_MODE 0x0004
1258911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_PARK_MODE 0x0008
12595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* By default allow switch, because host can not allow that */
12615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* that until he created the connection */
1262911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_POLICY_SETTINGS HCI_DISABLE_ALL_LM_MODES
12635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Filters that are sent in set filter command */
1265911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_TYPE_CLEAR_ALL 0x00
1266911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_INQUIRY_RESULT 0x01
1267911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_CONNECTION_SETUP 0x02
12685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1269911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_COND_NEW_DEVICE 0x00
1270911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_COND_DEVICE_CLASS 0x01
1271911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_COND_BD_ADDR 0x02
12725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1273911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DO_NOT_AUTO_ACCEPT_CONNECT 1
12749ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* role switch disabled */
1275911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DO_AUTO_ACCEPT_CONNECT 2
12769ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* role switch enabled (1.1 errata 1115) */
1277911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DO_AUTO_ACCEPT_CONNECT_RS 3
12785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Auto accept flags */
1280911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTO_ACCEPT_OFF 0x00
12815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_AUTO_ACCEPT_ACL_CONNECTIONS 0x01
12825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_AUTO_ACCEPT_SCO_CONNECTIONS 0x02
12835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* PIN type */
1285911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_TYPE_VARIABLE 0
1286911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_TYPE_FIXED 1
12875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Loopback Modes */
1289911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_MODE_DISABLED 0
1290911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_MODE_LOCAL 1
1291911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_MODE_REMOTE 2
12925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1293911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define SLOTS_PER_10MS 16 /* 0.625 ms slots in a 10 ms tick */
12945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Maximum connection accept timeout in 0.625msec */
1296911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_CONN_ACCEPT_TOUT 0xB540 /* 29 sec */
1297911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_CONN_ACCEPT_TOUT 0x1F40 /* 5 sec */
12985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page timeout is used in LC only and LC is counting down slots not using OS */
1300911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_PAGE_TOUT 0x2000 /* 5.12 sec (in slots) */
13015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Scan enable flags */
1303911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NO_SCAN_ENABLED 0x00
1304911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_SCAN_ENABLED 0x01
1305911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_ENABLED 0x02
13065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Pagescan timer definitions in 0.625 ms */
1308911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_PAGESCAN_INTERVAL 0x12   /* 11.25 ms */
1309911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_PAGESCAN_INTERVAL 0x1000 /* 2.56 sec */
1310911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_PAGESCAN_INTERVAL 0x0800 /* 1.28 sec */
13115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Parameter for pagescan window is passed to LC and is kept in slots */
1313911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_PAGESCAN_WINDOW 0x11   /* 10.625 ms */
1314911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_PAGESCAN_WINDOW 0x1000 /* 2.56  sec */
1315911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_PAGESCAN_WINDOW 0x12   /* 11.25 ms  */
13165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Inquiryscan timer definitions in 0.625 ms */
1318911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_INQUIRYSCAN_INTERVAL 0x12   /* 11.25 ms */
1319911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_INQUIRYSCAN_INTERVAL 0x1000 /* 2.56 sec */
1320911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_INQUIRYSCAN_INTERVAL 0x1000 /* 2.56 sec */
13215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Parameter for inquiryscan window is passed to LC and is kept in slots */
1323911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_INQUIRYSCAN_WINDOW 0x11   /* 10.625 ms */
1324911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_INQUIRYSCAN_WINDOW 0x1000 /* 2.56 sec */
1325911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_INQUIRYSCAN_WINDOW 0x12   /* 11.25 ms */
13265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Encryption modes */
1328911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCRYPT_MODE_DISABLED 0x00
13295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_ENCRYPT_MODE_POINT_TO_POINT 0x01
1330911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCRYPT_MODE_ALL 0x02
13315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Voice settings */
1333911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_CODING_LINEAR 0x0000 /* 0000000000 */
1334911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_CODING_U_LAW 0x0100  /* 0100000000 */
1335911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_CODING_A_LAW 0x0200  /* 1000000000 */
1336911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_CODING_MASK 0x0300   /* 1100000000 */
13375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1338911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_DATA_FMT_1S_COMPLEMENT 0x0000  /* 0000000000 */
1339911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_DATA_FMT_2S_COMPLEMENT 0x0040  /* 0001000000 */
13405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_INP_DATA_FMT_SIGN_MAGNITUDE 0x0080 /* 0010000000 */
1341911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_DATA_FMT_UNSIGNED 0x00c0       /* 0011000000 */
1342911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_DATA_FMT_MASK 0x00c0           /* 0011000000 */
13435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1344911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_SAMPLE_SIZE_8BIT 0x0000  /* 0000000000 */
1345911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_SAMPLE_SIZE_16BIT 0x0020 /* 0000100000 */
1346911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_SAMPLE_SIZE_MASK 0x0020  /* 0000100000 */
13475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_INP_LINEAR_PCM_BIT_POS_MASK 0x001c /* 0000011100 */
13495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_INP_LINEAR_PCM_BIT_POS_OFFS 2
13505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1351911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_CVSD 0x0000     /* 0000000000 */
1352911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_U_LAW 0x0001    /* 0000000001 */
1353911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_A_LAW 0x0002    /* 0000000010 */
1354911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_TRANSPNT 0x0003 /* 0000000011 */
1355911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_MASK 0x0003     /* 0000000011 */
13565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* default                                        0001100000 */
1358911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_VOICE_SETTINGS                          \
1359911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (HCI_INP_CODING_LINEAR | HCI_INP_DATA_FMT_2S_COMPLEMENT | \
1360911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_INP_SAMPLE_SIZE_16BIT | HCI_AIR_CODING_FORMAT_CVSD)
1361911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1362911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CVSD_SUPPORTED(x) \
1363911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)&HCI_AIR_CODING_FORMAT_MASK) == HCI_AIR_CODING_FORMAT_CVSD)
1364911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_U_LAW_SUPPORTED(x) \
1365911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)&HCI_AIR_CODING_FORMAT_MASK) == HCI_AIR_CODING_FORMAT_U_LAW)
1366911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_A_LAW_SUPPORTED(x) \
1367911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)&HCI_AIR_CODING_FORMAT_MASK) == HCI_AIR_CODING_FORMAT_A_LAW)
1368911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TRANSPNT_SUPPORTED(x) \
1369911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)&HCI_AIR_CODING_FORMAT_MASK) == HCI_AIR_CODING_FORMAT_TRANSPNT)
13705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Retransmit timer definitions in 0.625 */
1372911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_AUTO_FLUSH_TOUT 0x07FF
1373911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_AUTO_FLUSH_TOUT 0 /* No auto flush */
13745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Broadcast retransmitions */
1376911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_NUM_BCAST_RETRAN 1
13775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define broadcast data types as passed in the hci data packet */
1379911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_POINT_TO_POINT 0x00
1380911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_ACTIVE_BCAST 0x01
1381911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_PICONET_BCAST 0x02
13825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Hold mode activity */
1384911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAINTAIN_CUR_POWER_STATE 0x00
1385911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUSPEND_PAGE_SCAN 0x01
1386911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUSPEND_INQUIRY_SCAN 0x02
1387911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUSPEND_PERIODIC_INQUIRIES 0x04
13885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Default Link Supervision timeoout */
1390911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_INACT_TOUT 0x7D00     /* BR/EDR (20 seconds) */
1391911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_AMP_INACT_TOUT 0x3E80 /* AMP    (10 seconds) */
13925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Read transmit power level parameter */
1394911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CURRENT 0x00
1395911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_MAXIMUM 0x01
13965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Link types for connection complete event */
1398911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_TYPE_SCO 0x00
1399911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_TYPE_ACL 0x01
1400911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_TYPE_ESCO 0x02
14015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Link Key Notification Event (Key Type) definitions */
1403911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_COMBINATION 0x00
1404911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_LOCAL_UNIT 0x01
1405911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_REMOTE_UNIT 0x02
1406911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_DEBUG_COMB 0x03
1407911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_UNAUTH_COMB 0x04
1408911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_AUTH_COMB 0x05
1409911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_CHANGED_COMB 0x06
1410444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji#define HCI_LKEY_TYPE_UNAUTH_COMB_P_256 0x07
1411911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_AUTH_COMB_P_256 0x08
14125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal definitions - not used over HCI */
1414911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_AMP_WIFI 0x80
1415911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_AMP_UWB 0x81
1416911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_UNKNOWN 0xff
14175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Read Local Version HCI Version return values (Command Complete Event) */
1419911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VERSION_1_0B 0x00
1420911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VERSION_1_1 0x01
14215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define an invalid value for a handle */
1423911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INVALID_HANDLE 0xFFFF
14245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define max ammount of data in the HCI command */
1426911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_SIZE 255
14275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the preamble length for all HCI Commands.
1429ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * This is 2-bytes for opcode and 1 byte for length
14305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1431911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIC_PREAMBLE_SIZE 3
14325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the preamble length for all HCI Events
1434ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * This is 1-byte for opcode and 1 byte for length
14355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1436911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIE_PREAMBLE_SIZE 2
1437911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SCO_PREAMBLE_SIZE 3
1438911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_PREAMBLE_SIZE 4
14395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* local Bluetooth controller id for AMP HCI */
1441911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LOCAL_BR_EDR_CONTROLLER_ID 0
14425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* controller id types for AMP HCI */
1444911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONTROLLER_TYPE_BR_EDR 0
1445911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONTROLLER_TYPE_802_11 1
1446911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONTROLLER_TYPE_ECMA 2
1447911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_CONTROLLER_TYPES 3
14485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1449ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*  ConnectionLess Broadcast */
1450911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_DISABLE 0x00
1451911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_ENABLE 0x01
14525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1453ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* ConnectionLess Broadcast Data fragment */
1454911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_FRAGMENT_CONT 0x00
1455911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_FRAGMENT_START 0x01
1456911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_FRAGMENT_END 0x02
1457911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_FRAGMENT_SINGLE 0x03
14585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AMP Controller Status codes
14605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1461911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_PHYSICALLY_DOWN 0
1462911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_USABLE_BY_BT 1
1463911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_UNUSABLE_FOR_BT 2
1464911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_LOW_CAP_FOR_BT 3
1465911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_MED_CAP_FOR_BT 4
1466911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_HIGH_CAP_FOR_BT 5
1467911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_FULL_CAP_FOR_BT 6
14685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1469911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_AMP_STATUS_TYPES 7
14705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the extended flow specification fields used by AMP */
1472911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsontypedef struct {
1473911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint8_t id;
1474911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint8_t stype;
1475911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint16_t max_sdu_size;
1476911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint32_t sdu_inter_time;
1477911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint32_t access_latency;
1478911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint32_t flush_timeout;
14795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tHCI_EXT_FLOW_SPEC;
14805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCI message type definitions (for H4 messages) */
1482911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_COMMAND 1
1483911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_ACL_DATA 2
1484911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_SCO_DATA 3
1485911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_EVENT 4
1486911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_LM_DIAG 7
1487911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_NFC 16
14885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCIT_LM_DIAG_LENGTH 63
14905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Parameter information for HCI_BRCM_SET_ACL_PRIORITY */
1492911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BRCM_ACL_PRIORITY_PARAM_SIZE 3
1493911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BRCM_ACL_PRIORITY_LOW 0x00
1494911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BRCM_ACL_PRIORITY_HIGH 0xFF
1495911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BRCM_SET_ACL_PRIORITY (0x0057 | HCI_GRP_VENDOR_SPECIFIC)
14965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define values for LMP Test Control parameters
1498ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Test Scenario, Hopping Mode, Power Control Mode
14995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1500911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_PAUSE 0
1501911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_TXTEST_0 1
1502911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_TXTEST_1 2
1503911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_TXTEST_1010 3
15045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LMP_TESTCTL_TESTSC_PSRND_BITSEQ 4
15055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LMP_TESTCTL_TESTSC_CLOSEDLB_ACL 5
15065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LMP_TESTCTL_TESTSC_CLOSEDLB_SCO 6
1507911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_ACL_NOWHIT 7
1508911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_SCO_NOWHIT 8
1509911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_TXTEST_11110000 9
15105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LMP_TESTCTL_TESTSC_EXITTESTMODE 255
15115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1512911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_RXTX1FREQ 0
1513911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_HOP_EURUSA 1
1514911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_HOP_JAPAN 2
1515911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_HOP_FRANCE 3
1516911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_HOP_SPAIN 4
1517911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_REDUCED_HOP 5
15185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1519911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_POWCTL_FIXEDTX_OP 0
1520911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_POWCTL_ADAPTIVE 1
15215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1522c772b4bb7f15123ef54638a91eb1b64024f8aa7fZach Johnson// TODO(zachoverflow): remove this once broadcom specific hacks are removed
1523911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_COMPID_BROADCOM 15
1524c772b4bb7f15123ef54638a91eb1b64024f8aa7fZach Johnson
15255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1526ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Define the packet types in the packet header, and a couple extra
15275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1528911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_NULL 0x00
1529911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_POLL 0x01
1530911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_FHS 0x02
1531911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DM1 0x03
15325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1533911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DH1 0x04
1534911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_HV1 0x05
1535911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_HV2 0x06
1536911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_HV3 0x07
1537911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DV 0x08
1538911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_AUX1 0x09
15395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1540911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DM3 0x0a
1541911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DH3 0x0b
15425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1543911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DM5 0x0e
1544911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DH5 0x0f
15455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1546911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_ID 0x10 /* Internally used packet types */
1547911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_BAD 0x11
1548911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_NONE 0x12
15495738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
15505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1551ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Define packet size
15525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1553911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DM1_PACKET_SIZE 17
1554911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DH1_PACKET_SIZE 27
1555911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DM3_PACKET_SIZE 121
1556911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DH3_PACKET_SIZE 183
1557911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DM5_PACKET_SIZE 224
1558911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DH5_PACKET_SIZE 339
1559911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUX1_PACKET_SIZE 29
1560911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV1_PACKET_SIZE 10
1561911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV2_PACKET_SIZE 20
1562911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV3_PACKET_SIZE 30
1563911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DV_PACKET_SIZE 9
1564911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR2_DH1_PACKET_SIZE 54
1565911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR2_DH3_PACKET_SIZE 367
1566911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR2_DH5_PACKET_SIZE 679
1567911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR3_DH1_PACKET_SIZE 83
1568911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR3_DH3_PACKET_SIZE 552
1569911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR3_DH5_PACKET_SIZE 1021
15705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
15713aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/* Feature Pages */
1572f6ac424a81bad038bbf9a90c7c569dba81978f51Venkata Jagadeesh Garaga#define HCI_EXT_FEATURES_PAGE_MAX 3  // Parse feature pages 0-3
15733aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
1574911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BYTES_PER_PAGE 8
15753aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
1576911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURES_KNOWN(x) \
1577911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)[0] | (x)[1] | (x)[2] | (x)[3] | (x)[4] | (x)[5] | (x)[6] | (x)[7]) != 0)
15785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
15793aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/*
1580ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   LMP features encoding - page 0
15813aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach*/
15825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_3_SLOT_PACKETS_MASK 0x01
1583911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_3_SLOT_PACKETS_OFF 0
1584911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_3_SLOT_PACKETS_SUPPORTED(x) \
1585911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_3_SLOT_PACKETS_OFF] & HCI_FEATURE_3_SLOT_PACKETS_MASK)
15865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
15875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_5_SLOT_PACKETS_MASK 0x02
1588911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_5_SLOT_PACKETS_OFF 0
1589911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_5_SLOT_PACKETS_SUPPORTED(x) \
1590911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_5_SLOT_PACKETS_OFF] & HCI_FEATURE_5_SLOT_PACKETS_MASK)
1591911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1592911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENCRYPTION_MASK 0x04
1593911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENCRYPTION_OFF 0
1594911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCRYPTION_SUPPORTED(x) \
1595911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ENCRYPTION_OFF] & HCI_FEATURE_ENCRYPTION_MASK)
1596911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1597911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SLOT_OFFSET_MASK 0x08
1598911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SLOT_OFFSET_OFF 0
1599911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SLOT_OFFSET_SUPPORTED(x) \
1600911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SLOT_OFFSET_OFF] & HCI_FEATURE_SLOT_OFFSET_MASK)
1601911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1602911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_TIMING_ACC_MASK 0x10
1603911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_TIMING_ACC_OFF 0
1604911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TIMING_ACC_SUPPORTED(x) \
1605911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_TIMING_ACC_OFF] & HCI_FEATURE_TIMING_ACC_MASK)
1606911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1607911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SWITCH_MASK 0x20
1608911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SWITCH_OFF 0
1609911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SWITCH_SUPPORTED(x) \
1610911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SWITCH_OFF] & HCI_FEATURE_SWITCH_MASK)
1611911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1612911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HOLD_MODE_MASK 0x40
1613911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HOLD_MODE_OFF 0
1614911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOLD_MODE_SUPPORTED(x) \
1615911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_HOLD_MODE_OFF] & HCI_FEATURE_HOLD_MODE_MASK)
1616911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1617911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SNIFF_MODE_MASK 0x80
1618911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SNIFF_MODE_OFF 0
1619911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_MODE_SUPPORTED(x) \
1620911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SNIFF_MODE_OFF] & HCI_FEATURE_SNIFF_MODE_MASK)
1621911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1622911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_PARK_MODE_MASK 0x01
1623911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_PARK_MODE_OFF 1
1624911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PARK_MODE_SUPPORTED(x) \
1625911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_PARK_MODE_OFF] & HCI_FEATURE_PARK_MODE_MASK)
1626911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1627911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_RSSI_MASK 0x02
1628911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_RSSI_OFF 1
1629911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RSSI_SUPPORTED(x) \
1630911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_RSSI_OFF] & HCI_FEATURE_RSSI_MASK)
1631911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1632911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_CQM_DATA_RATE_MASK 0x04
1633911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_CQM_DATA_RATE_OFF 1
1634911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CQM_DATA_RATE_SUPPORTED(x) \
1635911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_CQM_DATA_RATE_OFF] & HCI_FEATURE_CQM_DATA_RATE_MASK)
1636911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1637911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SCO_LINK_MASK 0x08
1638911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SCO_LINK_OFF 1
1639911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SCO_LINK_SUPPORTED(x) \
1640911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SCO_LINK_OFF] & HCI_FEATURE_SCO_LINK_MASK)
1641911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1642911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HV2_PACKETS_MASK 0x10
1643911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HV2_PACKETS_OFF 1
1644911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV2_PACKETS_SUPPORTED(x) \
1645911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_HV2_PACKETS_OFF] & HCI_FEATURE_HV2_PACKETS_MASK)
1646911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1647911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HV3_PACKETS_MASK 0x20
1648911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HV3_PACKETS_OFF 1
1649911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV3_PACKETS_SUPPORTED(x) \
1650911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_HV3_PACKETS_OFF] & HCI_FEATURE_HV3_PACKETS_MASK)
1651911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1652911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_U_LAW_MASK 0x40
1653911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_U_LAW_OFF 1
1654911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_U_LAW_SUPPORTED(x) \
1655911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_U_LAW_OFF] & HCI_FEATURE_U_LAW_MASK)
1656911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1657911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_A_LAW_MASK 0x80
1658911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_A_LAW_OFF 1
1659911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_A_LAW_SUPPORTED(x) \
1660911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_A_LAW_OFF] & HCI_FEATURE_A_LAW_MASK)
1661911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1662911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_CVSD_MASK 0x01
1663911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_CVSD_OFF 2
1664911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_CVSD_SUPPORTED(x) \
1665911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_CVSD_OFF] & HCI_FEATURE_CVSD_MASK)
1666911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1667911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_PAGING_SCHEME_MASK 0x02
1668911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_PAGING_SCHEME_OFF 2
1669911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGING_SCHEME_SUPPORTED(x) \
1670911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_PAGING_SCHEME_OFF] & HCI_FEATURE_PAGING_SCHEME_MASK)
1671911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1672911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_POWER_CTRL_MASK 0x04
1673911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_POWER_CTRL_OFF 2
1674911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_POWER_CTRL_SUPPORTED(x) \
1675911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_POWER_CTRL_OFF] & HCI_FEATURE_POWER_CTRL_MASK)
1676911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1677911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_TRANSPNT_MASK 0x08
1678911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_TRANSPNT_OFF 2
1679911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_TRANSPNT_SUPPORTED(x) \
1680911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_TRANSPNT_OFF] & HCI_FEATURE_TRANSPNT_MASK)
1681911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1682911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_FLOW_CTRL_LAG_MASK 0x70
1683911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_FLOW_CTRL_LAG_OFF 2
1684911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_CTRL_LAG_VALUE(x) \
1685911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)[HCI_FEATURE_FLOW_CTRL_LAG_OFF] & HCI_FEATURE_FLOW_CTRL_LAG_MASK) >> 4)
1686911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1687911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BROADCAST_ENC_MASK 0x80
1688911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BROADCAST_ENC_OFF 2
1689911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_BCAST_ENC_SUPPORTED(x) \
1690911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_BROADCAST_ENC_OFF] & HCI_FEATURE_BROADCAST_ENC_MASK)
1691911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1692911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SCATTER_MODE_MASK 0x01
1693911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SCATTER_MODE_OFF 3
1694911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_SCATTER_MODE_SUPPORTED(x) \
1695911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SCATTER_MODE_OFF] & HCI_FEATURE_SCATTER_MODE_MASK)
1696911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1697911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ACL_2MPS_MASK 0x02
1698911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ACL_2MPS_OFF 3
1699911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR_ACL_2MPS_SUPPORTED(x) \
1700911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EDR_ACL_2MPS_OFF] & HCI_FEATURE_EDR_ACL_2MPS_MASK)
1701911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1702911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ACL_3MPS_MASK 0x04
1703911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ACL_3MPS_OFF 3
1704911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR_ACL_3MPS_SUPPORTED(x) \
1705911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EDR_ACL_3MPS_OFF] & HCI_FEATURE_EDR_ACL_3MPS_MASK)
1706911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1707911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENHANCED_INQ_MASK 0x08
1708911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENHANCED_INQ_OFF 3
1709911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENHANCED_INQ_SUPPORTED(x) \
1710911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ENHANCED_INQ_OFF] & HCI_FEATURE_ENHANCED_INQ_MASK)
1711911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1712911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INTERLACED_INQ_SCAN_MASK 0x10
1713911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INTERLACED_INQ_SCAN_OFF 3
1714911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_INTERLACED_INQ_SCAN_SUPPORTED(x) \
1715911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_INTERLACED_INQ_SCAN_OFF] &    \
1716911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_FEATURE_INTERLACED_INQ_SCAN_MASK)
1717911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1718911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INTERLACED_PAGE_SCAN_MASK 0x20
1719911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INTERLACED_PAGE_SCAN_OFF 3
1720911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_INTERLACED_PAGE_SCAN_SUPPORTED(x) \
1721911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_INTERLACED_PAGE_SCAN_OFF] &    \
1722911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_FEATURE_INTERLACED_PAGE_SCAN_MASK)
1723911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1724911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INQ_RSSI_MASK 0x40
1725911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INQ_RSSI_OFF 3
1726911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_INQ_RSSI_SUPPORTED(x) \
1727911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_INQ_RSSI_OFF] & HCI_FEATURE_INQ_RSSI_MASK)
1728911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1729911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV3_MASK 0x80
1730911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV3_OFF 3
1731911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_EV3_SUPPORTED(x) \
1732911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ESCO_EV3_OFF] & HCI_FEATURE_ESCO_EV3_MASK)
1733911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1734911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV4_MASK 0x01
1735911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV4_OFF 4
1736911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_EV4_SUPPORTED(x) \
1737911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ESCO_EV4_OFF] & HCI_FEATURE_ESCO_EV4_MASK)
1738911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1739911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV5_MASK 0x02
1740911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV5_OFF 4
1741911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_EV5_SUPPORTED(x) \
1742911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ESCO_EV5_OFF] & HCI_FEATURE_ESCO_EV5_MASK)
1743911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1744911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ABSENCE_MASKS_MASK 0x04
1745911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ABSENCE_MASKS_OFF 4
1746911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_ABSENCE_MASKS_SUPPORTED(x) \
1747911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ABSENCE_MASKS_OFF] & HCI_FEATURE_ABSENCE_MASKS_MASK)
1748911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1749911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CAP_SLAVE_MASK 0x08
1750911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CAP_SLAVE_OFF 4
1751911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_AFH_CAP_SLAVE_SUPPORTED(x) \
1752911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_AFH_CAP_SLAVE_OFF] & HCI_FEATURE_AFH_CAP_SLAVE_MASK)
17535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_AFH_CLASS_SLAVE_MASK 0x10
1755911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CLASS_SLAVE_OFF 4
1756911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_AFH_CLASS_SLAVE_SUPPORTED(x) \
1757911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_AFH_CLASS_SLAVE_OFF] & HCI_FEATURE_AFH_CLASS_SLAVE_MASK)
17585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1759911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BREDR_NOT_SPT_MASK 0x20
1760911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BREDR_NOT_SPT_OFF 4
1761911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BREDR_NOT_SPT_SUPPORTED(x) \
1762911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_BREDR_NOT_SPT_OFF] & HCI_FEATURE_BREDR_NOT_SPT_MASK)
1763ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
1764911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_LE_SPT_MASK 0x40
1765911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_LE_SPT_OFF 4
1766911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SPT_SUPPORTED(x) \
1767911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_LE_SPT_OFF] & HCI_FEATURE_LE_SPT_MASK)
17685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_3_SLOT_EDR_ACL_MASK 0x80
1770911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_3_SLOT_EDR_ACL_OFF 4
1771911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_3_SLOT_EDR_ACL_SUPPORTED(x) \
1772911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_3_SLOT_EDR_ACL_OFF] & HCI_FEATURE_3_SLOT_EDR_ACL_MASK)
17735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_5_SLOT_EDR_ACL_MASK 0x01
1775911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_5_SLOT_EDR_ACL_OFF 5
1776911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_5_SLOT_EDR_ACL_SUPPORTED(x) \
1777911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_5_SLOT_EDR_ACL_OFF] & HCI_FEATURE_5_SLOT_EDR_ACL_MASK)
17785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_SNIFF_SUB_RATE_MASK 0x02
1780911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SNIFF_SUB_RATE_OFF 5
1781911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_SUB_RATE_SUPPORTED(x) \
1782911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SNIFF_SUB_RATE_OFF] & HCI_FEATURE_SNIFF_SUB_RATE_MASK)
17835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_ATOMIC_ENCRYPT_MASK 0x04
1785911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ATOMIC_ENCRYPT_OFF 5
1786911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ATOMIC_ENCRYPT_SUPPORTED(x) \
1787911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ATOMIC_ENCRYPT_OFF] & HCI_FEATURE_ATOMIC_ENCRYPT_MASK)
17885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1789911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CAP_MASTR_MASK 0x08
1790911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CAP_MASTR_OFF 5
1791911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_AFH_CAP_MASTR_SUPPORTED(x) \
1792911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_AFH_CAP_MASTR_OFF] & HCI_FEATURE_AFH_CAP_MASTR_MASK)
17935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_AFH_CLASS_MASTR_MASK 0x10
1795911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CLASS_MASTR_OFF 5
1796911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_AFH_CLASS_MASTR_SUPPORTED(x) \
1797911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_AFH_CLASS_MASTR_OFF] & HCI_FEATURE_AFH_CLASS_MASTR_MASK)
17985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1799911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ESCO_2MPS_MASK 0x20
1800911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ESCO_2MPS_OFF 5
1801911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR_ESCO_2MPS_SUPPORTED(x) \
1802911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EDR_ESCO_2MPS_OFF] & HCI_FEATURE_EDR_ESCO_2MPS_MASK)
18035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1804911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ESCO_3MPS_MASK 0x40
1805911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ESCO_3MPS_OFF 5
1806911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR_ESCO_3MPS_SUPPORTED(x) \
1807911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EDR_ESCO_3MPS_OFF] & HCI_FEATURE_EDR_ESCO_3MPS_MASK)
18085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_3_SLOT_EDR_ESCO_MASK 0x80
1810911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_3_SLOT_EDR_ESCO_OFF 5
1811911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_3_SLOT_EDR_ESCO_SUPPORTED(x) \
1812911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_3_SLOT_EDR_ESCO_OFF] & HCI_FEATURE_3_SLOT_EDR_ESCO_MASK)
18135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1814911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EXT_INQ_RSP_MASK 0x01
1815911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EXT_INQ_RSP_OFF 6
1816911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_INQ_RSP_SUPPORTED(x) \
1817911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EXT_INQ_RSP_OFF] & HCI_FEATURE_EXT_INQ_RSP_MASK)
18185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1819ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if 1 /* TOKYO spec definition */
1820ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define HCI_FEATURE_SIMUL_LE_BREDR_MASK 0x02
1821911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SIMUL_LE_BREDR_OFF 6
1822911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SIMUL_LE_BREDR_SUPPORTED(x) \
1823911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SIMUL_LE_BREDR_OFF] & HCI_FEATURE_SIMUL_LE_BREDR_MASK)
1824ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
1825ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#else
18265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_ANUM_PIN_AWARE_MASK 0x02
1827911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ANUM_PIN_AWARE_OFF 6
1828911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ANUM_PIN_AWARE_SUPPORTED(x) \
1829911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ANUM_PIN_AWARE_OFF] & HCI_FEATURE_ANUM_PIN_AWARE_MASK)
1830ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif
18315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1832911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ANUM_PIN_CAP_MASK 0x04
1833911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ANUM_PIN_CAP_OFF 6
1834911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ANUM_PIN_CAP_SUPPORTED(x) \
1835911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ANUM_PIN_CAP_OFF] & HCI_FEATURE_ANUM_PIN_CAP_MASK)
18365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_SIMPLE_PAIRING_MASK 0x08
1838911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SIMPLE_PAIRING_OFF 6
1839911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SIMPLE_PAIRING_SUPPORTED(x) \
1840911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SIMPLE_PAIRING_OFF] & HCI_FEATURE_SIMPLE_PAIRING_MASK)
18415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1842911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENCAP_PDU_MASK 0x10
1843911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENCAP_PDU_OFF 6
1844911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCAP_PDU_SUPPORTED(x) \
1845911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ENCAP_PDU_OFF] & HCI_FEATURE_ENCAP_PDU_MASK)
18465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1847911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ERROR_DATA_MASK 0x20
1848911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ERROR_DATA_OFF 6
1849911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERROR_DATA_SUPPORTED(x) \
1850911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ERROR_DATA_OFF] & HCI_FEATURE_ERROR_DATA_MASK)
18515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1852911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_NON_FLUSHABLE_PB_MASK 0x40
1853911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_NON_FLUSHABLE_PB_OFF 6
18545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18559ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* This feature is causing frequent link drops when doing call switch with
18569ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * certain av/hfp headsets */
1857911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NON_FLUSHABLE_PB_SUPPORTED(x) \
1858911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0)  //((x)[HCI_FEATURE_NON_FLUSHABLE_PB_OFF] &
1859911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson       // HCI_FEATURE_NON_FLUSHABLE_PB_MASK)
18605738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18615738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_LINK_SUP_TO_EVT_MASK 0x01
1862911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_LINK_SUP_TO_EVT_OFF 7
1863911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_SUP_TO_EVT_SUPPORTED(x) \
1864911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_LINK_SUP_TO_EVT_OFF] & HCI_FEATURE_LINK_SUP_TO_EVT_MASK)
18655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1866911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INQ_RESP_TX_MASK 0x02
1867911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INQ_RESP_TX_OFF 7
1868911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQ_RESP_TX_SUPPORTED(x) \
1869911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_INQ_RESP_TX_OFF] & HCI_FEATURE_INQ_RESP_TX_MASK)
18705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1871911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EXTENDED_MASK 0x80
1872911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EXTENDED_OFF 7
1873911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_EXTENDED_SUPPORTED(x) \
1874911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EXTENDED_OFF] & HCI_FEATURE_EXTENDED_MASK)
18755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1877ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   LMP features encoding - page 1
18785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
18795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_EXT_FEATURE_SSP_HOST_MASK 0x01
1880911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SSP_HOST_OFF 0
1881911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SSP_HOST_SUPPORTED(x) \
1882911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SSP_HOST_OFF] & HCI_EXT_FEATURE_SSP_HOST_MASK)
18835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1884ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define HCI_EXT_FEATURE_LE_HOST_MASK 0x02
1885911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_LE_HOST_OFF 0
1886911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_HOST_SUPPORTED(x) \
1887911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_LE_HOST_OFF] & HCI_EXT_FEATURE_LE_HOST_MASK)
1888ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
1889ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define HCI_EXT_FEATURE_SIMUL_DUMO_HOST_MASK 0x04
1890911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SIMUL_DUMO_HOST_OFF 0
1891911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SIMUL_DUMO_HOST_SUPPORTED(x)      \
1892911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SIMUL_DUMO_HOST_OFF] & \
1893911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_EXT_FEATURE_SIMUL_DUMO_HOST_MASK)
1894ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
18957fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define HCI_EXT_FEATURE_SC_HOST_MASK 0x08
1896911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SC_HOST_OFF 0
1897911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SC_HOST_SUPPORTED(x) \
1898911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SC_HOST_OFF] & HCI_EXT_FEATURE_SC_HOST_MASK)
18997fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
19005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1901ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   LMP features encoding - page 2
19023aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach*/
1903911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_CSB_MASTER_MASK 0x01
1904911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_CSB_MASTER_OFF 0
1905911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CSB_MASTER_SUPPORTED(x) \
1906911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_CSB_MASTER_OFF] & HCI_EXT_FEATURE_CSB_MASTER_MASK)
1907911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1908911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_CSB_SLAVE_MASK 0x02
1909911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_CSB_SLAVE_OFF 0
1910911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CSB_SLAVE_SUPPORTED(x) \
1911911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_CSB_SLAVE_OFF] & HCI_EXT_FEATURE_CSB_SLAVE_MASK)
1912911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1913911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SYNC_TRAIN_MASTER_MASK 0x04
1914911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SYNC_TRAIN_MASTER_OFF 0
1915911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SYNC_TRAIN_MASTER_SUPPORTED(x)      \
1916911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SYNC_TRAIN_MASTER_OFF] & \
1917911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_EXT_FEATURE_SYNC_TRAIN_MASTER_MASK)
1918911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1919911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SYNC_SCAN_SLAVE_MASK 0x08
1920911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SYNC_SCAN_SLAVE_OFF 0
1921911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SYNC_SCAN_SLAVE_SUPPORTED(x)      \
1922911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SYNC_SCAN_SLAVE_OFF] & \
1923911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_EXT_FEATURE_SYNC_SCAN_SLAVE_MASK)
1924911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1925911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_INQ_RESP_NOTIF_MASK 0x10
1926911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_INQ_RESP_NOTIF_OFF 0
1927911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQ_RESP_NOTIF_SUPPORTED(x)      \
1928911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_INQ_RESP_NOTIF_OFF] & \
1929911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_EXT_FEATURE_INQ_RESP_NOTIF_MASK)
1930911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1931911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SC_CTRLR_MASK 0x01
1932911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SC_CTRLR_OFF 1
1933911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SC_CTRLR_SUPPORTED(x) \
1934911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SC_CTRLR_OFF] & HCI_EXT_FEATURE_SC_CTRLR_MASK)
1935911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1936911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_PING_MASK 0x02
1937911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_PING_OFF 1
1938911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PING_SUPPORTED(x) \
1939911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_PING_OFF] & HCI_EXT_FEATURE_PING_MASK)
19407fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
19413aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/*
1942ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   LE features encoding - page 0 (the only page for now)
19433aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach*/
19447fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* LE Encryption */
1945911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_LE_ENCRYPTION_MASK 0x01
1946911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_LE_ENCRYPTION_OFF 0
1947911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ENCRYPTION_SUPPORTED(x) \
1948911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_LE_ENCRYPTION_OFF] & HCI_LE_FEATURE_LE_ENCRYPTION_MASK)
19493aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
19507fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Connection Parameters Request Procedure */
1951911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_CONN_PARAM_REQ_MASK 0x02
1952911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_CONN_PARAM_REQ_OFF 0
1953911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_CONN_PARAM_REQ_SUPPORTED(x) \
1954911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_CONN_PARAM_REQ_OFF] & HCI_LE_FEATURE_CONN_PARAM_REQ_MASK)
19557fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
19567fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Extended Reject Indication */
1957911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_EXT_REJ_IND_MASK 0x04
1958911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_EXT_REJ_IND_OFF 0
1959911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_EXT_REJ_IND_SUPPORTED(x) \
1960911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_EXT_REJ_IND_OFF] & HCI_LE_FEATURE_EXT_REJ_IND_MASK)
19617fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
19627fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Slave-initiated Features Exchange */
1963911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_MASK 0x08
1964911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_OFF 0
1965911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(x)  \
1966911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_OFF] & \
1967911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_MASK)
19683aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
1969444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* Enhanced privacy Feature: bit 6 */
1970911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_ENHANCED_PRIVACY_MASK 0x40
1971911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_ENHANCED_PRIVACY_OFF 0
1972911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ENHANCED_PRIVACY_SUPPORTED(x)  \
1973911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_ENHANCED_PRIVACY_OFF] & \
1974911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_LE_FEATURE_ENHANCED_PRIVACY_MASK)
1975444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
1976444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* Extended scanner filter policy : 7 */
1977911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_MASK 0x80
1978911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_OFF 0
1979911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_EXT_SCAN_FILTER_POLICY_SUPPORTED(x)  \
1980911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_OFF] & \
1981911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_MASK)
1982444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
1983636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera/* Slave-initiated Features Exchange */
1984911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_DATA_LEN_EXT_MASK 0x20
1985911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_DATA_LEN_EXT_OFF 0
1986911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_DATA_LEN_EXT_SUPPORTED(x) \
1987911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_DATA_LEN_EXT_OFF] & HCI_LE_FEATURE_DATA_LEN_EXT_MASK)
1988636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera
19893aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/*
1990ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   Local Supported Commands encoding
19915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1992911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NUM_SUPP_COMMANDS_BYTES 64
19935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
19947fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Supported Commands Byte 0 */
19955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_SUPP_COMMANDS_INQUIRY_MASK 0x01
1996911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_INQUIRY_OFF 0
1997911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_SUPPORTED(x) \
1998911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_INQUIRY_OFF] & HCI_SUPP_COMMANDS_INQUIRY_MASK)
19995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
20005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_SUPP_COMMANDS_INQUIRY_CANCEL_MASK 0x02
2001911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_INQUIRY_CANCEL_OFF 0
2002911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_CANCEL_SUPPORTED(x)        \
2003911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_INQUIRY_CANCEL_OFF] & \
2004911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_INQUIRY_CANCEL_MASK)
2005911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2006911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PERIODIC_INQUIRY_MASK 0x04
2007911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PERIODIC_INQUIRY_OFF 0
2008911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PERIODIC_INQUIRY_SUPPORTED(x)        \
2009911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_PERIODIC_INQUIRY_OFF] & \
2010911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_PERIODIC_INQUIRY_MASK)
2011911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2012911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_PERIODIC_INQUIRY_MASK 0x08
2013911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_PERIODIC_INQUIRY_OFF 0
2014911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_PERIODIC_INQUIRY_SUPPORTED(x)        \
2015911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_EXIT_PERIODIC_INQUIRY_OFF] & \
2016911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_EXIT_PERIODIC_INQUIRY_MASK)
2017911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2018911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_CONN_MASK 0x10
2019911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_CONN_OFF 0
2020911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_CONN_SUPPORTED(x) \
2021911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CREATE_CONN_OFF] & HCI_SUPP_COMMANDS_CREATE_CONN_MASK)
2022911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2023911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_MASK 0x20
2024911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_OFF 0
2025911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT_SUPPORTED(x) \
2026911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DISCONNECT_OFF] & HCI_SUPP_COMMANDS_DISCONNECT_MASK)
2027911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2028911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ADD_SCO_CONN_MASK 0x40
2029911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ADD_SCO_CONN_OFF 0
2030911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ADD_SCO_CONN_SUPPORTED(x)        \
2031911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ADD_SCO_CONN_OFF] & \
2032911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ADD_SCO_CONN_MASK)
2033911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2034911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CANCEL_CREATE_CONN_MASK 0x80
2035911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CANCEL_CREATE_CONN_OFF 0
2036911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CANCEL_CREATE_CONN_SUPPORTED(x)        \
2037911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CANCEL_CREATE_CONN_OFF] & \
2038911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CANCEL_CREATE_CONN_MASK)
2039911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2040911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_CONN_REQUEST_MASK 0x01
2041911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_CONN_REQUEST_OFF 1
2042911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_CONN_REQUEST_SUPPORTED(x)        \
2043911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ACCEPT_CONN_REQUEST_OFF] & \
2044911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ACCEPT_CONN_REQUEST_MASK)
2045911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2046911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REJECT_CONN_REQUEST_MASK 0x02
2047911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REJECT_CONN_REQUEST_OFF 1
2048911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REJECT_CONN_REQUEST_SUPPORTED(x)        \
2049911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REJECT_CONN_REQUEST_OFF] & \
2050911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REJECT_CONN_REQUEST_MASK)
2051911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2052911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_REPLY_MASK 0x04
2053911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_REPLY_OFF 1
2054911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_REPLY_SUPPORTED(x)        \
2055911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_REPLY_OFF] & \
2056911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_REPLY_MASK)
2057911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2058911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_NEG_REPLY_MASK 0x08
2059911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_NEG_REPLY_OFF 1
2060911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2061911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_NEG_REPLY_OFF] & \
2062911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_NEG_REPLY_MASK)
2063911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2064911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_REPLY_MASK 0x10
2065911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_REPLY_OFF 1
2066911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_REPLY_SUPPORTED(x)        \
2067911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_REPLY_OFF] & \
2068911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_REPLY_MASK)
2069911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2070911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_NEG_REPLY_MASK 0x20
2071911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_NEG_REPLY_OFF 1
2072911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2073911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_NEG_REPLY_OFF] & \
2074911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_NEG_REPLY_MASK)
2075911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2076911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CHANGE_CONN_PKT_TYPE_MASK 0x40
2077911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CHANGE_CONN_PKT_TYPE_OFF 1
2078911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_PKT_TYPE_SUPPORTED(x)        \
2079911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CHANGE_CONN_PKT_TYPE_OFF] & \
2080911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CHANGE_CONN_PKT_TYPE_MASK)
2081911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2082911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AUTH_REQUEST_MASK 0x80
2083911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AUTH_REQUEST_OFF 1
2084911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTH_REQUEST_SUPPORTED(x)        \
2085911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_AUTH_REQUEST_OFF] & \
2086911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_AUTH_REQUEST_MASK)
2087911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2088911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONN_ENCRYPTION_MASK 0x01
2089911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONN_ENCRYPTION_OFF 2
2090911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONN_ENCRYPTION_SUPPORTED(x)        \
2091911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_CONN_ENCRYPTION_OFF] & \
2092911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_CONN_ENCRYPTION_MASK)
2093911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2094911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CHANGE_CONN_LINK_KEY_MASK 0x02
2095911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CHANGE_CONN_LINK_KEY_OFF 2
2096911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_LINK_KEY_SUPPORTED(x)        \
2097911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CHANGE_CONN_LINK_KEY_OFF] & \
2098911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CHANGE_CONN_LINK_KEY_MASK)
2099911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2100911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_MASTER_LINK_KEY_MASK 0x04
2101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_MASTER_LINK_KEY_OFF 2
2102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MASTER_LINK_KEY_SUPPORTED(x)        \
2103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_MASTER_LINK_KEY_OFF] & \
2104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_MASTER_LINK_KEY_MASK)
2105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2106911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_NAME_REQUEST_MASK 0x08
2107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_NAME_REQUEST_OFF 2
2108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_NAME_REQUEST_SUPPORTED(x)        \
2109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REMOTE_NAME_REQUEST_OFF] & \
2110911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REMOTE_NAME_REQUEST_MASK)
2111911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2112911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CANCEL_REMOTE_NAME_REQUEST_MASK 0x10
2113911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CANCEL_REMOTE_NAME_REQUEST_OFF 2
2114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CANCEL_REMOTE_NAME_REQUEST_SUPPORTED(x)        \
2115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CANCEL_REMOTE_NAME_REQUEST_OFF] & \
2116911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CANCEL_REMOTE_NAME_REQUEST_MASK)
2117911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2118911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_SUPP_FEATURES_MASK 0x20
2119911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_SUPP_FEATURES_OFF 2
2120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_REMOTE_SUPP_FEATURES_SUPPORTED(x)        \
2121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_REMOTE_SUPP_FEATURES_OFF] & \
2122911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_REMOTE_SUPP_FEATURES_MASK)
2123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2124911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_EXT_FEATURES_MASK 0x40
2125911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_EXT_FEATURES_OFF 2
2126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_REMOTE_EXT_FEATURES_SUPPORTED(x)        \
2127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_REMOTE_EXT_FEATURES_OFF] & \
2128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_REMOTE_EXT_FEATURES_MASK)
2129911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2130911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_VER_INFO_MASK 0x80
2131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_VER_INFO_OFF 2
2132911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_REMOTE_VER_INFO_SUPPORTED(x)        \
2133911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_REMOTE_VER_INFO_OFF] & \
2134911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_REMOTE_VER_INFO_MASK)
2135911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CLOCK_OFFSET_MASK 0x01
2137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CLOCK_OFFSET_OFF 3
2138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLOCK_OFFSET_SUPPORTED(x)        \
2139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_CLOCK_OFFSET_OFF] & \
2140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_CLOCK_OFFSET_MASK)
2141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LMP_HANDLE_MASK 0x02
2143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LMP_HANDLE_OFF 3
2144911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LMP_HANDLE_SUPPORTED(x)        \
2145911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LMP_HANDLE_OFF] & \
2146911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LMP_HANDLE_MASK)
2147911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2148911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOLD_MODE_CMD_MASK 0x02
2149911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOLD_MODE_CMD_OFF 4
2150911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOLD_MODE_CMD_SUPPORTED(x)        \
2151911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_HOLD_MODE_CMD_OFF] & \
2152911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_HOLD_MODE_CMD_MASK)
2153911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2154911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SNIFF_MODE_CMD_MASK 0x04
2155911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SNIFF_MODE_CMD_OFF 4
2156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_MODE_CMD_SUPPORTED(x)        \
2157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SNIFF_MODE_CMD_OFF] & \
2158911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SNIFF_MODE_CMD_MASK)
2159911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_SNIFF_MODE_MASK 0x08
2161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_SNIFF_MODE_OFF 4
2162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_SNIFF_MODE_SUPPORTED(x)        \
2163911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_EXIT_SNIFF_MODE_OFF] & \
2164911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_EXIT_SNIFF_MODE_MASK)
2165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PARK_STATE_MASK 0x10
2167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PARK_STATE_OFF 4
2168911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PARK_STATE_SUPPORTED(x) \
2169911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_PARK_STATE_OFF] & HCI_SUPP_COMMANDS_PARK_STATE_MASK)
2170911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_PARK_STATE_MASK 0x20
2172911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_PARK_STATE_OFF 4
2173911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_PARK_STATE_SUPPORTED(x)        \
2174911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_EXIT_PARK_STATE_OFF] & \
2175911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_EXIT_PARK_STATE_MASK)
2176911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2177911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_QOS_SETUP_MASK 0x40
2178911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_QOS_SETUP_OFF 4
2179911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_SETUP_SUPPORTED(x) \
2180911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_QOS_SETUP_OFF] & HCI_SUPP_COMMANDS_QOS_SETUP_MASK)
2181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2182911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ROLE_DISCOVERY_MASK 0x80
2183911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ROLE_DISCOVERY_OFF 4
2184911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_DISCOVERY_SUPPORTED(x)        \
2185911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ROLE_DISCOVERY_OFF] & \
2186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ROLE_DISCOVERY_MASK)
2187911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2188911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SWITCH_ROLE_MASK 0x01
2189911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SWITCH_ROLE_OFF 5
2190911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SWITCH_ROLE_SUPPORTED(x) \
2191911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SWITCH_ROLE_OFF] & HCI_SUPP_COMMANDS_SWITCH_ROLE_MASK)
2192911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2193911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LINK_POLICY_SET_MASK 0x02
2194911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LINK_POLICY_SET_OFF 5
2195911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LINK_POLICY_SET_SUPPORTED(x)        \
2196911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LINK_POLICY_SET_OFF] & \
2197911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LINK_POLICY_SET_MASK)
2198911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2199911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LINK_POLICY_SET_MASK 0x04
2200911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LINK_POLICY_SET_OFF 5
2201911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LINK_POLICY_SET_SUPPORTED(x)        \
2202911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LINK_POLICY_SET_OFF] & \
2203911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LINK_POLICY_SET_MASK)
2204911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2205911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DEF_LINK_POLICY_SET_MASK 0x08
2206911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DEF_LINK_POLICY_SET_OFF 5
2207911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_DEF_LINK_POLICY_SET_SUPPORTED(x)        \
2208911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_DEF_LINK_POLICY_SET_OFF] & \
2209911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_DEF_LINK_POLICY_SET_MASK)
2210911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2211911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_DEF_LINK_POLICY_SET_MASK 0x10
2212911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_DEF_LINK_POLICY_SET_OFF 5
2213911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_DEF_LINK_POLICY_SET_SUPPORTED(x)        \
2214911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_DEF_LINK_POLICY_SET_OFF] & \
2215911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_DEF_LINK_POLICY_SET_MASK)
2216911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2217911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLOW_SPECIFICATION_MASK 0x20
2218911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLOW_SPECIFICATION_OFF 5
2219911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPECIFICATION_SUPPORTED(x)        \
2220911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_FLOW_SPECIFICATION_OFF] & \
2221911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_FLOW_SPECIFICATION_MASK)
2222911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2223911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_MASK_MASK 0x40
2224911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_MASK_OFF 5
2225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_MASK_SUPPORTED(x)        \
2226911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_EVENT_MASK_OFF] & \
2227911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_EVENT_MASK_MASK)
2228911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2229911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RESET_MASK 0x80
2230911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RESET_OFF 5
2231911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RESET_SUPPORTED(x) \
2232911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_RESET_OFF] & HCI_SUPP_COMMANDS_RESET_MASK)
2233911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2234911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_FILTER_MASK 0x01
2235911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_FILTER_OFF 6
2236911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_FILTER_SUPPORTED(x)        \
2237911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_EVENT_FILTER_OFF] & \
2238911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_EVENT_FILTER_MASK)
2239911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2240911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLUSH_MASK 0x02
2241911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLUSH_OFF 6
2242911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLUSH_SUPPORTED(x) \
2243911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_FLUSH_OFF] & HCI_SUPP_COMMANDS_FLUSH_MASK)
2244911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2245911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PIN_TYPE_MASK 0x04
2246911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PIN_TYPE_OFF 6
2247911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PIN_TYPE_SUPPORTED(x)        \
2248911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PIN_TYPE_OFF] & \
2249911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PIN_TYPE_MASK)
2250911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2251911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PIN_TYPE_MASK 0x08
2252911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PIN_TYPE_OFF 6
2253911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PIN_TYPE_SUPPORTED(x)        \
2254911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PIN_TYPE_OFF] & \
2255911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PIN_TYPE_MASK)
2256911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2257911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_NEW_UNIT_KEY_MASK 0x10
2258911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_NEW_UNIT_KEY_OFF 6
2259911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_NEW_UNIT_KEY_SUPPORTED(x)        \
2260911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CREATE_NEW_UNIT_KEY_OFF] & \
2261911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CREATE_NEW_UNIT_KEY_MASK)
2262911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2263911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_STORED_LINK_KEY_MASK 0x20
2264911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_STORED_LINK_KEY_OFF 6
2265911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_STORED_LINK_KEY_SUPPORTED(x)        \
2266911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_STORED_LINK_KEY_OFF] & \
2267911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_STORED_LINK_KEY_MASK)
2268911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2269911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_STORED_LINK_KEY_MASK 0x40
2270911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_STORED_LINK_KEY_OFF 6
2271911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_STORED_LINK_KEY_SUPPORTED(x)        \
2272911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_STORED_LINK_KEY_OFF] & \
2273911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_STORED_LINK_KEY_MASK)
2274911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2275911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DELETE_STORED_LINK_KEY_MASK 0x80
2276911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DELETE_STORED_LINK_KEY_OFF 6
2277911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DELETE_STORED_LINK_KEY_SUPPORTED(x)        \
2278911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DELETE_STORED_LINK_KEY_OFF] & \
2279911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_DELETE_STORED_LINK_KEY_MASK)
2280911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2281911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOCAL_NAME_MASK 0x01
2282911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOCAL_NAME_OFF 7
2283911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOCAL_NAME_SUPPORTED(x)        \
2284911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LOCAL_NAME_OFF] & \
2285911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LOCAL_NAME_MASK)
2286911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2287911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_NAME_MASK 0x02
2288911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_NAME_OFF 7
2289911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_NAME_SUPPORTED(x)        \
2290911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_NAME_OFF] & \
2291911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_NAME_MASK)
2292911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2293911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CONN_ACCEPT_TOUT_MASK 0x04
2294911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CONN_ACCEPT_TOUT_OFF 7
2295911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CONN_ACCEPT_TOUT_SUPPORTED(x)        \
2296911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_CONN_ACCEPT_TOUT_OFF] & \
2297911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_CONN_ACCEPT_TOUT_MASK)
2298911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2299911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CONN_ACCEPT_TOUT_MASK 0x08
2300911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CONN_ACCEPT_TOUT_OFF 7
2301911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CONN_ACCEPT_TOUT_SUPPORTED(x)        \
2302911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_CONN_ACCEPT_TOUT_OFF] & \
2303911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_CONN_ACCEPT_TOUT_MASK)
2304911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2305911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_TOUT_MASK 0x10
2306911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_TOUT_OFF 7
2307911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_TOUT_SUPPORTED(x)        \
2308911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_TOUT_OFF] & \
2309911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_TOUT_MASK)
2310911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2311911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_TOUT_MASK 0x20
2312911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_TOUT_OFF 7
2313911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_TOUT_SUPPORTED(x)        \
2314911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_TOUT_OFF] & \
2315911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_TOUT_MASK)
2316911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2317911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SCAN_ENABLE_MASK 0x40
2318911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SCAN_ENABLE_OFF 7
2319911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SCAN_ENABLE_SUPPORTED(x)        \
2320911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SCAN_ENABLE_OFF] & \
2321911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SCAN_ENABLE_MASK)
2322911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2323911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SCAN_ENABLE_MASK 0x80
2324911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SCAN_ENABLE_OFF 7
2325911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SCAN_ENABLE_SUPPORTED(x)        \
2326911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SCAN_ENABLE_OFF] & \
2327911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SCAN_ENABLE_MASK)
2328911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2329911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_ACTIVITY_MASK 0x01
2330911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_ACTIVITY_OFF 8
2331911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_SCAN_ACTIVITY_SUPPORTED(x)        \
2332911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_SCAN_ACTIVITY_OFF] & \
2333911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_SCAN_ACTIVITY_MASK)
2334911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2335911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_ACTIVITY_MASK 0x02
2336911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_ACTIVITY_OFF 8
2337911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_SCAN_ACTIVITY_SUPPORTED(x)        \
2338911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_ACTIVITY_OFF] & \
2339911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_ACTIVITY_MASK)
2340911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2341911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQURIY_SCAN_ACTIVITY_MASK 0x04
2342911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQURIY_SCAN_ACTIVITY_OFF 8
2343911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQURIY_SCAN_ACTIVITY_SUPPORTED(x)        \
2344911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_INQURIY_SCAN_ACTIVITY_OFF] & \
2345911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_INQURIY_SCAN_ACTIVITY_MASK)
2346911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2347911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQURIY_SCAN_ACTIVITY_MASK 0x08
2348911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQURIY_SCAN_ACTIVITY_OFF 8
2349911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQURIY_SCAN_ACTIVITY_SUPPORTED(x)        \
2350911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_INQURIY_SCAN_ACTIVITY_OFF] & \
2351911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_INQURIY_SCAN_ACTIVITY_MASK)
2352911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2353911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTH_ENABLE_MASK 0x10
2354911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTH_ENABLE_OFF 8
2355911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AUTH_ENABLE_SUPPORTED(x)        \
2356911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AUTH_ENABLE_OFF] & \
2357911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AUTH_ENABLE_MASK)
2358911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2359911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTH_ENABLE_MASK 0x20
2360911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTH_ENABLE_OFF 8
2361911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AUTH_ENABLE_SUPPORTED(x)        \
2362911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_AUTH_ENABLE_OFF] & \
2363911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_AUTH_ENABLE_MASK)
2364911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2365911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_ENCRYPT_ENABLE_MASK 0x40
2366911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_ENCRYPT_ENABLE_OFF 8
2367911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ENCRYPT_ENABLE_SUPPORTED(x)        \
2368911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_ENCRYPT_ENABLE_OFF] & \
2369911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_ENCRYPT_ENABLE_MASK)
2370911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2371911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_ENCRYPT_ENABLE_MASK 0x80
2372911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_ENCRYPT_ENABLE_OFF 8
2373911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_ENCRYPT_ENABLE_SUPPORTED(x)        \
2374911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_ENCRYPT_ENABLE_OFF] & \
2375911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_ENCRYPT_ENABLE_MASK)
2376911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2377911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CLASS_DEVICE_MASK 0x01
2378911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CLASS_DEVICE_OFF 9
2379911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLASS_DEVICE_SUPPORTED(x)        \
2380911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_CLASS_DEVICE_OFF] & \
2381911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_CLASS_DEVICE_MASK)
2382911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2383911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CLASS_DEVICE_MASK 0x02
2384911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CLASS_DEVICE_OFF 9
2385911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CLASS_DEVICE_SUPPORTED(x)        \
2386911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_CLASS_DEVICE_OFF] & \
2387911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_CLASS_DEVICE_MASK)
2388911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2389911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_VOICE_SETTING_MASK 0x04
2390911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_VOICE_SETTING_OFF 9
2391911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_VOICE_SETTING_SUPPORTED(x)        \
2392911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_VOICE_SETTING_OFF] & \
2393911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_VOICE_SETTING_MASK)
2394911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2395911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_VOICE_SETTING_MASK 0x08
2396911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_VOICE_SETTING_OFF 9
2397911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_VOICE_SETTING_SUPPORTED(x)        \
2398911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_VOICE_SETTING_OFF] & \
2399911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_VOICE_SETTING_MASK)
2400911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2401911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTO_FLUSH_TOUT_MASK 0x10
2402911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTO_FLUSH_TOUT_OFF 9
2403911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AUTO_FLUSH_TOUT_SUPPORTED(x)        \
2404911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AUTO_FLUSH_TOUT_OFF] & \
2405911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AUTO_FLUSH_TOUT_MASK)
2406911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2407911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTO_FLUSH_TOUT_MASK 0x20
2408911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTO_FLUSH_TOUT_OFF 9
2409911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AUTO_FLUSH_TOUT_SUPPORTED(x)        \
2410911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_AUTO_FLUSH_TOUT_OFF] & \
2411911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_AUTO_FLUSH_TOUT_MASK)
2412911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2413911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_NUM_BROAD_RETRANS_MASK 0x40
2414911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_NUM_BROAD_RETRANS_OFF 9
2415911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_NUM_BROAD_RETRANS_SUPPORTED(x)        \
2416911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_NUM_BROAD_RETRANS_OFF] & \
2417911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_NUM_BROAD_RETRANS_MASK)
2418911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2419911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_NUM_BROAD_RETRANS_MASK 0x80
2420911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_NUM_BROAD_RETRANS_OFF 9
2421911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_NUM_BROAD_RETRANS_SUPPORTED(x)        \
2422911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_NUM_BROAD_RETRANS_OFF] & \
2423911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_NUM_BROAD_RETRANS_MASK)
2424911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2425911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_HOLD_MODE_ACTIVITY_MASK 0x01
2426911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_HOLD_MODE_ACTIVITY_OFF 10
2427911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_HOLD_MODE_ACTIVITY_SUPPORTED(x)        \
2428911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_HOLD_MODE_ACTIVITY_OFF] & \
2429911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_HOLD_MODE_ACTIVITY_MASK)
2430911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2431911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_HOLD_MODE_ACTIVITY_MASK 0x02
2432911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_HOLD_MODE_ACTIVITY_OFF 10
2433911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_HOLD_MODE_ACTIVITY_SUPPORTED(x)        \
2434911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_HOLD_MODE_ACTIVITY_OFF] & \
2435911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_HOLD_MODE_ACTIVITY_MASK)
2436911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2437911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_TRANS_PWR_LEVEL_MASK 0x04
2438911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_TRANS_PWR_LEVEL_OFF 10
2439911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_TRANS_PWR_LEVEL_SUPPORTED(x)        \
2440911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_TRANS_PWR_LEVEL_OFF] & \
2441911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_TRANS_PWR_LEVEL_MASK)
2442911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2443911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SYNCH_FLOW_CTRL_ENABLE_MASK 0x08
2444911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SYNCH_FLOW_CTRL_ENABLE_OFF 10
2445911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SYNCH_FLOW_CTRL_ENABLE_SUPPORTED(x)        \
2446911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SYNCH_FLOW_CTRL_ENABLE_OFF] & \
2447911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SYNCH_FLOW_CTRL_ENABLE_MASK)
2448911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2449911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SYNCH_FLOW_CTRL_ENABLE_MASK 0x10
2450911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SYNCH_FLOW_CTRL_ENABLE_OFF 10
2451911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SYNCH_FLOW_CTRL_ENABLE_SUPPORTED(x)        \
2452911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SYNCH_FLOW_CTRL_ENABLE_OFF] & \
2453911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SYNCH_FLOW_CTRL_ENABLE_MASK)
2454911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2455911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_HOST_CTRLR_TO_HOST_FC_MASK 0x20
2456911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_HOST_CTRLR_TO_HOST_FC_OFF 10
2457911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_HOST_CTRLR_TO_HOST_FC_SUPPORTED(x)        \
2458911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_HOST_CTRLR_TO_HOST_FC_OFF] & \
2459911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_HOST_CTRLR_TO_HOST_FC_MASK)
2460911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2461911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOST_BUFFER_SIZE_MASK 0x40
2462911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOST_BUFFER_SIZE_OFF 10
2463911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOST_BUFFER_SIZE_SUPPORTED(x)        \
2464911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_HOST_BUFFER_SIZE_OFF] & \
2465911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_HOST_BUFFER_SIZE_MASK)
2466911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2467911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOST_NUM_COMPLETED_PKTS_MASK 0x80
2468911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOST_NUM_COMPLETED_PKTS_OFF 10
2469911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOST_NUM_COMPLETED_PKTS_SUPPORTED(x)        \
2470911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_HOST_NUM_COMPLETED_PKTS_OFF] & \
2471911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_HOST_NUM_COMPLETED_PKTS_MASK)
2472911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2473911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LINK_SUP_TOUT_MASK 0x01
2474911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LINK_SUP_TOUT_OFF 11
2475911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LINK_SUP_TOUT_SUPPORTED(x)        \
2476911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LINK_SUP_TOUT_OFF] & \
2477911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LINK_SUP_TOUT_MASK)
2478911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2479911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LINK_SUP_TOUT_MASK 0x02
2480911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LINK_SUP_TOUT_OFF 11
2481911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LINK_SUP_TOUT_SUPPORTED(x)        \
2482911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LINK_SUP_TOUT_OFF] & \
2483911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LINK_SUP_TOUT_MASK)
2484911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2485911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_NUM_SUPP_IAC_MASK 0x04
2486911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_NUM_SUPP_IAC_OFF 11
2487911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_NUM_SUPP_IAC_SUPPORTED(x)        \
2488911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_NUM_SUPP_IAC_OFF] & \
2489911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_NUM_SUPP_IAC_MASK)
2490911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2491911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CURRENT_IAC_LAP_MASK 0x08
2492911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CURRENT_IAC_LAP_OFF 11
2493911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CURRENT_IAC_LAP_SUPPORTED(x)        \
2494911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_CURRENT_IAC_LAP_OFF] & \
2495911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_CURRENT_IAC_LAP_MASK)
2496911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2497911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CURRENT_IAC_LAP_MASK 0x10
2498911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CURRENT_IAC_LAP_OFF 11
2499911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CURRENT_IAC_LAP_SUPPORTED(x)        \
2500911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_CURRENT_IAC_LAP_OFF] & \
2501911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_CURRENT_IAC_LAP_MASK)
2502911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2503911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_PER_MODE_MASK 0x20
2504911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_PER_MODE_OFF 11
2505911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_SCAN_PER_MODE_SUPPORTED(x)        \
2506911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_SCAN_PER_MODE_OFF] & \
2507911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_SCAN_PER_MODE_MASK)
2508911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2509911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_PER_MODE_MASK 0x40
2510911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_PER_MODE_OFF 11
2511911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_SCAN_PER_MODE_SUPPORTED(x)        \
2512911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_PER_MODE_OFF] & \
2513911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_PER_MODE_MASK)
2514911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2515911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_MODE_MASK 0x80
2516911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_MODE_OFF 11
2517911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_SCAN_MODE_SUPPORTED(x)        \
2518911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_SCAN_MODE_OFF] & \
2519911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_SCAN_MODE_MASK)
2520911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2521911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_MODE_MASK 0x01
2522911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_MODE_OFF 12
2523911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_SCAN_MODE_SUPPORTED(x)        \
2524911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_MODE_OFF] & \
2525911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_MODE_MASK)
2526911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2527911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_AFH_CHNL_CLASS_MASK 0x02
2528911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_AFH_CHNL_CLASS_OFF 12
2529911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_AFH_CHNL_CLASS_SUPPORTED(x)        \
2530911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_AFH_CHNL_CLASS_OFF] & \
2531911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_AFH_CHNL_CLASS_MASK)
2532911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2533911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_SCAN_TYPE_MASK 0x10
2534911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_SCAN_TYPE_OFF 12
2535911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQUIRY_SCAN_TYPE_SUPPORTED(x)        \
2536911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_INQUIRY_SCAN_TYPE_OFF] & \
2537911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_INQUIRY_SCAN_TYPE_MASK)
2538911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2539911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_SCAN_TYPE_MASK 0x20
2540911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_SCAN_TYPE_OFF 12
2541911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQUIRY_SCAN_TYPE_SUPPORTED(x)        \
2542911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_INQUIRY_SCAN_TYPE_OFF] & \
2543911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_INQUIRY_SCAN_TYPE_MASK)
2544911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2545911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_MODE_MASK 0x40
2546911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_MODE_OFF 12
2547911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQUIRY_MODE_SUPPORTED(x)        \
2548911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_INQUIRY_MODE_OFF] & \
2549911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_INQUIRY_MODE_MASK)
2550911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2551911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_MODE_MASK 0x80
2552911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_MODE_OFF 12
2553911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQUIRY_MODE_SUPPORTED(x)        \
2554911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_INQUIRY_MODE_OFF] & \
2555911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_INQUIRY_MODE_MASK)
2556911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2557911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_TYPE_MASK 0x01
2558911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_TYPE_OFF 13
2559911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_SCAN_TYPE_SUPPORTED(x)        \
2560911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_SCAN_TYPE_OFF] & \
2561911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_SCAN_TYPE_MASK)
2562911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2563911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_TYPE_MASK 0x02
2564911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_TYPE_OFF 13
2565911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_SCAN_TYPE_SUPPORTED(x)        \
2566911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_TYPE_OFF] & \
2567911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_TYPE_MASK)
2568911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2569911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AFH_CHNL_ASSESS_MODE_MASK 0x04
2570911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AFH_CHNL_ASSESS_MODE_OFF 13
2571911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AFH_CHNL_ASSESS_MODE_SUPPORTED(x)        \
2572911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AFH_CHNL_ASSESS_MODE_OFF] & \
2573911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AFH_CHNL_ASSESS_MODE_MASK)
2574911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2575911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AFH_CHNL_ASSESS_MODE_MASK 0x08
2576911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AFH_CHNL_ASSESS_MODE_OFF 13
2577911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AFH_CHNL_ASSESS_MODE_SUPPORTED(x)        \
2578911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_AFH_CHNL_ASSESS_MODE_OFF] & \
2579911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_AFH_CHNL_ASSESS_MODE_MASK)
2580911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2581911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_VER_INFO_MASK 0x08
2582911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_VER_INFO_OFF 14
2583911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_VER_INFO_SUPPORTED(x)        \
2584911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_VER_INFO_OFF] & \
2585911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_VER_INFO_MASK)
2586911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2587911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_SUP_CMDS_MASK 0x10
2588911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_SUP_CMDS_OFF 14
2589911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_SUP_CMDS_SUPPORTED(x)        \
2590911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_SUP_CMDS_OFF] & \
2591911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_SUP_CMDS_MASK)
2592911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2593911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_SUPP_FEATURES_MASK 0x20
2594911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_SUPP_FEATURES_OFF 14
2595911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_SUPP_FEATURES_SUPPORTED(x)        \
2596911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_SUPP_FEATURES_OFF] & \
2597911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_SUPP_FEATURES_MASK)
2598911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2599911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_EXT_FEATURES_MASK 0x40
2600911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_EXT_FEATURES_OFF 14
2601911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_EXT_FEATURES_SUPPORTED(x)        \
2602911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_EXT_FEATURES_OFF] & \
2603911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_EXT_FEATURES_MASK)
2604911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2605911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BUFFER_SIZE_MASK 0x80
2606911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BUFFER_SIZE_OFF 14
2607911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BUFFER_SIZE_SUPPORTED(x)        \
2608911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_BUFFER_SIZE_OFF] & \
2609911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_BUFFER_SIZE_MASK)
2610911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2611911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_COUNTRY_CODE_MASK 0x01
2612911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_COUNTRY_CODE_OFF 15
2613911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_COUNTRY_CODE_SUPPORTED(x)        \
2614911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_COUNTRY_CODE_OFF] & \
2615911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_COUNTRY_CODE_MASK)
2616911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2617911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BD_ADDR_MASK 0x02
2618911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BD_ADDR_OFF 15
2619911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BD_ADDR_SUPPORTED(x)        \
2620911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_BD_ADDR_OFF] & \
2621911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_BD_ADDR_MASK)
2622911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2623911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_FAIL_CONTACT_CNTR_MASK 0x04
2624911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_FAIL_CONTACT_CNTR_OFF 15
2625911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_FAIL_CONTACT_CNTR_SUPPORTED(x)        \
2626911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_FAIL_CONTACT_CNTR_OFF] & \
2627911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_FAIL_CONTACT_CNTR_MASK)
2628911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2629911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RESET_FAIL_CONTACT_CNTR_MASK 0x08
2630911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RESET_FAIL_CONTACT_CNTR_OFF 15
2631911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RESET_FAIL_CONTACT_CNTR_SUPPORTED(x)        \
2632911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_RESET_FAIL_CONTACT_CNTR_OFF] & \
2633911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_RESET_FAIL_CONTACT_CNTR_MASK)
2634911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2635911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_GET_LINK_QUALITY_MASK 0x10
2636911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_GET_LINK_QUALITY_OFF 15
2637911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GET_LINK_QUALITY_SUPPORTED(x)        \
2638911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_GET_LINK_QUALITY_OFF] & \
2639911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_GET_LINK_QUALITY_MASK)
2640911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2641911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_RSSI_MASK 0x20
2642911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_RSSI_OFF 15
2643911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RSSI_SUPPORTED(x) \
2644911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_RSSI_OFF] & HCI_SUPP_COMMANDS_READ_RSSI_MASK)
2645911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2646911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AFH_CH_MAP_MASK 0x40
2647911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AFH_CH_MAP_OFF 15
2648911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AFH_CH_MAP_SUPPORTED(x)        \
2649911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AFH_CH_MAP_OFF] & \
2650911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AFH_CH_MAP_MASK)
2651911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2652911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BD_CLOCK_MASK 0x80
2653911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BD_CLOCK_OFF 15
2654911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BD_CLOCK_SUPPORTED(x)        \
2655911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_BD_CLOCK_OFF] & \
2656911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_BD_CLOCK_MASK)
2657911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2658911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOOPBACK_MODE_MASK 0x01
2659911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOOPBACK_MODE_OFF 16
2660911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOOPBACK_MODE_SUPPORTED(x)        \
2661911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOOPBACK_MODE_OFF] & \
2662911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOOPBACK_MODE_MASK)
2663911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2664911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOOPBACK_MODE_MASK 0x02
2665911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOOPBACK_MODE_OFF 16
2666911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOOPBACK_MODE_SUPPORTED(x)        \
2667911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LOOPBACK_MODE_OFF] & \
2668911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LOOPBACK_MODE_MASK)
2669911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2670911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENABLE_DEV_UNDER_TEST_MASK 0x04
2671911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENABLE_DEV_UNDER_TEST_OFF 16
2672911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_DEV_UNDER_TEST_SUPPORTED(x)        \
2673911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENABLE_DEV_UNDER_TEST_OFF] & \
2674911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENABLE_DEV_UNDER_TEST_MASK)
2675911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2676911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SETUP_SYNCH_CONN_MASK 0x08
2677911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SETUP_SYNCH_CONN_OFF 16
2678911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SETUP_SYNCH_CONN_SUPPORTED(x)        \
2679911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SETUP_SYNCH_CONN_OFF] & \
2680911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SETUP_SYNCH_CONN_MASK)
2681911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2682911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_SYNCH_CONN_MASK 0x10
2683911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_SYNCH_CONN_OFF 16
2684911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_SYNCH_CONN_SUPPORTED(x)        \
2685911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ACCEPT_SYNCH_CONN_OFF] & \
2686911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ACCEPT_SYNCH_CONN_MASK)
2687911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2688911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REJECT_SYNCH_CONN_MASK 0x20
2689911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REJECT_SYNCH_CONN_OFF 16
2690911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REJECT_SYNCH_CONN_SUPPORTED(x)        \
2691911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REJECT_SYNCH_CONN_OFF] & \
2692911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REJECT_SYNCH_CONN_MASK)
2693911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2694911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_EXT_INQUIRY_RESP_MASK 0x01
2695911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_EXT_INQUIRY_RESP_OFF 17
2696911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_EXT_INQUIRY_RESP_SUPPORTED(x)        \
2697911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_EXT_INQUIRY_RESP_OFF] & \
2698911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_EXT_INQUIRY_RESP_MASK)
2699911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2700911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_EXT_INQUIRY_RESP_MASK 0x02
2701911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_EXT_INQUIRY_RESP_OFF 17
2702911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_EXT_INQUIRY_RESP_SUPPORTED(x)        \
2703911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_EXT_INQUIRY_RESP_OFF] & \
2704911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_EXT_INQUIRY_RESP_MASK)
2705911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2706911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REFRESH_ENCRYPTION_KEY_MASK 0x04
2707911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REFRESH_ENCRYPTION_KEY_OFF 17
2708911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REFRESH_ENCRYPTION_KEY_SUPPORTED(x)        \
2709911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REFRESH_ENCRYPTION_KEY_OFF] & \
2710911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REFRESH_ENCRYPTION_KEY_MASK)
27115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
27125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Octet 17, bit 3 is reserved */
27135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2714911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SNIFF_SUB_RATE_MASK 0x10
2715911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SNIFF_SUB_RATE_OFF 17
2716911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_SUB_RATE_CMD_SUPPORTED(x)    \
2717911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SNIFF_SUB_RATE_OFF] & \
2718911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SNIFF_SUB_RATE_MASK)
2719911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2720911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SIMPLE_PAIRING_MODE_MASK 0x20
2721911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SIMPLE_PAIRING_MODE_OFF 17
2722911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SIMPLE_PAIRING_MODE_SUPPORTED(x)        \
2723911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SIMPLE_PAIRING_MODE_OFF] & \
2724911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SIMPLE_PAIRING_MODE_MASK)
2725911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2726911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_MODE_MASK 0x40
2727911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_MODE_OFF 17
2728911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SIMPLE_PAIRING_MODE_SUPPORTED(x)        \
2729911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_MODE_OFF] & \
2730911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_MODE_MASK)
2731911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2732911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_DATA_MASK 0x80
2733911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_DATA_OFF 17
2734911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_OOB_DATA_SUPPORTED(x)        \
2735911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_OOB_DATA_OFF] & \
2736911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_OOB_DATA_MASK)
2737911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2738911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_RESPONSE_TX_POWER_MASK 0x01
2739911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_RESPONSE_TX_POWER_OFF 18
2740911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQUIRY_RESPONSE_TX_POWER_SUPPORTED(x)        \
2741911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_INQUIRY_RESPONSE_TX_POWER_OFF] & \
2742911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_INQUIRY_RESPONSE_TX_POWER_MASK)
2743911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2744911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_RESPONSE_TX_POWER_MASK 0x02
2745911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_RESPONSE_TX_POWER_OFF 18
2746911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQUIRY_RESPONSE_TX_POWER_SUPPORTED(x)        \
2747911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_INQUIRY_RESPONSE_TX_POWER_OFF] & \
2748911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_INQUIRY_RESPONSE_TX_POWER_MASK)
2749911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2750911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_MASK 0x04
2751911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_OFF 18
2752911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_SUPPORTED(x)        \
2753911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_OFF] & \
2754911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_MASK)
2755911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2756911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_MASK 0x08
2757911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_OFF 18
2758911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_SUPPORTED(x)        \
2759911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_OFF] & \
2760911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_MASK)
2761911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2762911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_IO_CAPABILITY_REQUEST_REPLY_MASK 0x80
2763911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_IO_CAPABILITY_REQUEST_REPLY_OFF 18
2764911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAPABILITY_REQUEST_REPLY_SUPPORTED(x)        \
2765911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_IO_CAPABILITY_REQUEST_REPLY_OFF] & \
2766911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_IO_CAPABILITY_REQUEST_REPLY_MASK)
2767911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2768911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_REPLY_MASK 0x01
2769911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_REPLY_OFF 19
2770911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_CONFIRMATION_REQUEST_REPLY_SUPPORTED(x)        \
2771911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_REPLY_OFF] & \
2772911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_REPLY_MASK)
2773911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2774911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_NEG_REPLY_MASK 0x02
2775911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_NEG_REPLY_OFF 19
2776911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_CONFIRMATION_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2777911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_NEG_REPLY_OFF] & \
2778911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_NEG_REPLY_MASK)
2779911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2780911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_REPLY_MASK 0x04
2781911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_REPLY_OFF 19
2782911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_REQUEST_REPLY_SUPPORTED(x)        \
2783911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_REPLY_OFF] & \
2784911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_REPLY_MASK)
2785911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2786911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_NEG_REPLY_MASK 0x08
2787911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_NEG_REPLY_OFF 19
2788911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2789911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_NEG_REPLY_OFF] & \
2790911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_NEG_REPLY_MASK)
2791911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2792911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_REPLY_MASK 0x10
2793911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_REPLY_OFF 19
2794911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_OOB_DATA_REQUEST_REPLY_SUPPORTED(x)        \
2795911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_REPLY_OFF] & \
2796911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_REPLY_MASK)
2797911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2798911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_DBG_MODE_MASK 0x20
2799911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_DBG_MODE_OFF 19
2800911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SIMPLE_PAIRING_DBG_MODE_SUPPORTED(x)        \
2801911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_DBG_MODE_OFF] & \
2802911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_DBG_MODE_MASK)
2803911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2804911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENHANCED_FLUSH_MASK 0x40
2805911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENHANCED_FLUSH_OFF 19
2806911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENHANCED_FLUSH_SUPPORTED(x)        \
2807911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENHANCED_FLUSH_OFF] & \
2808911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENHANCED_FLUSH_MASK)
2809911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2810911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_MASK 0x80
2811911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_OFF 19
2812911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2813911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_OFF] & \
2814911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_MASK)
28155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
28165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 20) */
2817911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SEND_KEYPRESS_NOTIF_MASK 0x04
2818911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SEND_KEYPRESS_NOTIF_OFF 20
2819911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SEND_NOTIF_SUPPORTED(x)                 \
2820911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SEND_KEYPRESS_NOTIF_OFF] & \
2821911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SEND_KEYPRESS_NOTIF_MASK)
2822911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2823911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_IO_CAP_REQ_NEG_REPLY_MASK 0x08
2824911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_IO_CAP_REQ_NEG_REPLY_OFF 20
2825911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_REQ_NEG_REPLY_SUPPORTED(x)        \
2826911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_IO_CAP_REQ_NEG_REPLY_OFF] & \
2827911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_IO_CAP_REQ_NEG_REPLY_MASK)
2828911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2829911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_ENCR_KEY_SIZE_MASK 0x10
2830911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_ENCR_KEY_SIZE_OFF 20
2831911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ENCR_KEY_SIZE_SUPPORTED(x)        \
2832911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_ENCR_KEY_SIZE_OFF] & \
2833911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_ENCR_KEY_SIZE_MASK)
28345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
28355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 21) */
2836911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_PHYSICAL_LINK_MASK 0x01
2837911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_PHYSICAL_LINK_OFF 21
2838911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_PHYSICAL_LINK_SUPPORTED(x)        \
2839911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CREATE_PHYSICAL_LINK_OFF] & \
2840911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CREATE_PHYSICAL_LINK_MASK)
2841911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2842911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_PHYSICAL_LINK_MASK 0x02
2843911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_PHYSICAL_LINK_OFF 21
2844911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_PHYSICAL_LINK_SUPPORTED(x)        \
2845911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ACCEPT_PHYSICAL_LINK_OFF] & \
2846911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ACCEPT_PHYSICAL_LINK_MASK)
2847911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2848911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_PHYSICAL_LINK_MASK 0x04
2849911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_PHYSICAL_LINK_OFF 21
2850911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT_PHYSICAL_LINK_SUPPORTED(x)        \
2851911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DISCONNECT_PHYSICAL_LINK_OFF] & \
2852911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_DISCONNECT_PHYSICAL_LINK_MASK)
2853911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2854911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_LOGICAL_LINK_MASK 0x08
2855911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_LOGICAL_LINK_OFF 21
2856911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_LOGICAL_LINK_SUPPORTED(x)        \
2857911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CREATE_LOGICAL_LINK_OFF] & \
2858911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CREATE_LOGICAL_LINK_MASK)
2859911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2860911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_LOGICAL_LINK_MASK 0x10
2861911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_LOGICAL_LINK_OFF 21
2862911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_LOGICAL_LINK_SUPPORTED(x)        \
2863911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ACCEPT_LOGICAL_LINK_OFF] & \
2864911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ACCEPT_LOGICAL_LINK_MASK)
2865911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2866911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_LOGICAL_LINK_MASK 0x20
2867911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_LOGICAL_LINK_OFF 21
2868911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT_LOGICAL_LINK_SUPPORTED(x)        \
2869911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DISCONNECT_LOGICAL_LINK_OFF] & \
2870911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_DISCONNECT_LOGICAL_LINK_MASK)
2871911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2872911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LOGICAL_LINK_CANCEL_MASK 0x40
2873911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LOGICAL_LINK_CANCEL_OFF 21
2874911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOGICAL_LINK_CANCEL_SUPPORTED(x)        \
2875911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LOGICAL_LINK_CANCEL_OFF] & \
2876911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_LOGICAL_LINK_CANCEL_MASK)
2877911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2878911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLOW_SPEC_MODIFY_MASK 0x80
2879911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLOW_SPEC_MODIFY_OFF 21
2880911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPEC_MODIFY_SUPPORTED(x)        \
2881911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_FLOW_SPEC_MODIFY_OFF] & \
2882911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_FLOW_SPEC_MODIFY_MASK)
28835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
28845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 22) */
2885911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_MASK 0x01
2886911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_OFF 22
2887911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_SUPPORTED(x)        \
2888911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_OFF] & \
2889911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_MASK)
2890911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2891911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_MASK 0x02
2892911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_OFF 22
2893911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_SUPPORTED(x)        \
2894911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_OFF] & \
2895911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_MASK)
2896911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2897911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_MASK_PAGE_2_MASK 0x04
2898911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_MASK_PAGE_2_OFF 22
2899911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_MASK_PAGE_2_SUPPORTED(x)        \
2900911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_EVENT_MASK_PAGE_2_OFF] & \
2901911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_EVENT_MASK_PAGE_2_MASK)
2902911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2903911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCATION_DATA_MASK 0x08
2904911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCATION_DATA_OFF 22
2905911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCATION_DATA_SUPPORTED(x)        \
2906911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCATION_DATA_OFF] & \
2907911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCATION_DATA_MASK)
2908911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2909911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOCATION_DATA_MASK 0x10
2910911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOCATION_DATA_OFF 22
2911911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOCATION_DATA_SUPPORTED(x)        \
2912911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LOCATION_DATA_OFF] & \
2913911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LOCATION_DATA_MASK)
2914911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2915911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_AMP_INFO_MASK 0x20
2916911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_AMP_INFO_OFF 22
2917911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_AMP_INFO_SUPPORTED(x)        \
2918911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_AMP_INFO_OFF] & \
2919911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_AMP_INFO_MASK)
2920911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2921911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_AMP_ASSOC_MASK 0x40
2922911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_AMP_ASSOC_OFF 22
2923911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_AMP_ASSOC_SUPPORTED(x)        \
2924911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_AMP_ASSOC_OFF] & \
2925911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_AMP_ASSOC_MASK)
2926911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2927911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_REMOTE_AMP_ASSOC_MASK 0x80
2928911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_REMOTE_AMP_ASSOC_OFF 22
2929911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_REMOTE_AMP_ASSOC_SUPPORTED(x)        \
2930911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_REMOTE_AMP_ASSOC_OFF] & \
2931911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_REMOTE_AMP_ASSOC_MASK)
29325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
29335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 23) */
2934911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_FLOW_CONTROL_MODE_MASK 0x01
2935911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_FLOW_CONTROL_MODE_OFF 23
2936911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_FLOW_CONTROL_MODE_SUPPORTED(x)        \
2937911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_FLOW_CONTROL_MODE_OFF] & \
2938911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_FLOW_CONTROL_MODE_MASK)
2939911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2940911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_FLOW_CONTROL_MODE_MASK 0x02
2941911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_FLOW_CONTROL_MODE_OFF 23
2942911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_FLOW_CONTROL_MODE_SUPPORTED(x)        \
2943911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_FLOW_CONTROL_MODE_OFF] & \
2944911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_FLOW_CONTROL_MODE_MASK)
2945911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2946911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DATA_BLOCK_SIZE_MASK 0x04
2947911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DATA_BLOCK_SIZE_OFF 23
2948911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_DATA_BLOCK_SIZE_SUPPORTED(x)        \
2949911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_DATA_BLOCK_SIZE_OFF] & \
2950911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_DATA_BLOCK_SIZE_MASK)
2951911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2952911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENABLE_AMP_RCVR_REPORTS_MASK 0x20
2953911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENABLE_AMP_RCVR_REPORTS_OFF 23
2954911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_AMP_RCVR_REPORTS_SUPPORTED(x)        \
2955911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENABLE_AMP_RCVR_REPORTS_OFF] & \
2956911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENABLE_AMP_RCVR_REPORTS_MASK)
2957911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2958911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AMP_TEST_END_MASK 0x40
2959911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AMP_TEST_END_OFF 23
2960911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_TEST_END_SUPPORTED(x)        \
2961911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_AMP_TEST_END_OFF] & \
2962911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_AMP_TEST_END_MASK)
2963911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2964911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AMP_TEST_MASK 0x80
2965911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AMP_TEST_OFF 23
2966911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_TEST_SUPPORTED(x) \
2967911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_AMP_TEST_OFF] & HCI_SUPP_COMMANDS_AMP_TEST_MASK)
29685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
29695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 24) */
2970911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_TRANSMIT_POWER_LEVEL_MASK 0x01
2971911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_TRANSMIT_POWER_LEVEL_OFF 24
2972911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_TRANSMIT_POWER_LEVEL_SUPPORTED(x)        \
2973911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_TRANSMIT_POWER_LEVEL_OFF] & \
2974911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_TRANSMIT_POWER_LEVEL_MASK)
2975911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2976911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BE_FLUSH_TOUT_MASK 0x04
2977911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BE_FLUSH_TOUT_OFF 24
2978911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BE_FLUSH_TOUT_SUPPORTED(x)        \
2979911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_BE_FLUSH_TOUT_OFF] & \
2980911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_BE_FLUSH_TOUT_MASK)
2981911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2982911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_BE_FLUSH_TOUT_MASK 0x08
2983911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_BE_FLUSH_TOUT_OFF 24
2984911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_BE_FLUSH_TOUT_SUPPORTED(x)        \
2985911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_BE_FLUSH_TOUT_OFF] & \
2986911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_BE_FLUSH_TOUT_MASK)
2987911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2988911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SHORT_RANGE_MODE_MASK 0x10
2989911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SHORT_RANGE_MODE_OFF 24
2990911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SHORT_RANGE_MODE_SUPPORTED(x)        \
2991911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SHORT_RANGE_MODE_OFF] & \
2992911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SHORT_RANGE_MODE_MASK)
29935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
29945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* LE commands TBD
2995ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 24 continued)
2996ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 25)
2997ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 26)
2998ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 27)
2999ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 28)
30005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
30015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
3002ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 29) */
3003911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENH_SETUP_SYNCH_CONN_MASK 0x08
3004911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENH_SETUP_SYNCH_CONN_OFF 29
3005911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ENH_SETUP_SYNCH_CONN_SUPPORTED(x)   \
3006911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENH_SETUP_SYNCH_CONN_OFF] & \
3007911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENH_SETUP_SYNCH_CONN_MASK)
3008911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3009911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENH_ACCEPT_SYNCH_CONN_MASK 0x10
3010911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENH_ACCEPT_SYNCH_CONN_OFF 29
3011911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ENH_ACCEPT_SYNCH_CONN_SUPPORTED(x)   \
3012911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENH_ACCEPT_SYNCH_CONN_OFF] & \
3013911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENH_ACCEPT_SYNCH_CONN_MASK)
3014911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3015911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_CODECS_MASK 0x20
3016911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_CODECS_OFF 29
3017911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_CODECS_SUPPORTED(x)        \
3018911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_CODECS_OFF] & \
3019911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_CODECS_MASK)
3020911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3021911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_CHANN_PARAM_MASK 0x40
3022911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_CHANN_PARAM_OFF 29
3023911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_CHANNEL_PARAMETERS_SUPPORTED(x) \
3024911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_CHANN_PARAM_OFF] & \
3025911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_CHANN_PARAM_MASK)
3026911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3027911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EXT_FRAME_CONF_MASK 0x80
3028911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EXT_FRAME_CONF_OFF 29
3029911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EXTERNAL_FRAME_CONFIGURATION_SUPPORTED(x) \
3030911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_EXT_FRAME_CONF_OFF] &        \
3031911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_EXT_FRAME_CONF_MASK)
3032ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
3033ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 30) */
3034911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_SIGNALING_MASK 0x01
3035911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_SIGNALING_OFF 30
3036911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_SIGNALING_SUPPORTED(x)        \
3037911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_SIGNALING_OFF] & \
3038911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_SIGNALING_MASK)
3039911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3040911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_TRANS_LAYER_MASK 0x02
3041911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_TRANS_LAYER_OFF 30
3042911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_TRANSPORT_LAYER_SUPPORTED(x)    \
3043911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_TRANS_LAYER_OFF] & \
3044911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_TRANS_LAYER_MASK)
3045911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3046911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_SCAN_FREQ_TABLE_MASK 0x04
3047911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_SCAN_FREQ_TABLE_OFF 30
3048911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_SCAN_FREQUENCY_TABLE_SUPPORTED(x)   \
3049911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_SCAN_FREQ_TABLE_OFF] & \
3050911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_SCAN_FREQ_TABLE_MASK)
3051911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3052911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_GET_TRANS_LAYER_CONF_MASK 0x08
3053911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_GET_TRANS_LAYER_CONF_OFF 30
3054911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GET_MWS_TRANS_LAYER_CFG_SUPPORTED(x)     \
3055911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_GET_TRANS_LAYER_CONF_OFF] & \
3056911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_GET_TRANS_LAYER_CONF_MASK)
3057911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3058911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_PATTERN_CONF_MASK 0x10
3059911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_PATTERN_CONF_OFF 30
3060911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_PATTERN_CONFIGURATION_SUPPORTED(x) \
3061911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_PATTERN_CONF_OFF] &   \
3062911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_PATTERN_CONF_MASK)
3063ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
30643aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/* Supported Commands (Byte 30 bit 5) */
3065911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_TRIG_CLK_CAP_MASK 0x20
3066911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_TRIG_CLK_CAP_OFF 30
3067911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_TRIG_CLK_CAP_SUPPORTED(x)        \
3068911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_TRIG_CLK_CAP_OFF] & \
3069911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_TRIG_CLK_CAP_MASK)
30703aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
3071ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 30 bit 6-7) */
3072911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_TRUNCATED_PAGE 0x06
3073911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_TRUNCATED_PAGE_OFF 30
3074911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TRUNCATED_PAGE_SUPPORTED(x) \
3075911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_TRUNCATED_PAGE_OFF] & HCI_SUPP_COMMANDS_TRUNCATED_PAGE)
3076ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
3077911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_TRUNCATED_PAGE_CANCEL 0x07
3078911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_TRUNCATED_PAGE_CANCEL_OFF 30
3079911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TRUNCATED_PAGE_CANCEL_SUPPORTED(x)        \
3080911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_TRUNCATED_PAGE_CANCEL_OFF] & \
3081911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_TRUNCATED_PAGE_CANCEL)
3082ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
3083ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 31 bit 6-7) */
3084911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST 0x00
3085911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_OFF 31
3086911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONLESS_SLAVE_BRCST_SUPPORTED(x)        \
3087911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_OFF] & \
3088911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST)
3089911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3090911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_RECEIVE 0x01
3091911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_RECEIVE_OFF 31
3092911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONLESS_SLAVE_BRCST_RECEIVE_SUPPORTED(x)        \
3093911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_RECEIVE_OFF] & \
3094911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_RECEIVE)
3095911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3096911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_START_SYNC_TRAIN 0x02
3097911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_START_SYNC_TRAIN_OFF 31
3098911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_START_SYNC_TRAIN_SUPPORTED(x)        \
3099911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_START_SYNC_TRAIN_OFF] & \
3100911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_START_SYNC_TRAIN)
3101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RECEIVE_SYNC_TRAIN 0x03
3103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RECEIVE_SYNC_TRAIN_OFF 31
3104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RECEIVE_SYNC_TRAIN_SUPPORTED(x)        \
3105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_RECEIVE_SYNC_TRAIN_OFF] & \
3106911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_RECEIVE_SYNC_TRAIN)
3107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_RESERVED_LT_ADDR 0x04
3109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_RESERVED_LT_ADDR_OFF 31
3110911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_RESERVED_LT_ADDR_SUPPORTED(x)        \
3111911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_RESERVED_LT_ADDR_OFF] & \
3112911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_RESERVED_LT_ADDR)
3113911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DELETE_RESERVED_LT_ADDR 0x05
3115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DELETE_RESERVED_LT_ADDR_OFF 31
3116911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DELETE_RESERVED_LT_ADDR_SUPPORTED(x)        \
3117911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DELETE_RESERVED_LT_ADDR_OFF] & \
3118911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_DELETE_RESERVED_LT_ADDR)
3119911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_DATA 0x06
3121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_DATA_OFF 31
3122911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONLESS_SLAVE_BRCST_DATA_SUPPORTED(x)        \
3123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_DATA_OFF] & \
3124911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_DATA)
3125911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SYNC_TRAIN_PARAM 0x07
3127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SYNC_TRAIN_PARAM_OFF 31
3128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SYNC_TRAIN_PARAM_SUPPORTED(x)        \
3129911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SYNC_TRAIN_PARAM_OFF] & \
3130911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SYNC_TRAIN_PARAM)
3131ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
3132ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 32 bit 0) */
3133911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM 0x00
3134911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM_OFF 32
3135911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SYNC_TRAIN_PARAM_SUPPORTED(x)        \
3136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM_OFF] & \
3137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM)
3138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_MASK 0x02
3140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_OFF 32
3141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_SUPPORTED(x)        \
3142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_OFF] & \
3143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_MASK)
3144911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3145911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_MASK 0x04
3146911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_OFF 32
3147911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SECURE_CONNS_SUPPORT_SUPPORTED(x)        \
3148911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_OFF] & \
3149911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_MASK)
3150911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3151911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_MASK 0x08
3152911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_OFF 32
3153911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SECURE_CONNS_SUPPORT_SUPPORTED(x)        \
3154911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_OFF] & \
3155911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_MASK)
3156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_MASK 0x10
3158911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_OFF 32
3159911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AUTHENT_PAYLOAD_TOUT_SUPPORTED(x)        \
3160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_OFF] & \
3161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_MASK)
3162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3163911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_MASK 0x20
3164911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_OFF 32
3165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AUTHENT_PAYLOAD_TOUT_SUPPORTED(x)        \
3166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_OFF] & \
3167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_MASK)
31687fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
31697fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_MASK 0x40
3170911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_OFF 32
3171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_OOB_EXTENDED_DATA_SUPPORTED(x)        \
3172911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_OFF] & \
3173911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_MASK)
31747fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
3175911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_MASK 0x80
3176911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_OFF 32
3177911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE_SUPPORTED(x)        \
3178911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_OFF] & \
3179911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_MASK)
3180ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
31817fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* supported LE remote control connection parameter request reply */
3182911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_MASK 0x10
3183911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_OFF 33
3184911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_RC_CONN_PARAM_UPD_RPY_SUPPORTED(x)        \
3185911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_OFF] & \
3186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_MASK)
3187911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3188911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RLE_RC_CONN_PARAM_UPD_NEG_RPY_MASK 0x20
3189911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_NEG_RPY_OFF 33
3190911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_RC_CONN_PARAM_UPD_NEG_RPY_SUPPORTED(x)        \
3191911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_NEG_RPY_OFF] & \
3192911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_RLE_RC_CONN_PARAM_UPD_NEG_RPY_MASK)
3193ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
31944b1feb60f3478aced5e106749f00f1e75e65d454Jakub Pawlowski#define HCI_LE_2M_PHY_SUPPORTED(x) (((x)[1] & 0x01))     // BIT 8 SET
31954b1feb60f3478aced5e106749f00f1e75e65d454Jakub Pawlowski#define HCI_LE_CODED_PHY_SUPPORTED(x) (((x)[1] & 0x08))  // BIT 11 SET
31964b1feb60f3478aced5e106749f00f1e75e65d454Jakub Pawlowski
31971f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski/* LE Advertising Extension related Procedurs */
31981f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski#define HCI_LE_EXTENDED_ADVERTISING_SUPPORTED(x) \
31991f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski  (((x)[1] & 0x10))  // BIT 12 SET
32001f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski#define HCI_LE_PERIODIC_ADVERTISING_SUPPORTED(x) \
32011f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski  (((x)[1] & 0x20))  // BIT 13 SET
32021f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski
32035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif
3204