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)
358eafd45d08653bb1621c82a2f3cf922a43a0b1bc5Jakub Pawlowski#define HCI_LE_READ_PHY (0x30 | HCI_GRP_BLE_CMDS)
359eafd45d08653bb1621c82a2f3cf922a43a0b1bc5Jakub Pawlowski#define HCI_LE_SET_DEFAULT_PHY (0x31 | HCI_GRP_BLE_CMDS)
360eafd45d08653bb1621c82a2f3cf922a43a0b1bc5Jakub Pawlowski#define HCI_LE_SET_PHY (0x32 | HCI_GRP_BLE_CMDS)
3615af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_RANDOM_ADDRESS (0x35 | HCI_GRP_BLE_CMDS)
3625af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_PARAM (0x36 | HCI_GRP_BLE_CMDS)
3635af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_DATA (0x37 | HCI_GRP_BLE_CMDS)
3645af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_SCAN_RESP (0x38 | HCI_GRP_BLE_CMDS)
3655af96d3fda59989740f694cf7683d55f66057cf4Jakub Pawlowski#define HCI_LE_SET_EXT_ADVERTISING_ENABLE (0x39 | HCI_GRP_BLE_CMDS)
3661f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski#define HCI_LE_READ_MAXIMUM_ADVERTISING_DATA_LENGTH (0x003A | HCI_GRP_BLE_CMDS)
3671f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski#define HCI_LE_READ_NUMBER_OF_SUPPORTED_ADVERTISING_SETS \
3681f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski  (0x003B | HCI_GRP_BLE_CMDS)
3698e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_REMOVE_ADVERTISING_SET (0x003C | HCI_GRP_BLE_CMDS)
3708e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_CLEAR_ADVERTISING_SETS (0x003D | HCI_GRP_BLE_CMDS)
3718e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_SET_PERIODIC_ADVERTISING_PARAM (0x003E | HCI_GRP_BLE_CMDS)
3728e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_SET_PERIODIC_ADVERTISING_DATA (0x003F | HCI_GRP_BLE_CMDS)
3738e774d1c533dde1b0775aa61933b24eef2213de4Lakshmipathi K#define HCI_LE_SET_PERIODIC_ADVERTISING_ENABLE (0x0040 | HCI_GRP_BLE_CMDS)
3749df2a552f7df99d79e1602781b37f6a6380fc71cJakub Pawlowski#define HCI_LE_SET_EXTENDED_SCAN_PARAMETERS (0x0041 | HCI_GRP_BLE_CMDS)
3759df2a552f7df99d79e1602781b37f6a6380fc71cJakub Pawlowski#define HCI_LE_SET_EXTENDED_SCAN_ENABLE (0x0042 | HCI_GRP_BLE_CMDS)
37693df860536b5a2a901248a7ae7319aabff2624dfJakub Pawlowski#define HCI_LE_EXTENDED_CREATE_CONNECTION (0x0043 | HCI_GRP_BLE_CMDS)
37756aed815e0a8fb2301b40208a9549fff928e5d7cJakub Pawlowski#define HCI_BLE_SET_PRIVACY_MODE (0x004E | HCI_GRP_BLE_CMDS)
3781f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski
379a6ce7751d84218c193eb90d390aef23217b1737eWei Wang/* LE Get Vendor Capabilities Command OCF */
380911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_VENDOR_CAP_OCF (0x0153 | HCI_GRP_VENDOR_SPECIFIC)
381a6ce7751d84218c193eb90d390aef23217b1737eWei Wang
382a6ce7751d84218c193eb90d390aef23217b1737eWei Wang/* Multi adv OCF */
383911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_MULTI_ADV_OCF (0x0154 | HCI_GRP_VENDOR_SPECIFIC)
384a6ce7751d84218c193eb90d390aef23217b1737eWei Wang
385c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* Batch scan OCF */
386911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_BATCH_SCAN_OCF (0x0156 | HCI_GRP_VENDOR_SPECIFIC)
387c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
3881a9247a1229aa65b3d1dce16426177bc5828e54dSatya Calloji/* ADV filter OCF */
389911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ADV_FILTER_OCF (0x0157 | HCI_GRP_VENDOR_SPECIFIC)
3901a9247a1229aa65b3d1dce16426177bc5828e54dSatya Calloji
391c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* Tracking OCF */
392911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_TRACK_ADV_OCF (0x0158 | HCI_GRP_VENDOR_SPECIFIC)
393c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
394e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji/* Energy info OCF */
395911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ENERGY_INFO_OCF (0x0159 | HCI_GRP_VENDOR_SPECIFIC)
396e5ba8841cd39e17c05aeb4ab65b5b761d41577daSatya Calloji
397979e3421c8111a56ebfcf176f6383df58eed52eaAndre Eisenbach/* Extended BLE Scan parameters OCF */
398911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_EXTENDED_SCAN_PARAMS_OCF (0x015A | HCI_GRP_VENDOR_SPECIFIC)
399979e3421c8111a56ebfcf176f6383df58eed52eaAndre Eisenbach
400ca58b09a9129e334f116b7bbdfc0a3834afa299eSatya Calloji/* Controller debug info OCF */
401911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONTROLLER_DEBUG_INFO_OCF (0x015B | HCI_GRP_VENDOR_SPECIFIC)
402ca58b09a9129e334f116b7bbdfc0a3834afa299eSatya Calloji
403a6ce7751d84218c193eb90d390aef23217b1737eWei Wang/* subcode for multi adv feature */
404911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_SET_PARAM 0x01
405911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_WRITE_ADV_DATA 0x02
406911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_WRITE_SCAN_RSP_DATA 0x03
407911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_SET_RANDOM_ADDR 0x04
408911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_MULTI_ADV_ENB 0x05
409a6ce7751d84218c193eb90d390aef23217b1737eWei Wang
410a6ce7751d84218c193eb90d390aef23217b1737eWei Wang/* multi adv VSE subcode */
4119ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* multi adv instance state change */
412911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VSE_SUBCODE_BLE_MULTI_ADV_ST_CHG 0x55
413a6ce7751d84218c193eb90d390aef23217b1737eWei Wang
414c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* subcode for batch scan feature */
415911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_BATCH_SCAN_ENB_DISAB_CUST_FEATURE 0x01
416911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_BATCH_SCAN_SET_STORAGE_PARAM 0x02
417911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_BATCH_SCAN_SET_PARAMS 0x03
418911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define BTM_BLE_BATCH_SCAN_READ_RESULTS 0x04
419c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
420c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* batch scan VSE subcode */
421911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VSE_SUBCODE_BLE_THRESHOLD_SUB_EVT 0x54 /* Threshold event */
422c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
423c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji/* tracking sub event */
424911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VSE_SUBCODE_BLE_TRACKING_SUB_EVT 0x56 /* Tracking event */
425c4e2596a112a0dd63ac681b1226548c0f95e828cSatya Calloji
426858b2e367fdf3dd1385c60aa45ac2c13d95dac69Myles Watson/* debug info sub event */
427858b2e367fdf3dd1385c60aa45ac2c13d95dac69Myles Watson#define HCI_VSE_SUBCODE_DEBUG_INFO_SUB_EVT 0x57
428858b2e367fdf3dd1385c60aa45ac2c13d95dac69Myles Watson
4295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* LE supported states definition */
430911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_STATE 0x00000001
431911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SCAN_STATE 0x00000002
432911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_INIT_STATE 0x00000004
433911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_CONN_SL_STATE 0x00000008
434911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_SCAN_STATE 0x00000010
435911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_INIT_STATE 0x00000020
436911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_MA_STATE 0x00000040
437911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ADV_SL_STATE 0x00000080
438911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SCAN_INIT_STATE 0x00000100
439911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SCAN_MA_STATE 0x00000200
440911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SCAN_SL_STATE 0x00000400
441911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_INIT_MA_STATE 0x00000800
4425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
4437fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* LE Supported States */
4447fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Non Connectable Adv state is supported. 0x0000000000000001 */
445911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK 0x01
446911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF 0
447911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_SUPPORTED(x) \
448911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_OFF] &   \
449911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_MASK)
4507fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4519ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scanneable Connectable Adv state  is supported. 0x0000000000000002 */
452911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_MASK 0x02
453911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATESSCAN_ADV_OFF 0
454911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_SUPPORTED(x) \
455911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATESSCAN_ADV_OFF] & HCI_SUPP_LE_STATES_SCAN_ADV_MASK)
4567fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4577fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Connectable Adv state is supported. 0x0000000000000004 */
458911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_MASK 0x04
459911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_OFF 0
460911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_SUPPORTED(x) \
461911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_OFF] & HCI_SUPP_LE_STATES_CONN_ADV_MASK)
4627fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4637fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Hi duty Cycle Directed Adv state is supported. 0x0000000000000008 */
464911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASK 0x08
465911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_OFF 0
466911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_SUPPORTED(x) \
467911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_OFF] &   \
468911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASK)
4697fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4707fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Passive Scan state is supported. 0x0000000000000010 */
471911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_MASK 0x10
472911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_OFF 0
473911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_PASS_SCAN_SUPPORTED(x) \
474911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_OFF] & HCI_SUPP_LE_STATES_PASS_SCAN_MASK)
4757fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4767fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Active Scan state is supported. 0x0000000000000020 */
477911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASK 0x20
478911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_OFF 0
479911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_ACTIVE_SCAN_SUPPORTED(x) \
480911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_OFF] &   \
481911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASK)
4827fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4839ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Initiating state is supported. 0x0000000000000040 (or connection state in
4849ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * master role is also supported) */
485911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASK 0x40
486911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_OFF 0
487911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_INIT_SUPPORTED(x) \
488911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_INIT_OFF] & HCI_SUPP_LE_STATES_INIT_MASK)
4897fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4909ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* connection state in slave  role is also supported. 0x0000000000000080 */
491911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SLAVE_MASK 0x80
492911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SLAVE_OFF 0
493911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SLAVE_SUPPORTED(x) \
494911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SLAVE_OFF] & HCI_SUPP_LE_STATES_SLAVE_MASK)
4957fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
4969ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non Connectable Adv state and Passive Scanning State combination is
4979ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. 0x0000000000000100 */
498911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_MASK 0x01
499911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_OFF 1
500911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_PASS_SCAN_SUPPORTED(x) \
501911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_OFF] &   \
502911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_PASS_SCAN_MASK)
5037fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5049ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv state and Passive Scanning State combination is supported.
5059ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000000200 */
506911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_MASK 0x02
507911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_OFF 1
508911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_PASS_SCAN_SUPPORTED(x) \
509911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_OFF] &   \
510911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_PASS_SCAN_MASK)
5117fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5129ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Connectable Adv state and Passive Scanning State combination is supported.
5139ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000000400 */
514911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_MASK 0x04
515911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_OFF 1
516911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_PASS_SCAN_SUPPORTED(x) \
517911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_OFF] &   \
518911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_PASS_SCAN_MASK)
5197fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5209ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycl Directed ADv and Passive Scanning State combination is
5219ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. 0x0000000000000800 */
522911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_MASK 0x08
523911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_OFF 1
524911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_SUPPORTED(x) \
525911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_MASK] &  \
526911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_PASS_SCAN_OFF)
5277fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5289ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non Connectable Adv state and Passive Scanning State combination is
5299ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. 0x0000000000001000 */
530911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_MASK 0x10
531911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_OFF 1
532911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_SUPPORTED(x) \
533911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_OFF] &   \
534911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_ACTIVE_SCAN_MASK)
5357fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5369ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv state and Active Scanning State combination is supported.
5379ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000002000 */
538911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_MASK 0x20
539911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_OFF 1
540911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_ACTIVE_SCAN_SUPPORTED(x) \
541911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_OFF] &   \
542911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_ACTIVE_SCAN_MASK)
5437fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5449ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Connectable Adv state and Active Scanning State combination is supported.
5459ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000004000 */
546911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_MASK 0x40
547911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_OFF 1
548911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_ACTIVE_SCAN_SUPPORTED(x) \
549911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_OFF] &   \
550911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_ACTIVE_SCAN_MASK)
5517fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5529ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycl Directed ADv and ACtive Scanning State combination is
5539ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. 0x0000000000008000 */
554911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_MASK 0x80
555911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_OFF 1
556911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_SUPPORTED(x) \
557911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_MASK] &  \
558911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_ACTIVE_SCAN_OFF)
5597fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5609ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non-Connectable Adv state and Initiating State combination is supported.
5619ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000010000 */
562911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_INIT_MASK 0x01
563911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_INIT_OFF 2
564911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_INIT_SUPPORTED(x) \
565911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_INIT_OFF] &   \
566911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_INIT_MASK)
5677fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5689ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv state and Initiating State combination is supported.
5699ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000020000 */
570911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_INIT_MASK 0x02
571911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_INIT_OFF 2
572911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_INIT_SUPPORTED(x) \
573911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_INIT_OFF] &   \
574911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_INIT_MASK)
5757fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5769ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non-Connectable Adv state and Master Role combination is supported.
5779ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000040000 */
578911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_MASK 0x04
579911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_OFF 2
580911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_MASTER_SUPPORTED(x) \
581911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_OFF] &   \
582911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_MASTER_MASK)
5837fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5849ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv state and Master Role combination is supported.
5859ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000000040000 */
586911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_MASK 0x08
587911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_OFF 2
588911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_MASTER_SUPPORTED(x) \
589911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_OFF] &   \
590911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_MASTER_MASK)
5917fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
5929ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Non-Connectable Adv and Slave Role combination is supported.
5939ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x000000000100000 */
594911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_MASK 0x10
595911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_OFF 2
596911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_NON_CONN_ADV_SLAVE_SUPPORTED(x) \
597911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_OFF] &   \
598911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_NON_CONN_ADV_SLAVE_MASK)
5997fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6009ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Scannable Adv and Slave Role combination is supported. 0x000000000200000 */
601911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_MASK 0x20
602911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_OFF 2
603911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_SCAN_ADV_SLAVE_SUPPORTED(x) \
604911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_OFF] &   \
605911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_SCAN_ADV_SLAVE_MASK)
6067fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6079ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Passive Scan and Initiating State combination is supported.
6089ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x000000000400000 */
609911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_INIT_MASK 0x40
610911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_INIT_OFF 2
611911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_PASS_SCAN_INIT_SUPPORTED(x) \
612911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_INIT_OFF] &   \
613911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_PASS_SCAN_INIT_MASK)
6147fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6159ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Active Scan and Initiating State combination is supported.
6169ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x000000000800000 */
617911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_MASK 0x80
618911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_OFF 2
619911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_ACTIVE_SCAN_INIT_SUPPORTED(x) \
620911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_OFF] &   \
621911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_ACTIVE_SCAN_INIT_MASK)
6227fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6239ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Passive Scan and Master Role combination is supported. 0x000000001000000 */
624911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_MASK 0x01
625911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_OFF 3
626911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_PASS_SCAN_MASTER_SUPPORTED(x) \
627911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_OFF] &   \
628911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_PASS_SCAN_MASTER_MASK)
6297fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6309ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Active Scan and Master Role combination is supported. 0x000000002000000 */
631911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_MASK 0x02
632911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_OFF 3
633911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_ACTIVE_SCAN_MASTER_SUPPORTED(x) \
634911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_OFF] &   \
635911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_ACTIVE_SCAN_MASTER_MASK)
6367fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6379ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Passive Scan and Slave Role combination is supported. 0x000000004000000 */
638911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_MASK 0x04
639911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_OFF 3
640911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_PASS_SCAN_SLAVE_SUPPORTED(x) \
641911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_OFF] &   \
642911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_PASS_SCAN_SLAVE_MASK)
6437fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6449ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Active Scan and Slave Role combination is supported. 0x000000008000000 */
645911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_MASK 0x08
646911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_OFF 3
647911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_ACTIVE_SCAN_SLAVE_SUPPORTED(x) \
648911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_OFF] &   \
649911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_ACTIVE_SCAN_SLAVE_MASK)
6507fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6519ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Link Layer Topology Added States Combo */
6529ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Initiating State and Master Role combination supported.
653911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  Master Role and Master Role combination is also supported. 0x0000000010000000
654911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  */
655911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASTER_MASK 0x10
656911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASTER_OFF 3
657911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_INIT_MASTER_SUPPORTED(x) \
658911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_INIT_MASTER_OFF] &   \
659911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_INIT_MASTER_MASK)
6607fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6619ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State . 0x0000000020000000 */
662911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASK 0x20
663911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_OFF 3
664911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LOW_DUTY_DIR_ADV_SUPPORTED(x) \
665911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LOW_DUTY_DIR_ADV_OFF] &   \
666911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LOW_DUTY_DIR_ADV_MASK)
667444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
6689ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and Passive scan combination.
6699ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000040000000 */
670911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_MASK 0x40
671911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_OFF 3
672911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_SUPPORTED(x) \
673911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_OFF] &   \
674911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_PASS_SCAN_MASK)
675444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
6769ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and Active scan combination.
6779ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000080000000 */
678911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_MASK 0x80
679911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_OFF 3
680911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_SUPPORTED(x) \
681911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_OFF] &   \
682911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_ACTIVE_SCAN_MASK)
683444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
6849ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Connectable Advertising State and Initiating State combination supported.
6859ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 0x0000000100000000 */
686911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_INIT_MASK 0x01
687911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_INIT_OFF 4
688911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_INIT_SUPPORTED(x) \
689911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_INIT_OFF] &   \
690911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_INIT_MASK)
6917fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
6929ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycle Directed Advertising State and Initiating State combination
6939ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported. */
694911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_MASK 0x02
695911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_OFF 4
696911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_INIT_SUPPORTED(x) \
697911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_OFF] &   \
698911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_INIT_MASK)
6997fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7009ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and Initiating State combination
7019ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
702911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_MASK 0x04
703911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_OFF 4
704911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_INIT_SUPPORTED(x) \
705911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_OFF] &   \
706911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_INIT_MASK)
7077fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7087fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Connectable Advertising State and Master Role combination supported.*/
709911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_MASTER_MASK 0x08
710911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_MASTER_OFF 4
711911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_MASTER_SUPPORTED(x) \
712911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_MASTER_OFF] &   \
713911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_MASTER_MASK)
7147fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7159ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycle Directed Advertising State and Master Role combination
7169ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
717911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_MASK 0x10
718911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_OFF 4
719911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_MASTER_SUPPORTED(x) \
720911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_OFF] &   \
721911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_MASTER_MASK)
7227fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7239ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and Master Role combination
7249ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
725911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_MASK 0x20
726911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_OFF 4
727911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_MASTER_SUPPORTED(x) \
728911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_OFF] &   \
729911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_MASTER_MASK)
7307fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7317fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Connectable Advertising State and Slave Role combination supported. */
732911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_MASK 0x40
733911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_OFF 4
734911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_CONN_ADV_SLAVE_SUPPORTED(x) \
735911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_OFF] &   \
736911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_CONN_ADV_SLAVE_MASK)
7377fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7389ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* High Duty Cycle Directed Advertising State and slave Role combination
7399ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
740911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_MASK 0x80
741911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_OFF 4
742911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_SUPPORTED(x) \
743911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_OFF] &   \
744911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_HI_DUTY_DIR_ADV_SLAVE_MASK)
7457fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7469ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Low Duty Cycle Directed Advertising State and slave Role combination
7479ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * supported.*/
748911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_MASK 0x01
749911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_OFF 5
750911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_SUPPORTED(x) \
751911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_OFF] &   \
752911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_LO_DUTY_DIR_ADV_SLAVE_MASK)
7537fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7547fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Initiating State and Slave Role combination supported.
7557fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta   Master Role and Slave Role combination also supported.
7567fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta */
757911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_MASK 0x02
758911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_OFF 5
759911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_STATES_INIT_MASTER_SLAVE_SUPPORTED(x) \
760911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_OFF] &   \
761911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_LE_STATES_INIT_MASTER_SLAVE_MASK)
7627fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
7635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
764ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Definitions for HCI Events
7655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
766911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_COMP_EVT 0x01
767911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_RESULT_EVT 0x02
768911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONNECTION_COMP_EVT 0x03
769911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONNECTION_REQUEST_EVT 0x04
770911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECTION_COMP_EVT 0x05
771911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTHENTICATION_COMP_EVT 0x06
772911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RMT_NAME_REQUEST_COMP_EVT 0x07
773911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCRYPTION_CHANGE_EVT 0x08
774911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_LINK_KEY_EVT 0x09
775911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MASTER_LINK_KEY_COMP_EVT 0x0A
776911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_FEATURES_COMP_EVT 0x0B
777911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_VERSION_COMP_EVT 0x0C
778911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_SETUP_COMP_EVT 0x0D
779911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_COMPLETE_EVT 0x0E
780911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_STATUS_EVT 0x0F
781911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HARDWARE_ERROR_EVT 0x10
782911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLUSH_OCCURED_EVT 0x11
783911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_CHANGE_EVT 0x12
784911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NUM_COMPL_DATA_PKTS_EVT 0x13
785911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_CHANGE_EVT 0x14
786911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RETURN_LINK_KEYS_EVT 0x15
787911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_EVT 0x16
788911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_EVT 0x17
789911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_NOTIFICATION_EVT 0x18
790911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_COMMAND_EVT 0x19
791911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_BUF_OVERFLOW_EVT 0x1A
792911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_SLOTS_CHANGED_EVT 0x1B
793911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLOCK_OFF_COMP_EVT 0x1C
794911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONN_PKT_TYPE_CHANGE_EVT 0x1D
795911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_VIOLATION_EVT 0x1E
796911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_MODE_CHANGE_EVT 0x1F
797911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_CHNG_EVT 0x20
798911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPECIFICATION_COMP_EVT 0x21
799911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_RSSI_RESULT_EVT 0x22
800911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_EXT_FEATURES_COMP_EVT 0x23
801911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_CONNECTION_COMP_EVT 0x2C
802911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_CONNECTION_CHANGED_EVT 0x2D
803911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_SUB_RATE_EVT 0x2E
804911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXTENDED_INQUIRY_RESULT_EVT 0x2F
8055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_ENCRYPTION_KEY_REFRESH_COMP_EVT 0x30
806911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAPABILITY_REQUEST_EVT 0x31
807911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAPABILITY_RESPONSE_EVT 0x32
808911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_CONFIRMATION_REQUEST_EVT 0x33
809911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_REQUEST_EVT 0x34
810911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_OOB_DATA_REQUEST_EVT 0x35
811911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SIMPLE_PAIRING_COMPLETE_EVT 0x36
812911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_SUPER_TOUT_CHANGED_EVT 0x38
813911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENHANCED_FLUSH_COMPLETE_EVT 0x39
814911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_NOTIFY_EVT 0x3B
815911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_KEYPRESS_NOTIFY_EVT 0x3C
816911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RMT_HOST_SUP_FEAT_NOTIFY_EVT 0x3D
8175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
8185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*#define HCI_GENERIC_AMP_LINK_KEY_NOTIF_EVT  0x3E Removed from spec */
819911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PHYSICAL_LINK_COMP_EVT 0x40
820911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANNEL_SELECTED_EVT 0x41
821911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISC_PHYSICAL_LINK_COMP_EVT 0x42
8225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_PHY_LINK_LOSS_EARLY_WARNING_EVT 0x43
823911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PHY_LINK_RECOVERY_EVT 0x44
824911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOGICAL_LINK_COMP_EVT 0x45
825911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISC_LOGICAL_LINK_COMP_EVT 0x46
826911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPEC_MODIFY_COMP_EVT 0x47
827911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NUM_COMPL_DATA_BLOCKS_EVT 0x48
828911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SHORT_RANGE_MODE_COMPLETE_EVT 0x4C
829911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_STATUS_CHANGE_EVT 0x4D
8307fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define HCI_SET_TRIGGERED_CLOCK_CAPTURE_EVT 0x4E
8315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
8325738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ULP HCI Event */
833911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_EVENT 0x3e
8345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* ULP Event sub code */
835911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_CONN_COMPLETE_EVT 0x01
836911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ADV_PKT_RPT_EVT 0x02
837911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_LL_CONN_PARAM_UPD_EVT 0x03
838911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_READ_REMOTE_FEAT_CMPL_EVT 0x04
839911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_LTK_REQ_EVT 0x05
840911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_RC_PARAM_REQ_EVT 0x06
841911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_DATA_LENGTH_CHANGE_EVT 0x07
842911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_ENHANCED_CONN_COMPLETE_EVT 0x0a
843911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_DIRECT_ADV_EVT 0x0b
844eafd45d08653bb1621c82a2f3cf922a43a0b1bc5Jakub Pawlowski#define HCI_LE_PHY_UPDATE_COMPLETE_EVT 0x0C
845801db30048049a63869587af4b89a6e5a4dabb9bJakub Pawlowski#define HCI_LE_EXTENDED_ADVERTISING_REPORT_EVT 0x0D
846751381c64fee63590f0888c8eac5c8a474f1e25bJakub Pawlowski#define HCI_LE_ADVERTISING_SET_TERMINATED_EVT 0x12
8477fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
8487fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Definitions for LE Channel Map */
849911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_CHNL_MAP_SIZE 5
8505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
851911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VENDOR_SPECIFIC_EVT 0xFF /* Vendor specific events */
852911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NAP_TRACE_EVT                       \
853911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  0xFF /* was define 0xFE, 0xFD, change to 0xFF \
854911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson          because conflict w/ TCI_EVT and per   \
855911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson          specification compliant */
8565738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
8575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
858ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Defentions for HCI Error Codes that are past in the events
8595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
860911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUCCESS 0x00
861911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PENDING 0x00
862911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ILLEGAL_COMMAND 0x01
863911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_NO_CONNECTION 0x02
864911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HW_FAILURE 0x03
865911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PAGE_TIMEOUT 0x04
866911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_AUTH_FAILURE 0x05
867911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_KEY_MISSING 0x06
868911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MEMORY_FULL 0x07
869911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONNECTION_TOUT 0x08
870911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MAX_NUM_OF_CONNECTIONS 0x09
871911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MAX_NUM_OF_SCOS 0x0A
872911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONNECTION_EXISTS 0x0B
873911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_COMMAND_DISALLOWED 0x0C
874911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_REJECT_RESOURCES 0x0D
875911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_REJECT_SECURITY 0x0E
876911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_REJECT_DEVICE 0x0F
877911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_TIMEOUT 0x10
878911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNSUPPORTED_VALUE 0x11
879911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ILLEGAL_PARAMETER_FMT 0x12
880911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PEER_USER 0x13
881911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PEER_LOW_RESOURCES 0x14
882911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PEER_POWER_OFF 0x15
883911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONN_CAUSE_LOCAL_HOST 0x16
884911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_REPEATED_ATTEMPTS 0x17
885911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PAIRING_NOT_ALLOWED 0x18
886911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNKNOWN_LMP_PDU 0x19
887911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNSUPPORTED_REM_FEATURE 0x1A
888911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_SCO_OFFSET_REJECTED 0x1B
889911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_SCO_INTERVAL_REJECTED 0x1C
890911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_SCO_AIR_MODE 0x1D
891911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_INVALID_LMP_PARAM 0x1E
892911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNSPECIFIED 0x1F
893911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNSUPPORTED_LMP_FEATURE 0x20
894911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ROLE_CHANGE_NOT_ALLOWED 0x21
895911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LMP_RESPONSE_TIMEOUT 0x22
896911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LMP_ERR_TRANS_COLLISION 0x23
897911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LMP_PDU_NOT_ALLOWED 0x24
898911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ENCRY_MODE_NOT_ACCEPTABLE 0x25
899911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNIT_KEY_USED 0x26
900911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_QOS_NOT_SUPPORTED 0x27
901911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_INSTANT_PASSED 0x28
902911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED 0x29
903911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_DIFF_TRANSACTION_COLLISION 0x2A
904911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNDEFINED_0x2B 0x2B
905911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_QOS_UNACCEPTABLE_PARAM 0x2C
906911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_QOS_REJECTED 0x2D
907911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CHAN_CLASSIF_NOT_SUPPORTED 0x2E
908911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_INSUFFCIENT_SECURITY 0x2F
909911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_PARAM_OUT_OF_RANGE 0x30
910911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNDEFINED_0x31 0x31
911911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ROLE_SWITCH_PENDING 0x32
912911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNDEFINED_0x33 0x33
913911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_RESERVED_SLOT_VIOLATION 0x34
914911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_ROLE_SWITCH_FAILED 0x35
915911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_INQ_RSP_DATA_TOO_LARGE 0x36
916911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_SIMPLE_PAIRING_NOT_SUPPORTED 0x37
917911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_HOST_BUSY_PAIRING 0x38
918911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_REJ_NO_SUITABLE_CHANNEL 0x39
919911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONTROLLER_BUSY 0x3A
920911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_UNACCEPT_CONN_INTERVAL 0x3B
921911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_DIRECTED_ADVERTISING_TIMEOUT 0x3C
922911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONN_TOUT_DUE_TO_MIC_FAILURE 0x3D
923911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CONN_FAILED_ESTABLISHMENT 0x3E
924911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MAC_CONNECTION_FAILED 0x3F
9255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
926ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* ConnectionLess Broadcast errors */
927911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LT_ADDR_ALREADY_IN_USE 0x40
928911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_LT_ADDR_NOT_ALLOCATED 0x41
929911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CLB_NOT_ENABLED 0x42
930911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_CLB_DATA_TOO_BIG 0x43
931ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
932911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERR_MAX_ERR 0x43
9335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
934911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HINT_TO_RECREATE_AMP_PHYS_LINK 0xFF
9355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
9365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
937ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Definitions for HCI enable event
9385738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
939911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000001)
940911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_RESULT_EV(p) (*((uint32_t*)(p)) & 0x00000002)
941911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONNECTION_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000004)
942911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONNECTION_REQUEST_EV(p) (*((uint32_t*)(p)) & 0x00000008)
943911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECTION_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000010)
944911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTHENTICATION_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000020)
945911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RMT_NAME_REQUEST_COMPL_EV(p) (*((uint32_t*)(p)) & 0x00000040)
946911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_ENCRPT_ENABLE_EV(p) (*((uint32_t*)(p)) & 0x00000080)
947911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_LINK_KEY_EV(p) (*((uint32_t*)(p)) & 0x00000100)
948911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MASTER_LINK_KEY_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00000200)
949911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_FEATURES_COMPL_EV(p) (*((uint32_t*)(p)) & 0x00000400)
950911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RMT_VERSION_COMPL_EV(p) (*((uint32_t*)(p)) & 0x00000800)
951911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_SETUP_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00001000)
952911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_COMPLETE_EV(p) (*((uint32_t*)(p)) & 0x00002000)
953911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_STATUS_EV(p) (*((uint32_t*)(p)) & 0x00004000)
954911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HARDWARE_ERROR_EV(p) (*((uint32_t*)(p)) & 0x00008000)
955911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLASH_OCCURED_EV(p) (*((uint32_t*)(p)) & 0x00010000)
956911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_CHANGE_EV(p) (*((uint32_t*)(p)) & 0x00020000)
957911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NUM_COMPLETED_PKTS_EV(p) (*((uint32_t*)(p)) & 0x00040000)
958911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_CHANGE_EV(p) (*((uint32_t*)(p)) & 0x00080000)
959911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RETURN_LINK_KEYS_EV(p) (*((uint32_t*)(p)) & 0x00100000)
960911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_EV(p) (*((uint32_t*)(p)) & 0x00200000)
961911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_EV(p) (*((uint32_t*)(p)) & 0x00400000)
962911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_NOTIFICATION_EV(p) (*((uint32_t*)(p)) & 0x00800000)
963911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_COMMAND_EV(p) (*((uint32_t*)(p)) & 0x01000000)
964911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_BUF_OVERFLOW_EV(p) (*((uint32_t*)(p)) & 0x02000000)
965911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_SLOTS_CHANGE_EV(p) (*((uint32_t*)(p)) & 0x04000000)
966911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLOCK_OFFSET_COMP_EV(p) (*((uint32_t*)(p)) & 0x08000000)
967911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONN_PKT_TYPE_CHANGED_EV(p) (*((uint32_t*)(p)) & 0x10000000)
968911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_VIOLATION_EV(p) (*((uint32_t*)(p)) & 0x20000000)
969911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_MODE_CHANGED_EV(p) (*((uint32_t*)(p)) & 0x40000000)
970911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_CHNG_EV(p) (*((uint32_t*)(p)) & 0x80000000)
9715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
9725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* the default event mask for 2.1+EDR (Lisbon) does not include Lisbon events */
973911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_EVENT_MASK_0 0xFFFFFFFF
974911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_EVENT_MASK_1 0x00001FFF
9755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
9765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* the event mask for 2.0 + EDR and later (includes Lisbon events) */
977911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LISBON_EVENT_MASK_0 0xFFFFFFFF
978911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LISBON_EVENT_MASK_1 0x1DBFFFFF
979911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LISBON_EVENT_MASK \
980911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  { 0x0D, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
981911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LISBON_EVENT_MASK_EXT \
982911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  { 0x1D, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
983911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DUMO_EVENT_MASK_EXT \
984911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  { 0x3D, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
9855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*  0x00001FFF FFFFFFFF Default - no Lisbon events
9865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00000800 00000000 Synchronous Connection Complete Event
9875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00001000 00000000 Synchronous Connection Changed Event
9885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00002000 00000000 Sniff Subrate Event
9895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00004000 00000000 Extended Inquiry Result Event
9905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00008000 00000000 Encryption Key Refresh Complete Event
9915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00010000 00000000 IO Capability Request Event
9925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00020000 00000000 IO Capability Response Event
9935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00040000 00000000 User Confirmation Request Event
9945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00080000 00000000 User Passkey Request Event
9955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00100000 00000000 Remote OOB Data Request Event
9965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00200000 00000000 Simple Pairing Complete Event
9975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00400000 00000000 Generic AMP Link Key Notification Event
9985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x00800000 00000000 Link Supervision Timeout Changed Event
9995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x01000000 00000000 Enhanced Flush Complete Event
10005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x04000000 00000000 User Passkey Notification Event
10015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x08000000 00000000 Keypress Notification Event
10025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x10000000 00000000 Remote Host Supported Features Notification Event
10035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x20000000 00000000 LE Meta Event
10045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project */
10055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* the event mask for AMP controllers */
1007911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_EVENT_MASK_3_0 "\x00\x00\x00\x00\x00\x00\x3F\xFF"
10085738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*  0x0000000000000000 No events specified (default)
10105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000001 Physical Link Complete Event
10115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000002 Channel Selected Event
10125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000004 Disconnection Physical Link Event
10135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000008 Physical Link Loss Early Warning Event
10145738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000010 Physical Link Recovery Event
10155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000020 Logical Link Complete Event
10165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000040 Disconnection Logical Link Complete Event
10175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000080 Flow Spec Modify Complete Event
10185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000100 Number of Completed Data Blocks Event
10195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000200 AMP Start Test Event
10205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000400 AMP Test End Event
10215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000000800 AMP Receiver Report Event
10225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000001000 Short Range Mode Change Complete Event
10235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project    0x0000000000002000 AMP Status Change Event
10245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
10255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10263aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/* the event mask page 2 (CLB + CSA4) for BR/EDR controller */
1027911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_2_EVENT_MASK "\x00\x00\x00\x00\x00\x7F\xC0\x00"
10283aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/*  0x0000000000004000 Triggered Clock Capture Event
10293aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000008000 Sync Train Complete Event
10303aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000010000 Sync Train Received Event
10313aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000020000 Connectionless Broadcast Receive Event
10323aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000040000 Connectionless Broadcast Timeout Event
10333aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000080000 Truncated Page Complete Event
10343aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000100000 Salve Page Response Timeout Event
10353aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000200000 Connectionless Broadcast Channel Map Change Event
10363aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach    0x0000000000400000 Inquiry Response Notification Event
10373aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach*/
1038d19e0785e662e640191a075eda07acce61c2aedaMarie Janssen#if (BLE_PRIVACY_SPT == TRUE)
1039444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* BLE event mask */
1040911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_EVENT_MASK_DEF "\x00\x00\x00\x00\x00\x00\x07\xff"
1041444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji#else
1042911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLE_EVENT_MASK_DEF "\x00\x00\x00\x00\x00\x00\x00\x7f"
1043444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji#endif
10445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1045ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Definitions for packet type masks (BT1.2 and BT2.0 definitions)
10465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1047911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_2_DH1 0x0002
1048911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_3_DH1 0x0004
1049911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DM1 0x0008
1050911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DH1 0x0010
1051911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_HV1 0x0020
1052911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_HV2 0x0040
1053911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_HV3 0x0080
1054911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_2_DH3 0x0100
1055911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_3_DH3 0x0200
1056911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DM3 0x0400
1057911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DH3 0x0800
1058911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_2_DH5 0x1000
1059911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_NO_3_DH5 0x2000
1060911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DM5 0x4000
1061911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PKT_TYPES_MASK_DH5 0x8000
10625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Packet type should be one of valid but at least one should be specified */
1064911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VALID_SCO_PKT_TYPE(t)                         \
1065911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((((t) &                                               \
1066911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson      ~(HCI_PKT_TYPES_MASK_HV1 | HCI_PKT_TYPES_MASK_HV2 | \
1067911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_HV3)) == 0)) &&                \
1068911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   ((t) != 0))
10695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Packet type should not be invalid and at least one should be specified */
1071911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VALID_ACL_PKT_TYPE(t)                                             \
1072911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((((t) &                                                                   \
1073911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson      ~(HCI_PKT_TYPES_MASK_DM1 | HCI_PKT_TYPES_MASK_DH1 |                     \
1074911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_DM3 | HCI_PKT_TYPES_MASK_DH3 |                     \
1075911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_DM5 | HCI_PKT_TYPES_MASK_DH5 |                     \
1076911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_NO_2_DH1 | HCI_PKT_TYPES_MASK_NO_3_DH1 |           \
1077911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_NO_2_DH3 | HCI_PKT_TYPES_MASK_NO_3_DH3 |           \
1078911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_PKT_TYPES_MASK_NO_2_DH5 | HCI_PKT_TYPES_MASK_NO_3_DH5)) == 0)) && \
1079911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   (((t) & (HCI_PKT_TYPES_MASK_DM1 | HCI_PKT_TYPES_MASK_DH1 |                 \
1080911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson            HCI_PKT_TYPES_MASK_DM3 | HCI_PKT_TYPES_MASK_DH3 |                 \
1081911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson            HCI_PKT_TYPES_MASK_DM5 | HCI_PKT_TYPES_MASK_DH5)) != 0))
10825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
10839ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* Packet type should be one of valid but at least one should be specified for
10849ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * 1.2 */
1085181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth#define HCI_VALID_ESCO_PKT_TYPE(t)                                           \
1086181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth  (((((t) &                                                                  \
1087181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth      ~(HCI_ESCO_PKT_TYPES_MASK_EV3 | HCI_ESCO_PKT_TYPES_MASK_EV4 |          \
1088181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth        HCI_ESCO_PKT_TYPES_MASK_EV5)) == 0)) &&                              \
1089181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth   ((t) != 0)) /* Packet type should be one of valid but at least one should \
1090181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth                  be specified */
1091181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth
1092181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth#define HCI_VALID_ESCO_SCOPKT_TYPE(t)                           \
1093181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth  (((((t) &                                                     \
1094181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth      ~(ESCO_PKT_TYPES_MASK_HV1 | HCI_ESCO_PKT_TYPES_MASK_HV2 | \
1095181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth        HCI_ESCO_PKT_TYPES_MASK_HV3)) == 0)) &&                 \
1096911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   ((t) != 0))
1097911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1098911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VALID_SCO_ALL_PKT_TYPE(t)                                         \
1099911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((((t) &                                                                   \
1100181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth      ~(ESCO_PKT_TYPES_MASK_HV1 | HCI_ESCO_PKT_TYPES_MASK_HV2 |               \
1101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_ESCO_PKT_TYPES_MASK_HV3 | HCI_ESCO_PKT_TYPES_MASK_EV3 |           \
1102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson        HCI_ESCO_PKT_TYPES_MASK_EV4 | HCI_ESCO_PKT_TYPES_MASK_EV5)) == 0)) && \
1103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   ((t) != 0))
11045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1106ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Define parameters to allow role switch during create connection
11075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CR_CONN_NOT_ALLOW_SWITCH 0x00
1109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CR_CONN_ALLOW_SWITCH 0x01
11105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1112ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Hold Mode command destination
11135738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HOLD_MODE_DEST_LOCAL_DEVICE 0x00
1115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HOLD_MODE_DEST_RMT_DEVICE 0x01
11165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11175738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1118ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *  Definitions for different HCI parameters
11195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PER_INQ_MIN_MAX_PERIOD 0x0003
1121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PER_INQ_MAX_MAX_PERIOD 0xFFFF
1122911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PER_INQ_MIN_MIN_PERIOD 0x0002
1123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PER_INQ_MAX_MIN_PERIOD 0xFFFE
11245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1125911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_INQUIRY_LENGTH 0x30
11265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_INQ_LAP 0x9E8B00
1128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_INQ_LAP 0x9E8B3F
11295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCI role defenitions */
1131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_MASTER 0x00
1132911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_SLAVE 0x01
1133911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_UNKNOWN 0xff
11345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCI mode defenitions */
1136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_ACTIVE 0x00
1137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_HOLD 0x01
1138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_SNIFF 0x02
1139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MODE_PARK 0x03
11405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCI Flow Control Mode defenitions */
1142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PACKET_BASED_FC_MODE 0x00
1143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BLOCK_BASED_FC_MODE 0x01
11445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define Packet types as requested by the Host */
1146911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_NONE 0x0000
1147911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DM1 0x0008
1148911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DH1 0x0010
1149911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_AUX1 0x0200
1150911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DM3 0x0400
1151911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DH3 0x0800
1152911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DM5 0x4000
1153911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACL_PKT_TYPE_DH5 0x8000
11545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define key type in the Master Link Key command */
1156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USE_SEMI_PERMANENT_KEY 0x00
1157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USE_TEMPORARY_KEY 0x01
11585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page scan period modes */
1160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_R0 0x00
1161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_R1 0x01
1162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_REP_MODE_R2 0x02
11635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define limits for page scan repetition modes */
1165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_R1_LIMIT 0x0800
1166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_R2_LIMIT 0x1000
11675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page scan period modes */
1169911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_PER_MODE_P0 0x00
1170911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_PER_MODE_P1 0x01
1171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_PER_MODE_P2 0x02
11725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page scan modes */
1174911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MANDATARY_PAGE_SCAN_MODE 0x00
1175911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OPTIONAL_PAGE_SCAN_MODE1 0x01
1176911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OPTIONAL_PAGE_SCAN_MODE2 0x02
1177911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OPTIONAL_PAGE_SCAN_MODE3 0x03
11785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11795738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page and inquiry scan types */
1180911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SCAN_TYPE_STANDARD 0x00
1181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SCAN_TYPE_INTERLACED 0x01 /* 1.2 devices or later */
1182911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_SCAN_TYPE HCI_SCAN_TYPE_STANDARD
11835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for quality of service service types */
1185911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SERVICE_NO_TRAFFIC 0x00
1186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SERVICE_BEST_EFFORT 0x01
1187911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SERVICE_GUARANTEED 0x02
11885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1189911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_LATENCY_DO_NOT_CARE 0xFFFFFFFF
1190911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_DELAY_DO_NOT_CARE 0xFFFFFFFF
11915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Flow Specification */
11935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FLOW_SPEC_LATENCY_DO_NOT_CARE 0xFFFFFFFF
11945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for AFH Channel Map */
1196911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AFH_CHANNEL_MAP_LEN 10
11975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
11985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Extended Inquiry Response */
1199911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_INQ_RESPONSE_LEN 240
1200911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_FLAGS_TYPE BT_EIR_FLAGS_TYPE
1201911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_MORE_16BITS_UUID_TYPE BT_EIR_MORE_16BITS_UUID_TYPE
1202911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_COMPLETE_16BITS_UUID_TYPE BT_EIR_COMPLETE_16BITS_UUID_TYPE
1203911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_MORE_32BITS_UUID_TYPE BT_EIR_MORE_32BITS_UUID_TYPE
1204911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_COMPLETE_32BITS_UUID_TYPE BT_EIR_COMPLETE_32BITS_UUID_TYPE
1205911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_MORE_128BITS_UUID_TYPE BT_EIR_MORE_128BITS_UUID_TYPE
1206911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_COMPLETE_128BITS_UUID_TYPE BT_EIR_COMPLETE_128BITS_UUID_TYPE
1207911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SHORTENED_LOCAL_NAME_TYPE BT_EIR_SHORTENED_LOCAL_NAME_TYPE
1208911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_COMPLETE_LOCAL_NAME_TYPE BT_EIR_COMPLETE_LOCAL_NAME_TYPE
1209911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_TX_POWER_LEVEL_TYPE BT_EIR_TX_POWER_LEVEL_TYPE
1210911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_MANUFACTURER_SPECIFIC_TYPE BT_EIR_MANUFACTURER_SPECIFIC_TYPE
1211911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SERVICE_DATA_TYPE BT_EIR_SERVICE_DATA_TYPE
1212911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SERVICE_DATA_16BITS_UUID_TYPE \
1213911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  BT_EIR_SERVICE_DATA_16BITS_UUID_TYPE
1214911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SERVICE_DATA_32BITS_UUID_TYPE \
1215911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  BT_EIR_SERVICE_DATA_32BITS_UUID_TYPE
1216911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_SERVICE_DATA_128BITS_UUID_TYPE \
1217911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  BT_EIR_SERVICE_DATA_128BITS_UUID_TYPE
1218911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_OOB_BD_ADDR_TYPE BT_EIR_OOB_BD_ADDR_TYPE
1219911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_OOB_COD_TYPE BT_EIR_OOB_COD_TYPE
1220911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_OOB_SSP_HASH_C_TYPE BT_EIR_OOB_SSP_HASH_C_TYPE
1221911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EIR_OOB_SSP_RAND_R_TYPE BT_EIR_OOB_SSP_RAND_R_TYPE
12225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Write Simple Pairing Mode */
1224911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SP_MODE_UNDEFINED 0x00
1225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SP_MODE_ENABLED 0x01
12265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for Write Simple Pairing Debug Mode */
1228911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SPD_MODE_DISABLED 0x00
1229911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SPD_MODE_ENABLED 0x01
12305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1231444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* Definitions for Write Secure Connections Host Support */
1232911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SC_MODE_DISABLED 0x00
1233911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SC_MODE_ENABLED 0x01
1234444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
12355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Definitions for IO Capability Response/Command */
1236911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_DISPLAY_ONLY 0x00
1237911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_DISPLAY_YESNO 0x01
1238911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_KEYBOARD_ONLY 0x02
1239911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_NO_IO 0x03
12405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1241911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OOB_AUTH_DATA_NOT_PRESENT 0x00
1242911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_OOB_REM_AUTH_DATA_PRESENT 0x01
12435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1244911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MITM_PROTECT_NOT_REQUIRED 0x00
1245911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MITM_PROTECT_REQUIRED 0x01
12465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Policy settings status */
1248911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISABLE_ALL_LM_MODES 0x0000
1249911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_MASTER_SLAVE_SWITCH 0x0001
1250911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_HOLD_MODE 0x0002
1251911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_SNIFF_MODE 0x0004
1252911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_PARK_MODE 0x0008
12535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* By default allow switch, because host can not allow that */
12555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* that until he created the connection */
1256911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_POLICY_SETTINGS HCI_DISABLE_ALL_LM_MODES
12575738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12585738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Filters that are sent in set filter command */
1259911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_TYPE_CLEAR_ALL 0x00
1260911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_INQUIRY_RESULT 0x01
1261911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_CONNECTION_SETUP 0x02
12625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1263911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_COND_NEW_DEVICE 0x00
1264911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_COND_DEVICE_CLASS 0x01
1265911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FILTER_COND_BD_ADDR 0x02
12665738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1267911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DO_NOT_AUTO_ACCEPT_CONNECT 1
12689ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* role switch disabled */
1269911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DO_AUTO_ACCEPT_CONNECT 2
12709ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* role switch enabled (1.1 errata 1115) */
1271911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DO_AUTO_ACCEPT_CONNECT_RS 3
12725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Auto accept flags */
1274911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTO_ACCEPT_OFF 0x00
12755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_AUTO_ACCEPT_ACL_CONNECTIONS 0x01
12765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_AUTO_ACCEPT_SCO_CONNECTIONS 0x02
12775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* PIN type */
1279911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_TYPE_VARIABLE 0
1280911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_TYPE_FIXED 1
12815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Loopback Modes */
1283911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_MODE_DISABLED 0
1284911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_MODE_LOCAL 1
1285911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOOPBACK_MODE_REMOTE 2
12865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1287911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define SLOTS_PER_10MS 16 /* 0.625 ms slots in a 10 ms tick */
12885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Maximum connection accept timeout in 0.625msec */
1290911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_CONN_ACCEPT_TOUT 0xB540 /* 29 sec */
1291911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_CONN_ACCEPT_TOUT 0x1F40 /* 5 sec */
12925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Page timeout is used in LC only and LC is counting down slots not using OS */
1294911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_PAGE_TOUT 0x2000 /* 5.12 sec (in slots) */
12955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
12965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Scan enable flags */
1297911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NO_SCAN_ENABLED 0x00
1298911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_SCAN_ENABLED 0x01
1299911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGE_SCAN_ENABLED 0x02
13005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13015738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Pagescan timer definitions in 0.625 ms */
1302911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_PAGESCAN_INTERVAL 0x12   /* 11.25 ms */
1303911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_PAGESCAN_INTERVAL 0x1000 /* 2.56 sec */
1304911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_PAGESCAN_INTERVAL 0x0800 /* 1.28 sec */
13055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Parameter for pagescan window is passed to LC and is kept in slots */
1307911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_PAGESCAN_WINDOW 0x11   /* 10.625 ms */
1308911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_PAGESCAN_WINDOW 0x1000 /* 2.56  sec */
1309911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_PAGESCAN_WINDOW 0x12   /* 11.25 ms  */
13105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Inquiryscan timer definitions in 0.625 ms */
1312911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_INQUIRYSCAN_INTERVAL 0x12   /* 11.25 ms */
1313911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_INQUIRYSCAN_INTERVAL 0x1000 /* 2.56 sec */
1314911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_INQUIRYSCAN_INTERVAL 0x1000 /* 2.56 sec */
13155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Parameter for inquiryscan window is passed to LC and is kept in slots */
1317911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MIN_INQUIRYSCAN_WINDOW 0x11   /* 10.625 ms */
1318911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_INQUIRYSCAN_WINDOW 0x1000 /* 2.56 sec */
1319911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEF_INQUIRYSCAN_WINDOW 0x12   /* 11.25 ms */
13205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Encryption modes */
1322911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCRYPT_MODE_DISABLED 0x00
13235738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_ENCRYPT_MODE_POINT_TO_POINT 0x01
1324911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCRYPT_MODE_ALL 0x02
13255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Voice settings */
1327911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_CODING_LINEAR 0x0000 /* 0000000000 */
1328911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_CODING_U_LAW 0x0100  /* 0100000000 */
1329911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_CODING_A_LAW 0x0200  /* 1000000000 */
1330911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_CODING_MASK 0x0300   /* 1100000000 */
13315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1332911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_DATA_FMT_1S_COMPLEMENT 0x0000  /* 0000000000 */
1333911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_DATA_FMT_2S_COMPLEMENT 0x0040  /* 0001000000 */
13345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_INP_DATA_FMT_SIGN_MAGNITUDE 0x0080 /* 0010000000 */
1335911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_DATA_FMT_UNSIGNED 0x00c0       /* 0011000000 */
1336911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_DATA_FMT_MASK 0x00c0           /* 0011000000 */
13375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1338911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_SAMPLE_SIZE_8BIT 0x0000  /* 0000000000 */
1339911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_SAMPLE_SIZE_16BIT 0x0020 /* 0000100000 */
1340911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INP_SAMPLE_SIZE_MASK 0x0020  /* 0000100000 */
13415738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_INP_LINEAR_PCM_BIT_POS_MASK 0x001c /* 0000011100 */
13435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_INP_LINEAR_PCM_BIT_POS_OFFS 2
13445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1345911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_CVSD 0x0000     /* 0000000000 */
1346911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_U_LAW 0x0001    /* 0000000001 */
1347911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_A_LAW 0x0002    /* 0000000010 */
1348911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_TRANSPNT 0x0003 /* 0000000011 */
1349911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AIR_CODING_FORMAT_MASK 0x0003     /* 0000000011 */
13505738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13515738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* default                                        0001100000 */
1352911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_VOICE_SETTINGS                          \
1353911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (HCI_INP_CODING_LINEAR | HCI_INP_DATA_FMT_2S_COMPLEMENT | \
1354911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_INP_SAMPLE_SIZE_16BIT | HCI_AIR_CODING_FORMAT_CVSD)
1355911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1356911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CVSD_SUPPORTED(x) \
1357911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)&HCI_AIR_CODING_FORMAT_MASK) == HCI_AIR_CODING_FORMAT_CVSD)
1358911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_U_LAW_SUPPORTED(x) \
1359911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)&HCI_AIR_CODING_FORMAT_MASK) == HCI_AIR_CODING_FORMAT_U_LAW)
1360911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_A_LAW_SUPPORTED(x) \
1361911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)&HCI_AIR_CODING_FORMAT_MASK) == HCI_AIR_CODING_FORMAT_A_LAW)
1362911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TRANSPNT_SUPPORTED(x) \
1363911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)&HCI_AIR_CODING_FORMAT_MASK) == HCI_AIR_CODING_FORMAT_TRANSPNT)
13645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Retransmit timer definitions in 0.625 */
1366911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_AUTO_FLUSH_TOUT 0x07FF
1367911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_AUTO_FLUSH_TOUT 0 /* No auto flush */
13685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Broadcast retransmitions */
1370911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_NUM_BCAST_RETRAN 1
13715738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define broadcast data types as passed in the hci data packet */
1373911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_POINT_TO_POINT 0x00
1374911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_ACTIVE_BCAST 0x01
1375911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_PICONET_BCAST 0x02
13765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Hold mode activity */
1378911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAINTAIN_CUR_POWER_STATE 0x00
1379911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUSPEND_PAGE_SCAN 0x01
1380911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUSPEND_INQUIRY_SCAN 0x02
1381911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUSPEND_PERIODIC_INQUIRIES 0x04
13825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Default Link Supervision timeoout */
1384911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_INACT_TOUT 0x7D00     /* BR/EDR (20 seconds) */
1385911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DEFAULT_AMP_INACT_TOUT 0x3E80 /* AMP    (10 seconds) */
13865738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Read transmit power level parameter */
1388911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CURRENT 0x00
1389911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_MAXIMUM 0x01
13905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Link types for connection complete event */
1392911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_TYPE_SCO 0x00
1393911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_TYPE_ACL 0x01
1394911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_TYPE_ESCO 0x02
13955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
13965738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Link Key Notification Event (Key Type) definitions */
1397911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_COMBINATION 0x00
1398911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_LOCAL_UNIT 0x01
1399911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_REMOTE_UNIT 0x02
1400911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_DEBUG_COMB 0x03
1401911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_UNAUTH_COMB 0x04
1402911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_AUTH_COMB 0x05
1403911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_CHANGED_COMB 0x06
1404444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji#define HCI_LKEY_TYPE_UNAUTH_COMB_P_256 0x07
1405911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_AUTH_COMB_P_256 0x08
14065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Internal definitions - not used over HCI */
1408911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_AMP_WIFI 0x80
1409911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_AMP_UWB 0x81
1410911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LKEY_TYPE_UNKNOWN 0xff
14115738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Read Local Version HCI Version return values (Command Complete Event) */
1413911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VERSION_1_0B 0x00
1414911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_VERSION_1_1 0x01
14155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14165738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define an invalid value for a handle */
1417911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INVALID_HANDLE 0xFFFF
14185738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define max ammount of data in the HCI command */
1420911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_COMMAND_SIZE 255
14215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14225738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the preamble length for all HCI Commands.
1423ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * This is 2-bytes for opcode and 1 byte for length
14245738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1425911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIC_PREAMBLE_SIZE 3
14265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the preamble length for all HCI Events
1428ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * This is 1-byte for opcode and 1 byte for length
14295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1430911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIE_PREAMBLE_SIZE 2
1431911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SCO_PREAMBLE_SIZE 3
1432911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DATA_PREAMBLE_SIZE 4
14335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14345738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* local Bluetooth controller id for AMP HCI */
1435911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LOCAL_BR_EDR_CONTROLLER_ID 0
14365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14375738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* controller id types for AMP HCI */
1438911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONTROLLER_TYPE_BR_EDR 0
1439911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONTROLLER_TYPE_802_11 1
1440911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CONTROLLER_TYPE_ECMA 2
1441911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_CONTROLLER_TYPES 3
14425738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1443ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/*  ConnectionLess Broadcast */
1444911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_DISABLE 0x00
1445911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_ENABLE 0x01
14465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1447ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* ConnectionLess Broadcast Data fragment */
1448911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_FRAGMENT_CONT 0x00
1449911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_FRAGMENT_START 0x01
1450911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_FRAGMENT_END 0x02
1451911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CLB_FRAGMENT_SINGLE 0x03
14525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14535738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* AMP Controller Status codes
14545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1455911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_PHYSICALLY_DOWN 0
1456911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_USABLE_BY_BT 1
1457911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_UNUSABLE_FOR_BT 2
1458911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_LOW_CAP_FOR_BT 3
1459911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_MED_CAP_FOR_BT 4
1460911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_HIGH_CAP_FOR_BT 5
1461911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_CTRLR_FULL_CAP_FOR_BT 6
14625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1463911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MAX_AMP_STATUS_TYPES 7
14645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14655738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define the extended flow specification fields used by AMP */
1466911d1ae03efec2d54c3b1b605589d790d1745488Myles Watsontypedef struct {
1467911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint8_t id;
1468911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint8_t stype;
1469911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint16_t max_sdu_size;
1470911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint32_t sdu_inter_time;
1471911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint32_t access_latency;
1472911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  uint32_t flush_timeout;
14735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project} tHCI_EXT_FLOW_SPEC;
14745738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14755738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* HCI message type definitions (for H4 messages) */
1476911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_COMMAND 1
1477911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_ACL_DATA 2
1478911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_SCO_DATA 3
1479911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_EVENT 4
1480911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_LM_DIAG 7
1481911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCIT_TYPE_NFC 16
14825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14835738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCIT_LM_DIAG_LENGTH 63
14845738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Parameter information for HCI_BRCM_SET_ACL_PRIORITY */
1486911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BRCM_ACL_PRIORITY_PARAM_SIZE 3
1487911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BRCM_ACL_PRIORITY_LOW 0x00
1488911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BRCM_ACL_PRIORITY_HIGH 0xFF
1489911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BRCM_SET_ACL_PRIORITY (0x0057 | HCI_GRP_VENDOR_SPECIFIC)
14905738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
14915738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Define values for LMP Test Control parameters
1492ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Test Scenario, Hopping Mode, Power Control Mode
14935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1494911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_PAUSE 0
1495911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_TXTEST_0 1
1496911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_TXTEST_1 2
1497911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_TXTEST_1010 3
14985738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LMP_TESTCTL_TESTSC_PSRND_BITSEQ 4
14995738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LMP_TESTCTL_TESTSC_CLOSEDLB_ACL 5
15005738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LMP_TESTCTL_TESTSC_CLOSEDLB_SCO 6
1501911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_ACL_NOWHIT 7
1502911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_SCO_NOWHIT 8
1503911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_TESTSC_TXTEST_11110000 9
15045738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define LMP_TESTCTL_TESTSC_EXITTESTMODE 255
15055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1506911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_RXTX1FREQ 0
1507911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_HOP_EURUSA 1
1508911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_HOP_JAPAN 2
1509911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_HOP_FRANCE 3
1510911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_HOP_SPAIN 4
1511911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_HOPMOD_REDUCED_HOP 5
15125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1513911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_POWCTL_FIXEDTX_OP 0
1514911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_TESTCTL_POWCTL_ADAPTIVE 1
15155738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1516c772b4bb7f15123ef54638a91eb1b64024f8aa7fZach Johnson// TODO(zachoverflow): remove this once broadcom specific hacks are removed
1517911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define LMP_COMPID_BROADCOM 15
1518c772b4bb7f15123ef54638a91eb1b64024f8aa7fZach Johnson
15195738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1520ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Define the packet types in the packet header, and a couple extra
15215738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1522911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_NULL 0x00
1523911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_POLL 0x01
1524911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_FHS 0x02
1525911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DM1 0x03
15265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1527911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DH1 0x04
1528911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_HV1 0x05
1529911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_HV2 0x06
1530911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_HV3 0x07
1531911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DV 0x08
1532911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_AUX1 0x09
15335738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1534911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DM3 0x0a
1535911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DH3 0x0b
15365738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1537911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DM5 0x0e
1538911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_DH5 0x0f
15395738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1540911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_ID 0x10 /* Internally used packet types */
1541911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_BAD 0x11
1542911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define PKT_TYPE_NONE 0x12
15435738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
15445738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1545ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Define packet size
15465738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1547911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DM1_PACKET_SIZE 17
1548911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DH1_PACKET_SIZE 27
1549911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DM3_PACKET_SIZE 121
1550911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DH3_PACKET_SIZE 183
1551911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DM5_PACKET_SIZE 224
1552911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DH5_PACKET_SIZE 339
1553911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUX1_PACKET_SIZE 29
1554911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV1_PACKET_SIZE 10
1555911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV2_PACKET_SIZE 20
1556911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV3_PACKET_SIZE 30
1557911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DV_PACKET_SIZE 9
1558911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR2_DH1_PACKET_SIZE 54
1559911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR2_DH3_PACKET_SIZE 367
1560911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR2_DH5_PACKET_SIZE 679
1561911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR3_DH1_PACKET_SIZE 83
1562911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR3_DH3_PACKET_SIZE 552
1563911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR3_DH5_PACKET_SIZE 1021
15645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
15653aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/* Feature Pages */
1566f6ac424a81bad038bbf9a90c7c569dba81978f51Venkata Jagadeesh Garaga#define HCI_EXT_FEATURES_PAGE_MAX 3  // Parse feature pages 0-3
15673aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
1568911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BYTES_PER_PAGE 8
15693aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
1570911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURES_KNOWN(x) \
1571911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)[0] | (x)[1] | (x)[2] | (x)[3] | (x)[4] | (x)[5] | (x)[6] | (x)[7]) != 0)
15725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
15733aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/*
1574ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   LMP features encoding - page 0
15753aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach*/
15765738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_3_SLOT_PACKETS_MASK 0x01
1577911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_3_SLOT_PACKETS_OFF 0
1578911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_3_SLOT_PACKETS_SUPPORTED(x) \
1579911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_3_SLOT_PACKETS_OFF] & HCI_FEATURE_3_SLOT_PACKETS_MASK)
15805738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
15815738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_5_SLOT_PACKETS_MASK 0x02
1582911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_5_SLOT_PACKETS_OFF 0
1583911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_5_SLOT_PACKETS_SUPPORTED(x) \
1584911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_5_SLOT_PACKETS_OFF] & HCI_FEATURE_5_SLOT_PACKETS_MASK)
1585911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1586911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENCRYPTION_MASK 0x04
1587911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENCRYPTION_OFF 0
1588911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCRYPTION_SUPPORTED(x) \
1589911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ENCRYPTION_OFF] & HCI_FEATURE_ENCRYPTION_MASK)
1590911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1591911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SLOT_OFFSET_MASK 0x08
1592911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SLOT_OFFSET_OFF 0
1593911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SLOT_OFFSET_SUPPORTED(x) \
1594911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SLOT_OFFSET_OFF] & HCI_FEATURE_SLOT_OFFSET_MASK)
1595911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1596911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_TIMING_ACC_MASK 0x10
1597911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_TIMING_ACC_OFF 0
1598911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TIMING_ACC_SUPPORTED(x) \
1599911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_TIMING_ACC_OFF] & HCI_FEATURE_TIMING_ACC_MASK)
1600911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1601911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SWITCH_MASK 0x20
1602911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SWITCH_OFF 0
1603911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SWITCH_SUPPORTED(x) \
1604911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SWITCH_OFF] & HCI_FEATURE_SWITCH_MASK)
1605911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1606911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HOLD_MODE_MASK 0x40
1607911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HOLD_MODE_OFF 0
1608911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOLD_MODE_SUPPORTED(x) \
1609911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_HOLD_MODE_OFF] & HCI_FEATURE_HOLD_MODE_MASK)
1610911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1611911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SNIFF_MODE_MASK 0x80
1612911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SNIFF_MODE_OFF 0
1613911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_MODE_SUPPORTED(x) \
1614911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SNIFF_MODE_OFF] & HCI_FEATURE_SNIFF_MODE_MASK)
1615911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1616911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_PARK_MODE_MASK 0x01
1617911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_PARK_MODE_OFF 1
1618911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PARK_MODE_SUPPORTED(x) \
1619911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_PARK_MODE_OFF] & HCI_FEATURE_PARK_MODE_MASK)
1620911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1621911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_RSSI_MASK 0x02
1622911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_RSSI_OFF 1
1623911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RSSI_SUPPORTED(x) \
1624911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_RSSI_OFF] & HCI_FEATURE_RSSI_MASK)
1625911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1626911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_CQM_DATA_RATE_MASK 0x04
1627911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_CQM_DATA_RATE_OFF 1
1628911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CQM_DATA_RATE_SUPPORTED(x) \
1629911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_CQM_DATA_RATE_OFF] & HCI_FEATURE_CQM_DATA_RATE_MASK)
1630911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1631911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SCO_LINK_MASK 0x08
1632911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SCO_LINK_OFF 1
1633911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SCO_LINK_SUPPORTED(x) \
1634911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SCO_LINK_OFF] & HCI_FEATURE_SCO_LINK_MASK)
1635911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1636911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HV2_PACKETS_MASK 0x10
1637911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HV2_PACKETS_OFF 1
1638911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV2_PACKETS_SUPPORTED(x) \
1639911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_HV2_PACKETS_OFF] & HCI_FEATURE_HV2_PACKETS_MASK)
1640911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1641911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HV3_PACKETS_MASK 0x20
1642911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_HV3_PACKETS_OFF 1
1643911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HV3_PACKETS_SUPPORTED(x) \
1644911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_HV3_PACKETS_OFF] & HCI_FEATURE_HV3_PACKETS_MASK)
1645911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1646911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_U_LAW_MASK 0x40
1647911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_U_LAW_OFF 1
1648911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_U_LAW_SUPPORTED(x) \
1649911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_U_LAW_OFF] & HCI_FEATURE_U_LAW_MASK)
1650911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1651911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_A_LAW_MASK 0x80
1652911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_A_LAW_OFF 1
1653911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_A_LAW_SUPPORTED(x) \
1654911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_A_LAW_OFF] & HCI_FEATURE_A_LAW_MASK)
1655911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1656911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_CVSD_MASK 0x01
1657911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_CVSD_OFF 2
1658911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_CVSD_SUPPORTED(x) \
1659911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_CVSD_OFF] & HCI_FEATURE_CVSD_MASK)
1660911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1661911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_PAGING_SCHEME_MASK 0x02
1662911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_PAGING_SCHEME_OFF 2
1663911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PAGING_SCHEME_SUPPORTED(x) \
1664911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_PAGING_SCHEME_OFF] & HCI_FEATURE_PAGING_SCHEME_MASK)
1665911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1666911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_POWER_CTRL_MASK 0x04
1667911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_POWER_CTRL_OFF 2
1668911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_POWER_CTRL_SUPPORTED(x) \
1669911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_POWER_CTRL_OFF] & HCI_FEATURE_POWER_CTRL_MASK)
1670911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1671911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_TRANSPNT_MASK 0x08
1672911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_TRANSPNT_OFF 2
1673911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_TRANSPNT_SUPPORTED(x) \
1674911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_TRANSPNT_OFF] & HCI_FEATURE_TRANSPNT_MASK)
1675911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1676911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_FLOW_CTRL_LAG_MASK 0x70
1677911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_FLOW_CTRL_LAG_OFF 2
1678911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_CTRL_LAG_VALUE(x) \
1679911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (((x)[HCI_FEATURE_FLOW_CTRL_LAG_OFF] & HCI_FEATURE_FLOW_CTRL_LAG_MASK) >> 4)
1680911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1681911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BROADCAST_ENC_MASK 0x80
1682911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BROADCAST_ENC_OFF 2
1683911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_BCAST_ENC_SUPPORTED(x) \
1684911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_BROADCAST_ENC_OFF] & HCI_FEATURE_BROADCAST_ENC_MASK)
1685911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1686911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SCATTER_MODE_MASK 0x01
1687911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SCATTER_MODE_OFF 3
1688911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_SCATTER_MODE_SUPPORTED(x) \
1689911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SCATTER_MODE_OFF] & HCI_FEATURE_SCATTER_MODE_MASK)
1690911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1691911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ACL_2MPS_MASK 0x02
1692911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ACL_2MPS_OFF 3
1693911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR_ACL_2MPS_SUPPORTED(x) \
1694911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EDR_ACL_2MPS_OFF] & HCI_FEATURE_EDR_ACL_2MPS_MASK)
1695911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1696911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ACL_3MPS_MASK 0x04
1697911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ACL_3MPS_OFF 3
1698911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR_ACL_3MPS_SUPPORTED(x) \
1699911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EDR_ACL_3MPS_OFF] & HCI_FEATURE_EDR_ACL_3MPS_MASK)
1700911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1701911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENHANCED_INQ_MASK 0x08
1702911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENHANCED_INQ_OFF 3
1703911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENHANCED_INQ_SUPPORTED(x) \
1704911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ENHANCED_INQ_OFF] & HCI_FEATURE_ENHANCED_INQ_MASK)
1705911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1706911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INTERLACED_INQ_SCAN_MASK 0x10
1707911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INTERLACED_INQ_SCAN_OFF 3
1708911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_INTERLACED_INQ_SCAN_SUPPORTED(x) \
1709911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_INTERLACED_INQ_SCAN_OFF] &    \
1710911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_FEATURE_INTERLACED_INQ_SCAN_MASK)
1711911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1712911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INTERLACED_PAGE_SCAN_MASK 0x20
1713911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INTERLACED_PAGE_SCAN_OFF 3
1714911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_INTERLACED_PAGE_SCAN_SUPPORTED(x) \
1715911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_INTERLACED_PAGE_SCAN_OFF] &    \
1716911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_FEATURE_INTERLACED_PAGE_SCAN_MASK)
1717911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1718911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INQ_RSSI_MASK 0x40
1719911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INQ_RSSI_OFF 3
1720911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_INQ_RSSI_SUPPORTED(x) \
1721911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_INQ_RSSI_OFF] & HCI_FEATURE_INQ_RSSI_MASK)
1722911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1723911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV3_MASK 0x80
1724911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV3_OFF 3
1725911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_EV3_SUPPORTED(x) \
1726911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ESCO_EV3_OFF] & HCI_FEATURE_ESCO_EV3_MASK)
1727911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1728911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV4_MASK 0x01
1729911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV4_OFF 4
1730911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_EV4_SUPPORTED(x) \
1731911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ESCO_EV4_OFF] & HCI_FEATURE_ESCO_EV4_MASK)
1732911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1733911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV5_MASK 0x02
1734911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ESCO_EV5_OFF 4
1735911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ESCO_EV5_SUPPORTED(x) \
1736911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ESCO_EV5_OFF] & HCI_FEATURE_ESCO_EV5_MASK)
1737911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1738911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ABSENCE_MASKS_MASK 0x04
1739911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ABSENCE_MASKS_OFF 4
1740911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_ABSENCE_MASKS_SUPPORTED(x) \
1741911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ABSENCE_MASKS_OFF] & HCI_FEATURE_ABSENCE_MASKS_MASK)
1742911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1743911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CAP_SLAVE_MASK 0x08
1744911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CAP_SLAVE_OFF 4
1745911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_AFH_CAP_SLAVE_SUPPORTED(x) \
1746911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_AFH_CAP_SLAVE_OFF] & HCI_FEATURE_AFH_CAP_SLAVE_MASK)
17475738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_AFH_CLASS_SLAVE_MASK 0x10
1749911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CLASS_SLAVE_OFF 4
1750911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_AFH_CLASS_SLAVE_SUPPORTED(x) \
1751911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_AFH_CLASS_SLAVE_OFF] & HCI_FEATURE_AFH_CLASS_SLAVE_MASK)
17525738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1753911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BREDR_NOT_SPT_MASK 0x20
1754911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_BREDR_NOT_SPT_OFF 4
1755911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_BREDR_NOT_SPT_SUPPORTED(x) \
1756911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_BREDR_NOT_SPT_OFF] & HCI_FEATURE_BREDR_NOT_SPT_MASK)
1757ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
1758911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_LE_SPT_MASK 0x40
1759911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_LE_SPT_OFF 4
1760911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SPT_SUPPORTED(x) \
1761911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_LE_SPT_OFF] & HCI_FEATURE_LE_SPT_MASK)
17625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_3_SLOT_EDR_ACL_MASK 0x80
1764911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_3_SLOT_EDR_ACL_OFF 4
1765911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_3_SLOT_EDR_ACL_SUPPORTED(x) \
1766911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_3_SLOT_EDR_ACL_OFF] & HCI_FEATURE_3_SLOT_EDR_ACL_MASK)
17675738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17685738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_5_SLOT_EDR_ACL_MASK 0x01
1769911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_5_SLOT_EDR_ACL_OFF 5
1770911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_5_SLOT_EDR_ACL_SUPPORTED(x) \
1771911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_5_SLOT_EDR_ACL_OFF] & HCI_FEATURE_5_SLOT_EDR_ACL_MASK)
17725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_SNIFF_SUB_RATE_MASK 0x02
1774911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SNIFF_SUB_RATE_OFF 5
1775911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_SUB_RATE_SUPPORTED(x) \
1776911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SNIFF_SUB_RATE_OFF] & HCI_FEATURE_SNIFF_SUB_RATE_MASK)
17775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_ATOMIC_ENCRYPT_MASK 0x04
1779911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ATOMIC_ENCRYPT_OFF 5
1780911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ATOMIC_ENCRYPT_SUPPORTED(x) \
1781911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ATOMIC_ENCRYPT_OFF] & HCI_FEATURE_ATOMIC_ENCRYPT_MASK)
17825738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1783911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CAP_MASTR_MASK 0x08
1784911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CAP_MASTR_OFF 5
1785911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_AFH_CAP_MASTR_SUPPORTED(x) \
1786911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_AFH_CAP_MASTR_OFF] & HCI_FEATURE_AFH_CAP_MASTR_MASK)
17875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
17885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_AFH_CLASS_MASTR_MASK 0x10
1789911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_AFH_CLASS_MASTR_OFF 5
1790911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_AFH_CLASS_MASTR_SUPPORTED(x) \
1791911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_AFH_CLASS_MASTR_OFF] & HCI_FEATURE_AFH_CLASS_MASTR_MASK)
17925738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1793911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ESCO_2MPS_MASK 0x20
1794911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ESCO_2MPS_OFF 5
1795911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR_ESCO_2MPS_SUPPORTED(x) \
1796911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EDR_ESCO_2MPS_OFF] & HCI_FEATURE_EDR_ESCO_2MPS_MASK)
17975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1798911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ESCO_3MPS_MASK 0x40
1799911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EDR_ESCO_3MPS_OFF 5
1800911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EDR_ESCO_3MPS_SUPPORTED(x) \
1801911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EDR_ESCO_3MPS_OFF] & HCI_FEATURE_EDR_ESCO_3MPS_MASK)
18025738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18035738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_3_SLOT_EDR_ESCO_MASK 0x80
1804911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_3_SLOT_EDR_ESCO_OFF 5
1805911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_3_SLOT_EDR_ESCO_SUPPORTED(x) \
1806911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_3_SLOT_EDR_ESCO_OFF] & HCI_FEATURE_3_SLOT_EDR_ESCO_MASK)
18075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1808911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EXT_INQ_RSP_MASK 0x01
1809911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EXT_INQ_RSP_OFF 6
1810911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_INQ_RSP_SUPPORTED(x) \
1811911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EXT_INQ_RSP_OFF] & HCI_FEATURE_EXT_INQ_RSP_MASK)
18125738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1813ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#if 1 /* TOKYO spec definition */
1814ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define HCI_FEATURE_SIMUL_LE_BREDR_MASK 0x02
1815911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SIMUL_LE_BREDR_OFF 6
1816911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SIMUL_LE_BREDR_SUPPORTED(x) \
1817911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SIMUL_LE_BREDR_OFF] & HCI_FEATURE_SIMUL_LE_BREDR_MASK)
1818ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
1819ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#else
18205738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_ANUM_PIN_AWARE_MASK 0x02
1821911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ANUM_PIN_AWARE_OFF 6
1822911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ANUM_PIN_AWARE_SUPPORTED(x) \
1823911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ANUM_PIN_AWARE_OFF] & HCI_FEATURE_ANUM_PIN_AWARE_MASK)
1824ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#endif
18255738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1826911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ANUM_PIN_CAP_MASK 0x04
1827911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ANUM_PIN_CAP_OFF 6
1828911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ANUM_PIN_CAP_SUPPORTED(x) \
1829911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ANUM_PIN_CAP_OFF] & HCI_FEATURE_ANUM_PIN_CAP_MASK)
18305738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18315738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_SIMPLE_PAIRING_MASK 0x08
1832911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_SIMPLE_PAIRING_OFF 6
1833911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SIMPLE_PAIRING_SUPPORTED(x) \
1834911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_SIMPLE_PAIRING_OFF] & HCI_FEATURE_SIMPLE_PAIRING_MASK)
18355738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1836911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENCAP_PDU_MASK 0x10
1837911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ENCAP_PDU_OFF 6
1838911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENCAP_PDU_SUPPORTED(x) \
1839911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ENCAP_PDU_OFF] & HCI_FEATURE_ENCAP_PDU_MASK)
18405738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1841911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ERROR_DATA_MASK 0x20
1842911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_ERROR_DATA_OFF 6
1843911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ERROR_DATA_SUPPORTED(x) \
1844911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_ERROR_DATA_OFF] & HCI_FEATURE_ERROR_DATA_MASK)
18455738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1846911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_NON_FLUSHABLE_PB_MASK 0x40
1847911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_NON_FLUSHABLE_PB_OFF 6
18485738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18499ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson/* This feature is causing frequent link drops when doing call switch with
18509ca07091a1f07ea201cee0504dab6a1d7073d429Myles Watson * certain av/hfp headsets */
1851911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NON_FLUSHABLE_PB_SUPPORTED(x) \
1852911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  (0)  //((x)[HCI_FEATURE_NON_FLUSHABLE_PB_OFF] &
1853911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson       // HCI_FEATURE_NON_FLUSHABLE_PB_MASK)
18545738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18555738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_FEATURE_LINK_SUP_TO_EVT_MASK 0x01
1856911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_LINK_SUP_TO_EVT_OFF 7
1857911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_SUP_TO_EVT_SUPPORTED(x) \
1858911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_LINK_SUP_TO_EVT_OFF] & HCI_FEATURE_LINK_SUP_TO_EVT_MASK)
18595738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1860911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INQ_RESP_TX_MASK 0x02
1861911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_INQ_RESP_TX_OFF 7
1862911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQ_RESP_TX_SUPPORTED(x) \
1863911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_INQ_RESP_TX_OFF] & HCI_FEATURE_INQ_RESP_TX_MASK)
18645738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1865911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EXTENDED_MASK 0x80
1866911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FEATURE_EXTENDED_OFF 7
1867911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LMP_EXTENDED_SUPPORTED(x) \
1868911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_FEATURE_EXTENDED_OFF] & HCI_FEATURE_EXTENDED_MASK)
18695738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
18705738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1871ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   LMP features encoding - page 1
18725738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
18735738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_EXT_FEATURE_SSP_HOST_MASK 0x01
1874911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SSP_HOST_OFF 0
1875911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SSP_HOST_SUPPORTED(x) \
1876911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SSP_HOST_OFF] & HCI_EXT_FEATURE_SSP_HOST_MASK)
18775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
1878ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define HCI_EXT_FEATURE_LE_HOST_MASK 0x02
1879911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_LE_HOST_OFF 0
1880911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_HOST_SUPPORTED(x) \
1881911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_LE_HOST_OFF] & HCI_EXT_FEATURE_LE_HOST_MASK)
1882ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
1883ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta#define HCI_EXT_FEATURE_SIMUL_DUMO_HOST_MASK 0x04
1884911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SIMUL_DUMO_HOST_OFF 0
1885911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SIMUL_DUMO_HOST_SUPPORTED(x)      \
1886911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SIMUL_DUMO_HOST_OFF] & \
1887911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_EXT_FEATURE_SIMUL_DUMO_HOST_MASK)
1888ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
18897fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define HCI_EXT_FEATURE_SC_HOST_MASK 0x08
1890911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SC_HOST_OFF 0
1891911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SC_HOST_SUPPORTED(x) \
1892911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SC_HOST_OFF] & HCI_EXT_FEATURE_SC_HOST_MASK)
18937fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
18945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/*
1895ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   LMP features encoding - page 2
18963aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach*/
1897911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_CSB_MASTER_MASK 0x01
1898911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_CSB_MASTER_OFF 0
1899911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CSB_MASTER_SUPPORTED(x) \
1900911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_CSB_MASTER_OFF] & HCI_EXT_FEATURE_CSB_MASTER_MASK)
1901911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1902911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_CSB_SLAVE_MASK 0x02
1903911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_CSB_SLAVE_OFF 0
1904911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CSB_SLAVE_SUPPORTED(x) \
1905911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_CSB_SLAVE_OFF] & HCI_EXT_FEATURE_CSB_SLAVE_MASK)
1906911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1907911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SYNC_TRAIN_MASTER_MASK 0x04
1908911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SYNC_TRAIN_MASTER_OFF 0
1909911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SYNC_TRAIN_MASTER_SUPPORTED(x)      \
1910911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SYNC_TRAIN_MASTER_OFF] & \
1911911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_EXT_FEATURE_SYNC_TRAIN_MASTER_MASK)
1912911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1913911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SYNC_SCAN_SLAVE_MASK 0x08
1914911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SYNC_SCAN_SLAVE_OFF 0
1915911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SYNC_SCAN_SLAVE_SUPPORTED(x)      \
1916911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SYNC_SCAN_SLAVE_OFF] & \
1917911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_EXT_FEATURE_SYNC_SCAN_SLAVE_MASK)
1918911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1919911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_INQ_RESP_NOTIF_MASK 0x10
1920911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_INQ_RESP_NOTIF_OFF 0
1921911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQ_RESP_NOTIF_SUPPORTED(x)      \
1922911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_INQ_RESP_NOTIF_OFF] & \
1923911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_EXT_FEATURE_INQ_RESP_NOTIF_MASK)
1924911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1925911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SC_CTRLR_MASK 0x01
1926911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_SC_CTRLR_OFF 1
1927911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SC_CTRLR_SUPPORTED(x) \
1928911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_SC_CTRLR_OFF] & HCI_EXT_FEATURE_SC_CTRLR_MASK)
1929911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
1930911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_PING_MASK 0x02
1931911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXT_FEATURE_PING_OFF 1
1932911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PING_SUPPORTED(x) \
1933911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_EXT_FEATURE_PING_OFF] & HCI_EXT_FEATURE_PING_MASK)
19347fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
19353aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/*
1936ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   LE features encoding - page 0 (the only page for now)
19373aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach*/
19387fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* LE Encryption */
1939911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_LE_ENCRYPTION_MASK 0x01
1940911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_LE_ENCRYPTION_OFF 0
1941911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ENCRYPTION_SUPPORTED(x) \
1942911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_LE_ENCRYPTION_OFF] & HCI_LE_FEATURE_LE_ENCRYPTION_MASK)
19433aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
19447fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Connection Parameters Request Procedure */
1945911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_CONN_PARAM_REQ_MASK 0x02
1946911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_CONN_PARAM_REQ_OFF 0
1947911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_CONN_PARAM_REQ_SUPPORTED(x) \
1948911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_CONN_PARAM_REQ_OFF] & HCI_LE_FEATURE_CONN_PARAM_REQ_MASK)
19497fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
19507fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Extended Reject Indication */
1951911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_EXT_REJ_IND_MASK 0x04
1952911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_EXT_REJ_IND_OFF 0
1953911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_EXT_REJ_IND_SUPPORTED(x) \
1954911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_EXT_REJ_IND_OFF] & HCI_LE_FEATURE_EXT_REJ_IND_MASK)
19557fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
19567fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Slave-initiated Features Exchange */
1957911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_MASK 0x08
1958911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_OFF 0
1959911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_SLAVE_INIT_FEAT_EXC_SUPPORTED(x)  \
1960911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_OFF] & \
1961911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_LE_FEATURE_SLAVE_INIT_FEAT_EXC_MASK)
19623aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
1963444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* Enhanced privacy Feature: bit 6 */
1964911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_ENHANCED_PRIVACY_MASK 0x40
1965911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_ENHANCED_PRIVACY_OFF 0
1966911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_ENHANCED_PRIVACY_SUPPORTED(x)  \
1967911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_ENHANCED_PRIVACY_OFF] & \
1968911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_LE_FEATURE_ENHANCED_PRIVACY_MASK)
1969444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
1970444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji/* Extended scanner filter policy : 7 */
1971911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_MASK 0x80
1972911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_OFF 0
1973911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_EXT_SCAN_FILTER_POLICY_SUPPORTED(x)  \
1974911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_OFF] & \
1975911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_LE_FEATURE_EXT_SCAN_FILTER_POLICY_MASK)
1976444a8da807abaf5f9e813ce70c56a79160495fb3Satya Calloji
1977636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera/* Slave-initiated Features Exchange */
1978911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_DATA_LEN_EXT_MASK 0x20
1979911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_FEATURE_DATA_LEN_EXT_OFF 0
1980911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_DATA_LEN_EXT_SUPPORTED(x) \
1981911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_LE_FEATURE_DATA_LEN_EXT_OFF] & HCI_LE_FEATURE_DATA_LEN_EXT_MASK)
1982636d6714a4c08dd99d2147dcce05dc3892e804b4Priti Aghera
19833aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/*
1984ee96a3c60fca590d38025925c072d264e06493c4Myles Watson *   Local Supported Commands encoding
19855738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
1986911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_NUM_SUPP_COMMANDS_BYTES 64
19875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
19887fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* Supported Commands Byte 0 */
19895738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_SUPP_COMMANDS_INQUIRY_MASK 0x01
1990911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_INQUIRY_OFF 0
1991911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_SUPPORTED(x) \
1992911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_INQUIRY_OFF] & HCI_SUPP_COMMANDS_INQUIRY_MASK)
19935738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
19945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#define HCI_SUPP_COMMANDS_INQUIRY_CANCEL_MASK 0x02
1995911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_INQUIRY_CANCEL_OFF 0
1996911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_INQUIRY_CANCEL_SUPPORTED(x)        \
1997911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_INQUIRY_CANCEL_OFF] & \
1998911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_INQUIRY_CANCEL_MASK)
1999911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2000911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PERIODIC_INQUIRY_MASK 0x04
2001911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PERIODIC_INQUIRY_OFF 0
2002911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PERIODIC_INQUIRY_SUPPORTED(x)        \
2003911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_PERIODIC_INQUIRY_OFF] & \
2004911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_PERIODIC_INQUIRY_MASK)
2005911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2006911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_PERIODIC_INQUIRY_MASK 0x08
2007911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_PERIODIC_INQUIRY_OFF 0
2008911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_PERIODIC_INQUIRY_SUPPORTED(x)        \
2009911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_EXIT_PERIODIC_INQUIRY_OFF] & \
2010911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_EXIT_PERIODIC_INQUIRY_MASK)
2011911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2012911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_CONN_MASK 0x10
2013911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_CONN_OFF 0
2014911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_CONN_SUPPORTED(x) \
2015911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CREATE_CONN_OFF] & HCI_SUPP_COMMANDS_CREATE_CONN_MASK)
2016911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2017911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_MASK 0x20
2018911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_OFF 0
2019911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT_SUPPORTED(x) \
2020911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DISCONNECT_OFF] & HCI_SUPP_COMMANDS_DISCONNECT_MASK)
2021911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2022911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ADD_SCO_CONN_MASK 0x40
2023911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ADD_SCO_CONN_OFF 0
2024911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ADD_SCO_CONN_SUPPORTED(x)        \
2025911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ADD_SCO_CONN_OFF] & \
2026911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ADD_SCO_CONN_MASK)
2027911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2028911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CANCEL_CREATE_CONN_MASK 0x80
2029911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CANCEL_CREATE_CONN_OFF 0
2030911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CANCEL_CREATE_CONN_SUPPORTED(x)        \
2031911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CANCEL_CREATE_CONN_OFF] & \
2032911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CANCEL_CREATE_CONN_MASK)
2033911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2034911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_CONN_REQUEST_MASK 0x01
2035911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_CONN_REQUEST_OFF 1
2036911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_CONN_REQUEST_SUPPORTED(x)        \
2037911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ACCEPT_CONN_REQUEST_OFF] & \
2038911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ACCEPT_CONN_REQUEST_MASK)
2039911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2040911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REJECT_CONN_REQUEST_MASK 0x02
2041911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REJECT_CONN_REQUEST_OFF 1
2042911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REJECT_CONN_REQUEST_SUPPORTED(x)        \
2043911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REJECT_CONN_REQUEST_OFF] & \
2044911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REJECT_CONN_REQUEST_MASK)
2045911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2046911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_REPLY_MASK 0x04
2047911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_REPLY_OFF 1
2048911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_REPLY_SUPPORTED(x)        \
2049911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_REPLY_OFF] & \
2050911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_REPLY_MASK)
2051911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2052911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_NEG_REPLY_MASK 0x08
2053911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_NEG_REPLY_OFF 1
2054911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LINK_KEY_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2055911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_NEG_REPLY_OFF] & \
2056911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_LINK_KEY_REQUEST_NEG_REPLY_MASK)
2057911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2058911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_REPLY_MASK 0x10
2059911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_REPLY_OFF 1
2060911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_REPLY_SUPPORTED(x)        \
2061911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_REPLY_OFF] & \
2062911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_REPLY_MASK)
2063911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2064911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_NEG_REPLY_MASK 0x20
2065911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_NEG_REPLY_OFF 1
2066911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PIN_CODE_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2067911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_NEG_REPLY_OFF] & \
2068911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_PIN_CODE_REQUEST_NEG_REPLY_MASK)
2069911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2070911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CHANGE_CONN_PKT_TYPE_MASK 0x40
2071911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CHANGE_CONN_PKT_TYPE_OFF 1
2072911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_PKT_TYPE_SUPPORTED(x)        \
2073911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CHANGE_CONN_PKT_TYPE_OFF] & \
2074911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CHANGE_CONN_PKT_TYPE_MASK)
2075911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2076911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AUTH_REQUEST_MASK 0x80
2077911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AUTH_REQUEST_OFF 1
2078911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AUTH_REQUEST_SUPPORTED(x)        \
2079911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_AUTH_REQUEST_OFF] & \
2080911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_AUTH_REQUEST_MASK)
2081911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2082911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONN_ENCRYPTION_MASK 0x01
2083911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONN_ENCRYPTION_OFF 2
2084911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONN_ENCRYPTION_SUPPORTED(x)        \
2085911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_CONN_ENCRYPTION_OFF] & \
2086911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_CONN_ENCRYPTION_MASK)
2087911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2088911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CHANGE_CONN_LINK_KEY_MASK 0x02
2089911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CHANGE_CONN_LINK_KEY_OFF 2
2090911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CHANGE_CONN_LINK_KEY_SUPPORTED(x)        \
2091911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CHANGE_CONN_LINK_KEY_OFF] & \
2092911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CHANGE_CONN_LINK_KEY_MASK)
2093911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2094911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_MASTER_LINK_KEY_MASK 0x04
2095911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_MASTER_LINK_KEY_OFF 2
2096911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_MASTER_LINK_KEY_SUPPORTED(x)        \
2097911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_MASTER_LINK_KEY_OFF] & \
2098911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_MASTER_LINK_KEY_MASK)
2099911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2100911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_NAME_REQUEST_MASK 0x08
2101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_NAME_REQUEST_OFF 2
2102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_NAME_REQUEST_SUPPORTED(x)        \
2103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REMOTE_NAME_REQUEST_OFF] & \
2104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REMOTE_NAME_REQUEST_MASK)
2105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2106911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CANCEL_REMOTE_NAME_REQUEST_MASK 0x10
2107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CANCEL_REMOTE_NAME_REQUEST_OFF 2
2108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CANCEL_REMOTE_NAME_REQUEST_SUPPORTED(x)        \
2109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CANCEL_REMOTE_NAME_REQUEST_OFF] & \
2110911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CANCEL_REMOTE_NAME_REQUEST_MASK)
2111911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2112911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_SUPP_FEATURES_MASK 0x20
2113911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_SUPP_FEATURES_OFF 2
2114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_REMOTE_SUPP_FEATURES_SUPPORTED(x)        \
2115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_REMOTE_SUPP_FEATURES_OFF] & \
2116911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_REMOTE_SUPP_FEATURES_MASK)
2117911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2118911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_EXT_FEATURES_MASK 0x40
2119911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_EXT_FEATURES_OFF 2
2120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_REMOTE_EXT_FEATURES_SUPPORTED(x)        \
2121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_REMOTE_EXT_FEATURES_OFF] & \
2122911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_REMOTE_EXT_FEATURES_MASK)
2123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2124911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_VER_INFO_MASK 0x80
2125911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_REMOTE_VER_INFO_OFF 2
2126911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_REMOTE_VER_INFO_SUPPORTED(x)        \
2127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_REMOTE_VER_INFO_OFF] & \
2128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_REMOTE_VER_INFO_MASK)
2129911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2130911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CLOCK_OFFSET_MASK 0x01
2131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CLOCK_OFFSET_OFF 3
2132911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLOCK_OFFSET_SUPPORTED(x)        \
2133911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_CLOCK_OFFSET_OFF] & \
2134911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_CLOCK_OFFSET_MASK)
2135911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LMP_HANDLE_MASK 0x02
2137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LMP_HANDLE_OFF 3
2138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LMP_HANDLE_SUPPORTED(x)        \
2139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LMP_HANDLE_OFF] & \
2140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LMP_HANDLE_MASK)
2141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOLD_MODE_CMD_MASK 0x02
2143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOLD_MODE_CMD_OFF 4
2144911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOLD_MODE_CMD_SUPPORTED(x)        \
2145911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_HOLD_MODE_CMD_OFF] & \
2146911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_HOLD_MODE_CMD_MASK)
2147911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2148911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SNIFF_MODE_CMD_MASK 0x04
2149911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SNIFF_MODE_CMD_OFF 4
2150911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_MODE_CMD_SUPPORTED(x)        \
2151911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SNIFF_MODE_CMD_OFF] & \
2152911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SNIFF_MODE_CMD_MASK)
2153911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2154911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_SNIFF_MODE_MASK 0x08
2155911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_SNIFF_MODE_OFF 4
2156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_SNIFF_MODE_SUPPORTED(x)        \
2157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_EXIT_SNIFF_MODE_OFF] & \
2158911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_EXIT_SNIFF_MODE_MASK)
2159911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PARK_STATE_MASK 0x10
2161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_PARK_STATE_OFF 4
2162911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_PARK_STATE_SUPPORTED(x) \
2163911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_PARK_STATE_OFF] & HCI_SUPP_COMMANDS_PARK_STATE_MASK)
2164911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_PARK_STATE_MASK 0x20
2166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_EXIT_PARK_STATE_OFF 4
2167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_EXIT_PARK_STATE_SUPPORTED(x)        \
2168911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_EXIT_PARK_STATE_OFF] & \
2169911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_EXIT_PARK_STATE_MASK)
2170911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_QOS_SETUP_MASK 0x40
2172911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_QOS_SETUP_OFF 4
2173911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_QOS_SETUP_SUPPORTED(x) \
2174911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_QOS_SETUP_OFF] & HCI_SUPP_COMMANDS_QOS_SETUP_MASK)
2175911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2176911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ROLE_DISCOVERY_MASK 0x80
2177911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ROLE_DISCOVERY_OFF 4
2178911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ROLE_DISCOVERY_SUPPORTED(x)        \
2179911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ROLE_DISCOVERY_OFF] & \
2180911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ROLE_DISCOVERY_MASK)
2181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2182911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SWITCH_ROLE_MASK 0x01
2183911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SWITCH_ROLE_OFF 5
2184911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SWITCH_ROLE_SUPPORTED(x) \
2185911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SWITCH_ROLE_OFF] & HCI_SUPP_COMMANDS_SWITCH_ROLE_MASK)
2186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2187911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LINK_POLICY_SET_MASK 0x02
2188911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LINK_POLICY_SET_OFF 5
2189911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LINK_POLICY_SET_SUPPORTED(x)        \
2190911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LINK_POLICY_SET_OFF] & \
2191911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LINK_POLICY_SET_MASK)
2192911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2193911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LINK_POLICY_SET_MASK 0x04
2194911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LINK_POLICY_SET_OFF 5
2195911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LINK_POLICY_SET_SUPPORTED(x)        \
2196911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LINK_POLICY_SET_OFF] & \
2197911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LINK_POLICY_SET_MASK)
2198911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2199911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DEF_LINK_POLICY_SET_MASK 0x08
2200911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DEF_LINK_POLICY_SET_OFF 5
2201911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_DEF_LINK_POLICY_SET_SUPPORTED(x)        \
2202911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_DEF_LINK_POLICY_SET_OFF] & \
2203911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_DEF_LINK_POLICY_SET_MASK)
2204911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2205911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_DEF_LINK_POLICY_SET_MASK 0x10
2206911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_DEF_LINK_POLICY_SET_OFF 5
2207911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_DEF_LINK_POLICY_SET_SUPPORTED(x)        \
2208911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_DEF_LINK_POLICY_SET_OFF] & \
2209911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_DEF_LINK_POLICY_SET_MASK)
2210911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2211911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLOW_SPECIFICATION_MASK 0x20
2212911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLOW_SPECIFICATION_OFF 5
2213911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPECIFICATION_SUPPORTED(x)        \
2214911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_FLOW_SPECIFICATION_OFF] & \
2215911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_FLOW_SPECIFICATION_MASK)
2216911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2217911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_MASK_MASK 0x40
2218911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_MASK_OFF 5
2219911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_MASK_SUPPORTED(x)        \
2220911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_EVENT_MASK_OFF] & \
2221911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_EVENT_MASK_MASK)
2222911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2223911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RESET_MASK 0x80
2224911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RESET_OFF 5
2225911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RESET_SUPPORTED(x) \
2226911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_RESET_OFF] & HCI_SUPP_COMMANDS_RESET_MASK)
2227911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2228911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_FILTER_MASK 0x01
2229911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_FILTER_OFF 6
2230911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_FILTER_SUPPORTED(x)        \
2231911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_EVENT_FILTER_OFF] & \
2232911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_EVENT_FILTER_MASK)
2233911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2234911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLUSH_MASK 0x02
2235911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLUSH_OFF 6
2236911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLUSH_SUPPORTED(x) \
2237911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_FLUSH_OFF] & HCI_SUPP_COMMANDS_FLUSH_MASK)
2238911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2239911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PIN_TYPE_MASK 0x04
2240911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PIN_TYPE_OFF 6
2241911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PIN_TYPE_SUPPORTED(x)        \
2242911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PIN_TYPE_OFF] & \
2243911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PIN_TYPE_MASK)
2244911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2245911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PIN_TYPE_MASK 0x08
2246911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PIN_TYPE_OFF 6
2247911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PIN_TYPE_SUPPORTED(x)        \
2248911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PIN_TYPE_OFF] & \
2249911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PIN_TYPE_MASK)
2250911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2251911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_NEW_UNIT_KEY_MASK 0x10
2252911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_NEW_UNIT_KEY_OFF 6
2253911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_NEW_UNIT_KEY_SUPPORTED(x)        \
2254911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CREATE_NEW_UNIT_KEY_OFF] & \
2255911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CREATE_NEW_UNIT_KEY_MASK)
2256911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2257911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_STORED_LINK_KEY_MASK 0x20
2258911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_STORED_LINK_KEY_OFF 6
2259911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_STORED_LINK_KEY_SUPPORTED(x)        \
2260911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_STORED_LINK_KEY_OFF] & \
2261911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_STORED_LINK_KEY_MASK)
2262911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2263911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_STORED_LINK_KEY_MASK 0x40
2264911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_STORED_LINK_KEY_OFF 6
2265911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_STORED_LINK_KEY_SUPPORTED(x)        \
2266911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_STORED_LINK_KEY_OFF] & \
2267911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_STORED_LINK_KEY_MASK)
2268911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2269911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DELETE_STORED_LINK_KEY_MASK 0x80
2270911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DELETE_STORED_LINK_KEY_OFF 6
2271911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DELETE_STORED_LINK_KEY_SUPPORTED(x)        \
2272911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DELETE_STORED_LINK_KEY_OFF] & \
2273911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_DELETE_STORED_LINK_KEY_MASK)
2274911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2275911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOCAL_NAME_MASK 0x01
2276911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOCAL_NAME_OFF 7
2277911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOCAL_NAME_SUPPORTED(x)        \
2278911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LOCAL_NAME_OFF] & \
2279911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LOCAL_NAME_MASK)
2280911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2281911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_NAME_MASK 0x02
2282911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_NAME_OFF 7
2283911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_NAME_SUPPORTED(x)        \
2284911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_NAME_OFF] & \
2285911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_NAME_MASK)
2286911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2287911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CONN_ACCEPT_TOUT_MASK 0x04
2288911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CONN_ACCEPT_TOUT_OFF 7
2289911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CONN_ACCEPT_TOUT_SUPPORTED(x)        \
2290911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_CONN_ACCEPT_TOUT_OFF] & \
2291911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_CONN_ACCEPT_TOUT_MASK)
2292911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2293911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CONN_ACCEPT_TOUT_MASK 0x08
2294911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CONN_ACCEPT_TOUT_OFF 7
2295911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CONN_ACCEPT_TOUT_SUPPORTED(x)        \
2296911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_CONN_ACCEPT_TOUT_OFF] & \
2297911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_CONN_ACCEPT_TOUT_MASK)
2298911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2299911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_TOUT_MASK 0x10
2300911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_TOUT_OFF 7
2301911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_TOUT_SUPPORTED(x)        \
2302911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_TOUT_OFF] & \
2303911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_TOUT_MASK)
2304911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2305911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_TOUT_MASK 0x20
2306911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_TOUT_OFF 7
2307911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_TOUT_SUPPORTED(x)        \
2308911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_TOUT_OFF] & \
2309911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_TOUT_MASK)
2310911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2311911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SCAN_ENABLE_MASK 0x40
2312911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SCAN_ENABLE_OFF 7
2313911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SCAN_ENABLE_SUPPORTED(x)        \
2314911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SCAN_ENABLE_OFF] & \
2315911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SCAN_ENABLE_MASK)
2316911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2317911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SCAN_ENABLE_MASK 0x80
2318911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SCAN_ENABLE_OFF 7
2319911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SCAN_ENABLE_SUPPORTED(x)        \
2320911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SCAN_ENABLE_OFF] & \
2321911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SCAN_ENABLE_MASK)
2322911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2323911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_ACTIVITY_MASK 0x01
2324911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_ACTIVITY_OFF 8
2325911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_SCAN_ACTIVITY_SUPPORTED(x)        \
2326911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_SCAN_ACTIVITY_OFF] & \
2327911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_SCAN_ACTIVITY_MASK)
2328911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2329911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_ACTIVITY_MASK 0x02
2330911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_ACTIVITY_OFF 8
2331911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_SCAN_ACTIVITY_SUPPORTED(x)        \
2332911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_ACTIVITY_OFF] & \
2333911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_ACTIVITY_MASK)
2334911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2335911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQURIY_SCAN_ACTIVITY_MASK 0x04
2336911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQURIY_SCAN_ACTIVITY_OFF 8
2337911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQURIY_SCAN_ACTIVITY_SUPPORTED(x)        \
2338911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_INQURIY_SCAN_ACTIVITY_OFF] & \
2339911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_INQURIY_SCAN_ACTIVITY_MASK)
2340911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2341911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQURIY_SCAN_ACTIVITY_MASK 0x08
2342911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQURIY_SCAN_ACTIVITY_OFF 8
2343911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQURIY_SCAN_ACTIVITY_SUPPORTED(x)        \
2344911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_INQURIY_SCAN_ACTIVITY_OFF] & \
2345911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_INQURIY_SCAN_ACTIVITY_MASK)
2346911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2347911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTH_ENABLE_MASK 0x10
2348911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTH_ENABLE_OFF 8
2349911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AUTH_ENABLE_SUPPORTED(x)        \
2350911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AUTH_ENABLE_OFF] & \
2351911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AUTH_ENABLE_MASK)
2352911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2353911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTH_ENABLE_MASK 0x20
2354911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTH_ENABLE_OFF 8
2355911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AUTH_ENABLE_SUPPORTED(x)        \
2356911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_AUTH_ENABLE_OFF] & \
2357911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_AUTH_ENABLE_MASK)
2358911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2359911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_ENCRYPT_ENABLE_MASK 0x40
2360911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_ENCRYPT_ENABLE_OFF 8
2361911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ENCRYPT_ENABLE_SUPPORTED(x)        \
2362911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_ENCRYPT_ENABLE_OFF] & \
2363911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_ENCRYPT_ENABLE_MASK)
2364911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2365911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_ENCRYPT_ENABLE_MASK 0x80
2366911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_ENCRYPT_ENABLE_OFF 8
2367911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_ENCRYPT_ENABLE_SUPPORTED(x)        \
2368911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_ENCRYPT_ENABLE_OFF] & \
2369911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_ENCRYPT_ENABLE_MASK)
2370911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2371911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CLASS_DEVICE_MASK 0x01
2372911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CLASS_DEVICE_OFF 9
2373911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CLASS_DEVICE_SUPPORTED(x)        \
2374911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_CLASS_DEVICE_OFF] & \
2375911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_CLASS_DEVICE_MASK)
2376911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2377911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CLASS_DEVICE_MASK 0x02
2378911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CLASS_DEVICE_OFF 9
2379911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CLASS_DEVICE_SUPPORTED(x)        \
2380911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_CLASS_DEVICE_OFF] & \
2381911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_CLASS_DEVICE_MASK)
2382911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2383911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_VOICE_SETTING_MASK 0x04
2384911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_VOICE_SETTING_OFF 9
2385911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_VOICE_SETTING_SUPPORTED(x)        \
2386911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_VOICE_SETTING_OFF] & \
2387911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_VOICE_SETTING_MASK)
2388911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2389911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_VOICE_SETTING_MASK 0x08
2390911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_VOICE_SETTING_OFF 9
2391911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_VOICE_SETTING_SUPPORTED(x)        \
2392911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_VOICE_SETTING_OFF] & \
2393911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_VOICE_SETTING_MASK)
2394911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2395911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTO_FLUSH_TOUT_MASK 0x10
2396911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTO_FLUSH_TOUT_OFF 9
2397911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AUTO_FLUSH_TOUT_SUPPORTED(x)        \
2398911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AUTO_FLUSH_TOUT_OFF] & \
2399911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AUTO_FLUSH_TOUT_MASK)
2400911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2401911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTO_FLUSH_TOUT_MASK 0x20
2402911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTO_FLUSH_TOUT_OFF 9
2403911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AUTO_FLUSH_TOUT_SUPPORTED(x)        \
2404911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_AUTO_FLUSH_TOUT_OFF] & \
2405911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_AUTO_FLUSH_TOUT_MASK)
2406911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2407911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_NUM_BROAD_RETRANS_MASK 0x40
2408911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_NUM_BROAD_RETRANS_OFF 9
2409911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_NUM_BROAD_RETRANS_SUPPORTED(x)        \
2410911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_NUM_BROAD_RETRANS_OFF] & \
2411911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_NUM_BROAD_RETRANS_MASK)
2412911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2413911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_NUM_BROAD_RETRANS_MASK 0x80
2414911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_NUM_BROAD_RETRANS_OFF 9
2415911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_NUM_BROAD_RETRANS_SUPPORTED(x)        \
2416911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_NUM_BROAD_RETRANS_OFF] & \
2417911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_NUM_BROAD_RETRANS_MASK)
2418911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2419911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_HOLD_MODE_ACTIVITY_MASK 0x01
2420911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_HOLD_MODE_ACTIVITY_OFF 10
2421911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_HOLD_MODE_ACTIVITY_SUPPORTED(x)        \
2422911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_HOLD_MODE_ACTIVITY_OFF] & \
2423911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_HOLD_MODE_ACTIVITY_MASK)
2424911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2425911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_HOLD_MODE_ACTIVITY_MASK 0x02
2426911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_HOLD_MODE_ACTIVITY_OFF 10
2427911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_HOLD_MODE_ACTIVITY_SUPPORTED(x)        \
2428911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_HOLD_MODE_ACTIVITY_OFF] & \
2429911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_HOLD_MODE_ACTIVITY_MASK)
2430911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2431911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_TRANS_PWR_LEVEL_MASK 0x04
2432911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_TRANS_PWR_LEVEL_OFF 10
2433911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_TRANS_PWR_LEVEL_SUPPORTED(x)        \
2434911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_TRANS_PWR_LEVEL_OFF] & \
2435911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_TRANS_PWR_LEVEL_MASK)
2436911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2437911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SYNCH_FLOW_CTRL_ENABLE_MASK 0x08
2438911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SYNCH_FLOW_CTRL_ENABLE_OFF 10
2439911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SYNCH_FLOW_CTRL_ENABLE_SUPPORTED(x)        \
2440911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SYNCH_FLOW_CTRL_ENABLE_OFF] & \
2441911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SYNCH_FLOW_CTRL_ENABLE_MASK)
2442911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2443911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SYNCH_FLOW_CTRL_ENABLE_MASK 0x10
2444911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SYNCH_FLOW_CTRL_ENABLE_OFF 10
2445911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SYNCH_FLOW_CTRL_ENABLE_SUPPORTED(x)        \
2446911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SYNCH_FLOW_CTRL_ENABLE_OFF] & \
2447911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SYNCH_FLOW_CTRL_ENABLE_MASK)
2448911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2449911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_HOST_CTRLR_TO_HOST_FC_MASK 0x20
2450911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_HOST_CTRLR_TO_HOST_FC_OFF 10
2451911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_HOST_CTRLR_TO_HOST_FC_SUPPORTED(x)        \
2452911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_HOST_CTRLR_TO_HOST_FC_OFF] & \
2453911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_HOST_CTRLR_TO_HOST_FC_MASK)
2454911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2455911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOST_BUFFER_SIZE_MASK 0x40
2456911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOST_BUFFER_SIZE_OFF 10
2457911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOST_BUFFER_SIZE_SUPPORTED(x)        \
2458911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_HOST_BUFFER_SIZE_OFF] & \
2459911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_HOST_BUFFER_SIZE_MASK)
2460911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2461911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOST_NUM_COMPLETED_PKTS_MASK 0x80
2462911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_HOST_NUM_COMPLETED_PKTS_OFF 10
2463911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_HOST_NUM_COMPLETED_PKTS_SUPPORTED(x)        \
2464911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_HOST_NUM_COMPLETED_PKTS_OFF] & \
2465911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_HOST_NUM_COMPLETED_PKTS_MASK)
2466911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2467911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LINK_SUP_TOUT_MASK 0x01
2468911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LINK_SUP_TOUT_OFF 11
2469911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LINK_SUP_TOUT_SUPPORTED(x)        \
2470911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LINK_SUP_TOUT_OFF] & \
2471911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LINK_SUP_TOUT_MASK)
2472911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2473911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LINK_SUP_TOUT_MASK 0x02
2474911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LINK_SUP_TOUT_OFF 11
2475911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LINK_SUP_TOUT_SUPPORTED(x)        \
2476911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LINK_SUP_TOUT_OFF] & \
2477911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LINK_SUP_TOUT_MASK)
2478911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2479911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_NUM_SUPP_IAC_MASK 0x04
2480911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_NUM_SUPP_IAC_OFF 11
2481911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_NUM_SUPP_IAC_SUPPORTED(x)        \
2482911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_NUM_SUPP_IAC_OFF] & \
2483911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_NUM_SUPP_IAC_MASK)
2484911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2485911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CURRENT_IAC_LAP_MASK 0x08
2486911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_CURRENT_IAC_LAP_OFF 11
2487911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_CURRENT_IAC_LAP_SUPPORTED(x)        \
2488911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_CURRENT_IAC_LAP_OFF] & \
2489911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_CURRENT_IAC_LAP_MASK)
2490911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2491911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CURRENT_IAC_LAP_MASK 0x10
2492911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_CURRENT_IAC_LAP_OFF 11
2493911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_CURRENT_IAC_LAP_SUPPORTED(x)        \
2494911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_CURRENT_IAC_LAP_OFF] & \
2495911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_CURRENT_IAC_LAP_MASK)
2496911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2497911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_PER_MODE_MASK 0x20
2498911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_PER_MODE_OFF 11
2499911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_SCAN_PER_MODE_SUPPORTED(x)        \
2500911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_SCAN_PER_MODE_OFF] & \
2501911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_SCAN_PER_MODE_MASK)
2502911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2503911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_PER_MODE_MASK 0x40
2504911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_PER_MODE_OFF 11
2505911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_SCAN_PER_MODE_SUPPORTED(x)        \
2506911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_PER_MODE_OFF] & \
2507911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_PER_MODE_MASK)
2508911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2509911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_MODE_MASK 0x80
2510911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_MODE_OFF 11
2511911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_SCAN_MODE_SUPPORTED(x)        \
2512911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_SCAN_MODE_OFF] & \
2513911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_SCAN_MODE_MASK)
2514911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2515911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_MODE_MASK 0x01
2516911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_MODE_OFF 12
2517911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_SCAN_MODE_SUPPORTED(x)        \
2518911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_MODE_OFF] & \
2519911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_MODE_MASK)
2520911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2521911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_AFH_CHNL_CLASS_MASK 0x02
2522911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_AFH_CHNL_CLASS_OFF 12
2523911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_AFH_CHNL_CLASS_SUPPORTED(x)        \
2524911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_AFH_CHNL_CLASS_OFF] & \
2525911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_AFH_CHNL_CLASS_MASK)
2526911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2527911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_SCAN_TYPE_MASK 0x10
2528911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_SCAN_TYPE_OFF 12
2529911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQUIRY_SCAN_TYPE_SUPPORTED(x)        \
2530911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_INQUIRY_SCAN_TYPE_OFF] & \
2531911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_INQUIRY_SCAN_TYPE_MASK)
2532911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2533911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_SCAN_TYPE_MASK 0x20
2534911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_SCAN_TYPE_OFF 12
2535911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQUIRY_SCAN_TYPE_SUPPORTED(x)        \
2536911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_INQUIRY_SCAN_TYPE_OFF] & \
2537911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_INQUIRY_SCAN_TYPE_MASK)
2538911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2539911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_MODE_MASK 0x40
2540911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_MODE_OFF 12
2541911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQUIRY_MODE_SUPPORTED(x)        \
2542911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_INQUIRY_MODE_OFF] & \
2543911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_INQUIRY_MODE_MASK)
2544911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2545911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_MODE_MASK 0x80
2546911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_MODE_OFF 12
2547911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQUIRY_MODE_SUPPORTED(x)        \
2548911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_INQUIRY_MODE_OFF] & \
2549911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_INQUIRY_MODE_MASK)
2550911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2551911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_TYPE_MASK 0x01
2552911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_PAGE_SCAN_TYPE_OFF 13
2553911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_PAGE_SCAN_TYPE_SUPPORTED(x)        \
2554911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_PAGE_SCAN_TYPE_OFF] & \
2555911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_PAGE_SCAN_TYPE_MASK)
2556911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2557911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_TYPE_MASK 0x02
2558911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_TYPE_OFF 13
2559911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_PAGE_SCAN_TYPE_SUPPORTED(x)        \
2560911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_TYPE_OFF] & \
2561911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_PAGE_SCAN_TYPE_MASK)
2562911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2563911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AFH_CHNL_ASSESS_MODE_MASK 0x04
2564911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AFH_CHNL_ASSESS_MODE_OFF 13
2565911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AFH_CHNL_ASSESS_MODE_SUPPORTED(x)        \
2566911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AFH_CHNL_ASSESS_MODE_OFF] & \
2567911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AFH_CHNL_ASSESS_MODE_MASK)
2568911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2569911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AFH_CHNL_ASSESS_MODE_MASK 0x08
2570911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AFH_CHNL_ASSESS_MODE_OFF 13
2571911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AFH_CHNL_ASSESS_MODE_SUPPORTED(x)        \
2572911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_AFH_CHNL_ASSESS_MODE_OFF] & \
2573911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_AFH_CHNL_ASSESS_MODE_MASK)
2574911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2575911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_VER_INFO_MASK 0x08
2576911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_VER_INFO_OFF 14
2577911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_VER_INFO_SUPPORTED(x)        \
2578911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_VER_INFO_OFF] & \
2579911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_VER_INFO_MASK)
2580911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2581911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_SUP_CMDS_MASK 0x10
2582911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_SUP_CMDS_OFF 14
2583911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_SUP_CMDS_SUPPORTED(x)        \
2584911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_SUP_CMDS_OFF] & \
2585911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_SUP_CMDS_MASK)
2586911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2587911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_SUPP_FEATURES_MASK 0x20
2588911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_SUPP_FEATURES_OFF 14
2589911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_SUPP_FEATURES_SUPPORTED(x)        \
2590911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_SUPP_FEATURES_OFF] & \
2591911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_SUPP_FEATURES_MASK)
2592911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2593911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_EXT_FEATURES_MASK 0x40
2594911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_EXT_FEATURES_OFF 14
2595911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_EXT_FEATURES_SUPPORTED(x)        \
2596911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_EXT_FEATURES_OFF] & \
2597911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_EXT_FEATURES_MASK)
2598911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2599911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BUFFER_SIZE_MASK 0x80
2600911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BUFFER_SIZE_OFF 14
2601911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BUFFER_SIZE_SUPPORTED(x)        \
2602911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_BUFFER_SIZE_OFF] & \
2603911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_BUFFER_SIZE_MASK)
2604911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2605911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_COUNTRY_CODE_MASK 0x01
2606911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_COUNTRY_CODE_OFF 15
2607911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_COUNTRY_CODE_SUPPORTED(x)        \
2608911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_COUNTRY_CODE_OFF] & \
2609911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_COUNTRY_CODE_MASK)
2610911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2611911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BD_ADDR_MASK 0x02
2612911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BD_ADDR_OFF 15
2613911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BD_ADDR_SUPPORTED(x)        \
2614911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_BD_ADDR_OFF] & \
2615911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_BD_ADDR_MASK)
2616911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2617911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_FAIL_CONTACT_CNTR_MASK 0x04
2618911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_FAIL_CONTACT_CNTR_OFF 15
2619911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_FAIL_CONTACT_CNTR_SUPPORTED(x)        \
2620911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_FAIL_CONTACT_CNTR_OFF] & \
2621911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_FAIL_CONTACT_CNTR_MASK)
2622911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2623911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RESET_FAIL_CONTACT_CNTR_MASK 0x08
2624911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RESET_FAIL_CONTACT_CNTR_OFF 15
2625911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RESET_FAIL_CONTACT_CNTR_SUPPORTED(x)        \
2626911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_RESET_FAIL_CONTACT_CNTR_OFF] & \
2627911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_RESET_FAIL_CONTACT_CNTR_MASK)
2628911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2629911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_GET_LINK_QUALITY_MASK 0x10
2630911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_GET_LINK_QUALITY_OFF 15
2631911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GET_LINK_QUALITY_SUPPORTED(x)        \
2632911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_GET_LINK_QUALITY_OFF] & \
2633911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_GET_LINK_QUALITY_MASK)
2634911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2635911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_RSSI_MASK 0x20
2636911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_RSSI_OFF 15
2637911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_RSSI_SUPPORTED(x) \
2638911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_RSSI_OFF] & HCI_SUPP_COMMANDS_READ_RSSI_MASK)
2639911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2640911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AFH_CH_MAP_MASK 0x40
2641911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AFH_CH_MAP_OFF 15
2642911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AFH_CH_MAP_SUPPORTED(x)        \
2643911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AFH_CH_MAP_OFF] & \
2644911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AFH_CH_MAP_MASK)
2645911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2646911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BD_CLOCK_MASK 0x80
2647911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BD_CLOCK_OFF 15
2648911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BD_CLOCK_SUPPORTED(x)        \
2649911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_BD_CLOCK_OFF] & \
2650911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_BD_CLOCK_MASK)
2651911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2652911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOOPBACK_MODE_MASK 0x01
2653911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOOPBACK_MODE_OFF 16
2654911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOOPBACK_MODE_SUPPORTED(x)        \
2655911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOOPBACK_MODE_OFF] & \
2656911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOOPBACK_MODE_MASK)
2657911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2658911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOOPBACK_MODE_MASK 0x02
2659911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOOPBACK_MODE_OFF 16
2660911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOOPBACK_MODE_SUPPORTED(x)        \
2661911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LOOPBACK_MODE_OFF] & \
2662911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LOOPBACK_MODE_MASK)
2663911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2664911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENABLE_DEV_UNDER_TEST_MASK 0x04
2665911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENABLE_DEV_UNDER_TEST_OFF 16
2666911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_DEV_UNDER_TEST_SUPPORTED(x)        \
2667911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENABLE_DEV_UNDER_TEST_OFF] & \
2668911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENABLE_DEV_UNDER_TEST_MASK)
2669911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2670911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SETUP_SYNCH_CONN_MASK 0x08
2671911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SETUP_SYNCH_CONN_OFF 16
2672911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SETUP_SYNCH_CONN_SUPPORTED(x)        \
2673911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SETUP_SYNCH_CONN_OFF] & \
2674911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SETUP_SYNCH_CONN_MASK)
2675911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2676911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_SYNCH_CONN_MASK 0x10
2677911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_SYNCH_CONN_OFF 16
2678911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_SYNCH_CONN_SUPPORTED(x)        \
2679911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ACCEPT_SYNCH_CONN_OFF] & \
2680911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ACCEPT_SYNCH_CONN_MASK)
2681911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2682911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REJECT_SYNCH_CONN_MASK 0x20
2683911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REJECT_SYNCH_CONN_OFF 16
2684911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REJECT_SYNCH_CONN_SUPPORTED(x)        \
2685911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REJECT_SYNCH_CONN_OFF] & \
2686911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REJECT_SYNCH_CONN_MASK)
2687911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2688911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_EXT_INQUIRY_RESP_MASK 0x01
2689911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_EXT_INQUIRY_RESP_OFF 17
2690911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_EXT_INQUIRY_RESP_SUPPORTED(x)        \
2691911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_EXT_INQUIRY_RESP_OFF] & \
2692911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_EXT_INQUIRY_RESP_MASK)
2693911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2694911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_EXT_INQUIRY_RESP_MASK 0x02
2695911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_EXT_INQUIRY_RESP_OFF 17
2696911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_EXT_INQUIRY_RESP_SUPPORTED(x)        \
2697911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_EXT_INQUIRY_RESP_OFF] & \
2698911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_EXT_INQUIRY_RESP_MASK)
2699911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2700911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REFRESH_ENCRYPTION_KEY_MASK 0x04
2701911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REFRESH_ENCRYPTION_KEY_OFF 17
2702911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REFRESH_ENCRYPTION_KEY_SUPPORTED(x)        \
2703911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REFRESH_ENCRYPTION_KEY_OFF] & \
2704911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REFRESH_ENCRYPTION_KEY_MASK)
27055738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
27065738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Octet 17, bit 3 is reserved */
27075738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2708911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SNIFF_SUB_RATE_MASK 0x10
2709911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SNIFF_SUB_RATE_OFF 17
2710911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SNIFF_SUB_RATE_CMD_SUPPORTED(x)    \
2711911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SNIFF_SUB_RATE_OFF] & \
2712911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SNIFF_SUB_RATE_MASK)
2713911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2714911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SIMPLE_PAIRING_MODE_MASK 0x20
2715911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SIMPLE_PAIRING_MODE_OFF 17
2716911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SIMPLE_PAIRING_MODE_SUPPORTED(x)        \
2717911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SIMPLE_PAIRING_MODE_OFF] & \
2718911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SIMPLE_PAIRING_MODE_MASK)
2719911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2720911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_MODE_MASK 0x40
2721911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_MODE_OFF 17
2722911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SIMPLE_PAIRING_MODE_SUPPORTED(x)        \
2723911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_MODE_OFF] & \
2724911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_MODE_MASK)
2725911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2726911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_DATA_MASK 0x80
2727911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_DATA_OFF 17
2728911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_OOB_DATA_SUPPORTED(x)        \
2729911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_OOB_DATA_OFF] & \
2730911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_OOB_DATA_MASK)
2731911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2732911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_RESPONSE_TX_POWER_MASK 0x01
2733911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_INQUIRY_RESPONSE_TX_POWER_OFF 18
2734911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_INQUIRY_RESPONSE_TX_POWER_SUPPORTED(x)        \
2735911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_INQUIRY_RESPONSE_TX_POWER_OFF] & \
2736911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_INQUIRY_RESPONSE_TX_POWER_MASK)
2737911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2738911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_RESPONSE_TX_POWER_MASK 0x02
2739911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_INQUIRY_RESPONSE_TX_POWER_OFF 18
2740911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_INQUIRY_RESPONSE_TX_POWER_SUPPORTED(x)        \
2741911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_INQUIRY_RESPONSE_TX_POWER_OFF] & \
2742911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_INQUIRY_RESPONSE_TX_POWER_MASK)
2743911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2744911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_MASK 0x04
2745911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_OFF 18
2746911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_SUPPORTED(x)        \
2747911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_OFF] & \
2748911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_DEFAULT_ERRONEOUS_DATA_REPORTING_MASK)
2749911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2750911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_MASK 0x08
2751911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_OFF 18
2752911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_SUPPORTED(x)        \
2753911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_OFF] & \
2754911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_DEFAULT_ERRONEOUS_DATA_REPORTING_MASK)
2755911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2756911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_IO_CAPABILITY_REQUEST_REPLY_MASK 0x80
2757911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_IO_CAPABILITY_REQUEST_REPLY_OFF 18
2758911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAPABILITY_REQUEST_REPLY_SUPPORTED(x)        \
2759911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_IO_CAPABILITY_REQUEST_REPLY_OFF] & \
2760911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_IO_CAPABILITY_REQUEST_REPLY_MASK)
2761911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2762911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_REPLY_MASK 0x01
2763911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_REPLY_OFF 19
2764911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_CONFIRMATION_REQUEST_REPLY_SUPPORTED(x)        \
2765911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_REPLY_OFF] & \
2766911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_REPLY_MASK)
2767911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2768911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_NEG_REPLY_MASK 0x02
2769911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_NEG_REPLY_OFF 19
2770911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_CONFIRMATION_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2771911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_NEG_REPLY_OFF] & \
2772911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_USER_CONFIRMATION_REQUEST_NEG_REPLY_MASK)
2773911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2774911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_REPLY_MASK 0x04
2775911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_REPLY_OFF 19
2776911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_REQUEST_REPLY_SUPPORTED(x)        \
2777911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_REPLY_OFF] & \
2778911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_REPLY_MASK)
2779911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2780911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_NEG_REPLY_MASK 0x08
2781911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_NEG_REPLY_OFF 19
2782911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_USER_PASSKEY_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2783911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_NEG_REPLY_OFF] & \
2784911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_USER_PASSKEY_REQUEST_NEG_REPLY_MASK)
2785911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2786911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_REPLY_MASK 0x10
2787911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_REPLY_OFF 19
2788911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_OOB_DATA_REQUEST_REPLY_SUPPORTED(x)        \
2789911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_REPLY_OFF] & \
2790911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_REPLY_MASK)
2791911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2792911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_DBG_MODE_MASK 0x20
2793911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_DBG_MODE_OFF 19
2794911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SIMPLE_PAIRING_DBG_MODE_SUPPORTED(x)        \
2795911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_DBG_MODE_OFF] & \
2796911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SIMPLE_PAIRING_DBG_MODE_MASK)
2797911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2798911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENHANCED_FLUSH_MASK 0x40
2799911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENHANCED_FLUSH_OFF 19
2800911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENHANCED_FLUSH_SUPPORTED(x)        \
2801911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENHANCED_FLUSH_OFF] & \
2802911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENHANCED_FLUSH_MASK)
2803911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2804911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_MASK 0x80
2805911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_OFF 19
2806911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_SUPPORTED(x)        \
2807911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_OFF] & \
2808911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REMOTE_OOB_DATA_REQUEST_NEG_REPLY_MASK)
28095738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
28105738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 20) */
2811911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SEND_KEYPRESS_NOTIF_MASK 0x04
2812911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SEND_KEYPRESS_NOTIF_OFF 20
2813911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SEND_NOTIF_SUPPORTED(x)                 \
2814911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SEND_KEYPRESS_NOTIF_OFF] & \
2815911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SEND_KEYPRESS_NOTIF_MASK)
2816911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2817911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_IO_CAP_REQ_NEG_REPLY_MASK 0x08
2818911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_IO_CAP_REQ_NEG_REPLY_OFF 20
2819911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_IO_CAP_REQ_NEG_REPLY_SUPPORTED(x)        \
2820911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_IO_CAP_REQ_NEG_REPLY_OFF] & \
2821911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_IO_CAP_REQ_NEG_REPLY_MASK)
2822911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2823911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_ENCR_KEY_SIZE_MASK 0x10
2824911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_ENCR_KEY_SIZE_OFF 20
2825911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_ENCR_KEY_SIZE_SUPPORTED(x)        \
2826911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_ENCR_KEY_SIZE_OFF] & \
2827911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_ENCR_KEY_SIZE_MASK)
28285738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
28295738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 21) */
2830911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_PHYSICAL_LINK_MASK 0x01
2831911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_PHYSICAL_LINK_OFF 21
2832911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_PHYSICAL_LINK_SUPPORTED(x)        \
2833911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CREATE_PHYSICAL_LINK_OFF] & \
2834911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CREATE_PHYSICAL_LINK_MASK)
2835911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2836911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_PHYSICAL_LINK_MASK 0x02
2837911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_PHYSICAL_LINK_OFF 21
2838911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_PHYSICAL_LINK_SUPPORTED(x)        \
2839911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ACCEPT_PHYSICAL_LINK_OFF] & \
2840911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ACCEPT_PHYSICAL_LINK_MASK)
2841911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2842911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_PHYSICAL_LINK_MASK 0x04
2843911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_PHYSICAL_LINK_OFF 21
2844911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT_PHYSICAL_LINK_SUPPORTED(x)        \
2845911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DISCONNECT_PHYSICAL_LINK_OFF] & \
2846911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_DISCONNECT_PHYSICAL_LINK_MASK)
2847911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2848911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_LOGICAL_LINK_MASK 0x08
2849911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_CREATE_LOGICAL_LINK_OFF 21
2850911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_CREATE_LOGICAL_LINK_SUPPORTED(x)        \
2851911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_CREATE_LOGICAL_LINK_OFF] & \
2852911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_CREATE_LOGICAL_LINK_MASK)
2853911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2854911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_LOGICAL_LINK_MASK 0x10
2855911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ACCEPT_LOGICAL_LINK_OFF 21
2856911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ACCEPT_LOGICAL_LINK_SUPPORTED(x)        \
2857911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ACCEPT_LOGICAL_LINK_OFF] & \
2858911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ACCEPT_LOGICAL_LINK_MASK)
2859911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2860911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_LOGICAL_LINK_MASK 0x20
2861911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DISCONNECT_LOGICAL_LINK_OFF 21
2862911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DISCONNECT_LOGICAL_LINK_SUPPORTED(x)        \
2863911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DISCONNECT_LOGICAL_LINK_OFF] & \
2864911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_DISCONNECT_LOGICAL_LINK_MASK)
2865911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2866911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LOGICAL_LINK_CANCEL_MASK 0x40
2867911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LOGICAL_LINK_CANCEL_OFF 21
2868911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LOGICAL_LINK_CANCEL_SUPPORTED(x)        \
2869911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LOGICAL_LINK_CANCEL_OFF] & \
2870911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_LOGICAL_LINK_CANCEL_MASK)
2871911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2872911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLOW_SPEC_MODIFY_MASK 0x80
2873911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_FLOW_SPEC_MODIFY_OFF 21
2874911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_FLOW_SPEC_MODIFY_SUPPORTED(x)        \
2875911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_FLOW_SPEC_MODIFY_OFF] & \
2876911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_FLOW_SPEC_MODIFY_MASK)
28775738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
28785738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 22) */
2879911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_MASK 0x01
2880911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_OFF 22
2881911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_SUPPORTED(x)        \
2882911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_OFF] & \
2883911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOGICAL_LINK_ACCEPT_TIMEOUT_MASK)
2884911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2885911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_MASK 0x02
2886911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_OFF 22
2887911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_SUPPORTED(x)        \
2888911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_OFF] & \
2889911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT_MASK)
2890911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2891911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_MASK_PAGE_2_MASK 0x04
2892911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EVENT_MASK_PAGE_2_OFF 22
2893911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EVENT_MASK_PAGE_2_SUPPORTED(x)        \
2894911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_EVENT_MASK_PAGE_2_OFF] & \
2895911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_EVENT_MASK_PAGE_2_MASK)
2896911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2897911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCATION_DATA_MASK 0x08
2898911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCATION_DATA_OFF 22
2899911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCATION_DATA_SUPPORTED(x)        \
2900911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCATION_DATA_OFF] & \
2901911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCATION_DATA_MASK)
2902911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2903911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOCATION_DATA_MASK 0x10
2904911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_LOCATION_DATA_OFF 22
2905911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_LOCATION_DATA_SUPPORTED(x)        \
2906911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_LOCATION_DATA_OFF] & \
2907911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_LOCATION_DATA_MASK)
2908911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2909911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_AMP_INFO_MASK 0x20
2910911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_AMP_INFO_OFF 22
2911911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_AMP_INFO_SUPPORTED(x)        \
2912911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_AMP_INFO_OFF] & \
2913911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_AMP_INFO_MASK)
2914911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2915911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_AMP_ASSOC_MASK 0x40
2916911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_AMP_ASSOC_OFF 22
2917911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_AMP_ASSOC_SUPPORTED(x)        \
2918911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_AMP_ASSOC_OFF] & \
2919911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_AMP_ASSOC_MASK)
2920911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2921911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_REMOTE_AMP_ASSOC_MASK 0x80
2922911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_REMOTE_AMP_ASSOC_OFF 22
2923911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_REMOTE_AMP_ASSOC_SUPPORTED(x)        \
2924911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_REMOTE_AMP_ASSOC_OFF] & \
2925911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_REMOTE_AMP_ASSOC_MASK)
29265738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
29275738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 23) */
2928911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_FLOW_CONTROL_MODE_MASK 0x01
2929911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_FLOW_CONTROL_MODE_OFF 23
2930911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_FLOW_CONTROL_MODE_SUPPORTED(x)        \
2931911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_FLOW_CONTROL_MODE_OFF] & \
2932911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_FLOW_CONTROL_MODE_MASK)
2933911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2934911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_FLOW_CONTROL_MODE_MASK 0x02
2935911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_FLOW_CONTROL_MODE_OFF 23
2936911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_FLOW_CONTROL_MODE_SUPPORTED(x)        \
2937911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_FLOW_CONTROL_MODE_OFF] & \
2938911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_FLOW_CONTROL_MODE_MASK)
2939911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2940911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DATA_BLOCK_SIZE_MASK 0x04
2941911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_DATA_BLOCK_SIZE_OFF 23
2942911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_DATA_BLOCK_SIZE_SUPPORTED(x)        \
2943911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_DATA_BLOCK_SIZE_OFF] & \
2944911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_DATA_BLOCK_SIZE_MASK)
2945911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2946911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENABLE_AMP_RCVR_REPORTS_MASK 0x20
2947911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENABLE_AMP_RCVR_REPORTS_OFF 23
2948911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_ENABLE_AMP_RCVR_REPORTS_SUPPORTED(x)        \
2949911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENABLE_AMP_RCVR_REPORTS_OFF] & \
2950911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENABLE_AMP_RCVR_REPORTS_MASK)
2951911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2952911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AMP_TEST_END_MASK 0x40
2953911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AMP_TEST_END_OFF 23
2954911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_TEST_END_SUPPORTED(x)        \
2955911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_AMP_TEST_END_OFF] & \
2956911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_AMP_TEST_END_MASK)
2957911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2958911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AMP_TEST_MASK 0x80
2959911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_AMP_TEST_OFF 23
2960911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_AMP_TEST_SUPPORTED(x) \
2961911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_AMP_TEST_OFF] & HCI_SUPP_COMMANDS_AMP_TEST_MASK)
29625738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
29635738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* Supported Commands (Byte 24) */
2964911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_TRANSMIT_POWER_LEVEL_MASK 0x01
2965911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_TRANSMIT_POWER_LEVEL_OFF 24
2966911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_TRANSMIT_POWER_LEVEL_SUPPORTED(x)        \
2967911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_TRANSMIT_POWER_LEVEL_OFF] & \
2968911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_TRANSMIT_POWER_LEVEL_MASK)
2969911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2970911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BE_FLUSH_TOUT_MASK 0x04
2971911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_BE_FLUSH_TOUT_OFF 24
2972911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_BE_FLUSH_TOUT_SUPPORTED(x)        \
2973911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_BE_FLUSH_TOUT_OFF] & \
2974911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_BE_FLUSH_TOUT_MASK)
2975911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2976911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_BE_FLUSH_TOUT_MASK 0x08
2977911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_BE_FLUSH_TOUT_OFF 24
2978911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_BE_FLUSH_TOUT_SUPPORTED(x)        \
2979911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_BE_FLUSH_TOUT_OFF] & \
2980911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_BE_FLUSH_TOUT_MASK)
2981911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
2982911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SHORT_RANGE_MODE_MASK 0x10
2983911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SHORT_RANGE_MODE_OFF 24
2984911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SHORT_RANGE_MODE_SUPPORTED(x)        \
2985911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SHORT_RANGE_MODE_OFF] & \
2986911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SHORT_RANGE_MODE_MASK)
29875738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
29885738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project/* LE commands TBD
2989ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 24 continued)
2990ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 25)
2991ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 26)
2992ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 27)
2993ee96a3c60fca590d38025925c072d264e06493c4Myles Watson * Supported Commands (Byte 28)
29945738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project*/
29955738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project
2996ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 29) */
2997911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENH_SETUP_SYNCH_CONN_MASK 0x08
2998911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENH_SETUP_SYNCH_CONN_OFF 29
2999181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth#define HCI_ENH_SETUP_SYNCH_CONN_SUPPORTED(x)        \
3000911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENH_SETUP_SYNCH_CONN_OFF] & \
3001911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENH_SETUP_SYNCH_CONN_MASK)
3002911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3003911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENH_ACCEPT_SYNCH_CONN_MASK 0x10
3004911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_ENH_ACCEPT_SYNCH_CONN_OFF 29
3005181863e6c2a5f2575334bef5489d0e2a85132756Mudumba Ananth#define HCI_ENH_ACCEPT_SYNCH_CONN_SUPPORTED(x)        \
3006911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_ENH_ACCEPT_SYNCH_CONN_OFF] & \
3007911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_ENH_ACCEPT_SYNCH_CONN_MASK)
3008911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3009911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_CODECS_MASK 0x20
3010911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_CODECS_OFF 29
3011911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_CODECS_SUPPORTED(x)        \
3012911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_CODECS_OFF] & \
3013911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_CODECS_MASK)
3014911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3015911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_CHANN_PARAM_MASK 0x40
3016911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_CHANN_PARAM_OFF 29
3017911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_CHANNEL_PARAMETERS_SUPPORTED(x) \
3018911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_CHANN_PARAM_OFF] & \
3019911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_CHANN_PARAM_MASK)
3020911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3021911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EXT_FRAME_CONF_MASK 0x80
3022911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_EXT_FRAME_CONF_OFF 29
3023911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_EXTERNAL_FRAME_CONFIGURATION_SUPPORTED(x) \
3024911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_EXT_FRAME_CONF_OFF] &        \
3025911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_EXT_FRAME_CONF_MASK)
3026ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
3027ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 30) */
3028911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_SIGNALING_MASK 0x01
3029911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_SIGNALING_OFF 30
3030911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_SIGNALING_SUPPORTED(x)        \
3031911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_SIGNALING_OFF] & \
3032911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_SIGNALING_MASK)
3033911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3034911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_TRANS_LAYER_MASK 0x02
3035911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_TRANS_LAYER_OFF 30
3036911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_TRANSPORT_LAYER_SUPPORTED(x)    \
3037911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_TRANS_LAYER_OFF] & \
3038911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_TRANS_LAYER_MASK)
3039911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3040911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_SCAN_FREQ_TABLE_MASK 0x04
3041911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_SCAN_FREQ_TABLE_OFF 30
3042911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_SCAN_FREQUENCY_TABLE_SUPPORTED(x)   \
3043911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_SCAN_FREQ_TABLE_OFF] & \
3044911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_SCAN_FREQ_TABLE_MASK)
3045911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3046911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_GET_TRANS_LAYER_CONF_MASK 0x08
3047911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_GET_TRANS_LAYER_CONF_OFF 30
3048911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_GET_MWS_TRANS_LAYER_CFG_SUPPORTED(x)     \
3049911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_GET_TRANS_LAYER_CONF_OFF] & \
3050911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_GET_TRANS_LAYER_CONF_MASK)
3051911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3052911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_PATTERN_CONF_MASK 0x10
3053911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_MWS_PATTERN_CONF_OFF 30
3054911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_MWS_PATTERN_CONFIGURATION_SUPPORTED(x) \
3055911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_MWS_PATTERN_CONF_OFF] &   \
3056911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_MWS_PATTERN_CONF_MASK)
3057ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
30583aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach/* Supported Commands (Byte 30 bit 5) */
3059911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_TRIG_CLK_CAP_MASK 0x20
3060911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_TRIG_CLK_CAP_OFF 30
3061911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_TRIG_CLK_CAP_SUPPORTED(x)        \
3062911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_TRIG_CLK_CAP_OFF] & \
3063911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_TRIG_CLK_CAP_MASK)
30643aa60544585b5fb0f35c1165539a4a859fc0f25cAndre Eisenbach
3065ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 30 bit 6-7) */
3066911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_TRUNCATED_PAGE 0x06
3067911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_TRUNCATED_PAGE_OFF 30
3068911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TRUNCATED_PAGE_SUPPORTED(x) \
3069911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_TRUNCATED_PAGE_OFF] & HCI_SUPP_COMMANDS_TRUNCATED_PAGE)
3070ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
3071911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_TRUNCATED_PAGE_CANCEL 0x07
3072911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_TRUNCATED_PAGE_CANCEL_OFF 30
3073911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_TRUNCATED_PAGE_CANCEL_SUPPORTED(x)        \
3074911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_TRUNCATED_PAGE_CANCEL_OFF] & \
3075911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_TRUNCATED_PAGE_CANCEL)
3076ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
3077ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 31 bit 6-7) */
3078911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST 0x00
3079911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_OFF 31
3080911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONLESS_SLAVE_BRCST_SUPPORTED(x)        \
3081911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_OFF] & \
3082911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST)
3083911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3084911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_RECEIVE 0x01
3085911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_RECEIVE_OFF 31
3086911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONLESS_SLAVE_BRCST_RECEIVE_SUPPORTED(x)        \
3087911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_RECEIVE_OFF] & \
3088911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_RECEIVE)
3089911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3090911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_START_SYNC_TRAIN 0x02
3091911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_START_SYNC_TRAIN_OFF 31
3092911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_START_SYNC_TRAIN_SUPPORTED(x)        \
3093911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_START_SYNC_TRAIN_OFF] & \
3094911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_START_SYNC_TRAIN)
3095911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3096911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RECEIVE_SYNC_TRAIN 0x03
3097911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RECEIVE_SYNC_TRAIN_OFF 31
3098911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_RECEIVE_SYNC_TRAIN_SUPPORTED(x)        \
3099911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_RECEIVE_SYNC_TRAIN_OFF] & \
3100911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_RECEIVE_SYNC_TRAIN)
3101911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3102911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_RESERVED_LT_ADDR 0x04
3103911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_RESERVED_LT_ADDR_OFF 31
3104911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_RESERVED_LT_ADDR_SUPPORTED(x)        \
3105911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_RESERVED_LT_ADDR_OFF] & \
3106911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_RESERVED_LT_ADDR)
3107911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3108911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DELETE_RESERVED_LT_ADDR 0x05
3109911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_DELETE_RESERVED_LT_ADDR_OFF 31
3110911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_DELETE_RESERVED_LT_ADDR_SUPPORTED(x)        \
3111911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_DELETE_RESERVED_LT_ADDR_OFF] & \
3112911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_DELETE_RESERVED_LT_ADDR)
3113911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3114911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_DATA 0x06
3115911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_DATA_OFF 31
3116911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SET_CONLESS_SLAVE_BRCST_DATA_SUPPORTED(x)        \
3117911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_DATA_OFF] & \
3118911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_SET_CONLESS_SLAVE_BRCST_DATA)
3119911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3120911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SYNC_TRAIN_PARAM 0x07
3121911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SYNC_TRAIN_PARAM_OFF 31
3122911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SYNC_TRAIN_PARAM_SUPPORTED(x)        \
3123911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SYNC_TRAIN_PARAM_OFF] & \
3124911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SYNC_TRAIN_PARAM)
3125ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
3126ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta/* Supported Commands (Byte 32 bit 0) */
3127911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM 0x00
3128911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM_OFF 32
3129911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SYNC_TRAIN_PARAM_SUPPORTED(x)        \
3130911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM_OFF] & \
3131911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SYNC_TRAIN_PARAM)
3132911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3133911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_MASK 0x02
3134911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_OFF 32
3135911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_SUPPORTED(x)        \
3136911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_OFF] & \
3137911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_REMOTE_OOB_EXTENDED_DATA_REQUEST_REPLY_MASK)
3138911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3139911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_MASK 0x04
3140911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_OFF 32
3141911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_SECURE_CONNS_SUPPORT_SUPPORTED(x)        \
3142911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_OFF] & \
3143911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_SECURE_CONNS_SUPPORT_MASK)
3144911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3145911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_MASK 0x08
3146911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_OFF 32
3147911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SECURE_CONNS_SUPPORT_SUPPORTED(x)        \
3148911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_OFF] & \
3149911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SECURE_CONNS_SUPPORT_MASK)
3150911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3151911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_MASK 0x10
3152911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_OFF 32
3153911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_AUTHENT_PAYLOAD_TOUT_SUPPORTED(x)        \
3154911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_OFF] & \
3155911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_AUTHENT_PAYLOAD_TOUT_MASK)
3156911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3157911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_MASK 0x20
3158911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_OFF 32
3159911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_AUTHENT_PAYLOAD_TOUT_SUPPORTED(x)        \
3160911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_OFF] & \
3161911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_AUTHENT_PAYLOAD_TOUT_MASK)
31627fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
31637fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_MASK 0x40
3164911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_OFF 32
3165911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_READ_LOCAL_OOB_EXTENDED_DATA_SUPPORTED(x)        \
3166911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_OFF] & \
3167911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_READ_LOCAL_OOB_EXTENDED_DATA_MASK)
31687fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta
3169911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_MASK 0x80
3170911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_OFF 32
3171911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_WRITE_SECURE_CONNECTIONS_TEST_MODE_SUPPORTED(x)        \
3172911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_OFF] & \
3173911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_WRITE_SECURE_CONNECTIONS_TEST_MODE_MASK)
3174ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
31757fa4fba6f59f97df00aff07dbe8fb21b114b3c2cGanesh Ganapathi Batta/* supported LE remote control connection parameter request reply */
3176911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_MASK 0x10
3177911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_OFF 33
3178911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_RC_CONN_PARAM_UPD_RPY_SUPPORTED(x)        \
3179911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_OFF] & \
3180911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_RPY_MASK)
3181911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson
3182911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_RLE_RC_CONN_PARAM_UPD_NEG_RPY_MASK 0x20
3183911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_NEG_RPY_OFF 33
3184911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson#define HCI_LE_RC_CONN_PARAM_UPD_NEG_RPY_SUPPORTED(x)        \
3185911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson  ((x)[HCI_SUPP_COMMANDS_LE_RC_CONN_PARAM_UPD_NEG_RPY_OFF] & \
3186911d1ae03efec2d54c3b1b605589d790d1745488Myles Watson   HCI_SUPP_COMMANDS_RLE_RC_CONN_PARAM_UPD_NEG_RPY_MASK)
3187ead3cde4bac0c3e32cd31f149093f004eef8ceebGanesh Ganapathi Batta
31884b1feb60f3478aced5e106749f00f1e75e65d454Jakub Pawlowski#define HCI_LE_2M_PHY_SUPPORTED(x) (((x)[1] & 0x01))     // BIT 8 SET
31894b1feb60f3478aced5e106749f00f1e75e65d454Jakub Pawlowski#define HCI_LE_CODED_PHY_SUPPORTED(x) (((x)[1] & 0x08))  // BIT 11 SET
31904b1feb60f3478aced5e106749f00f1e75e65d454Jakub Pawlowski
31911f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski/* LE Advertising Extension related Procedurs */
31921f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski#define HCI_LE_EXTENDED_ADVERTISING_SUPPORTED(x) \
31931f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski  (((x)[1] & 0x10))  // BIT 12 SET
31941f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski#define HCI_LE_PERIODIC_ADVERTISING_SUPPORTED(x) \
31951f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski  (((x)[1] & 0x20))  // BIT 13 SET
31961f4cc6dc61ad5863c3fe31dafd364e064b1e64adJakub Pawlowski
31975738f83aeb59361a0a2eda2460113f6dc919427The Android Open Source Project#endif
3198