mirror of
https://github.com/Telecominfraproject/OpenCellular.git
synced 2025-12-29 18:11:05 +00:00
These are not used anywhere else in the EC codebase. Fix VERSION, OCCURRED, Response, & Supported BUG=None BRANCH=None TEST=make buildall passes Change-Id: I078a8b613fffac0029723cf3c8a5666e71d4a9ac Signed-off-by: Martin Roth <martinroth@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/403420 Reviewed-by: Patrick Georgi <pgeorgi@chromium.org> Reviewed-by: Myles Watson <mylesgw@chromium.org>
3157 lines
108 KiB
C
3157 lines
108 KiB
C
/* Copyright 2016 The Chromium OS Authors. All rights reserved.
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
* found in the LICENSE file.
|
|
*/
|
|
|
|
/*
|
|
* Copied from NewBlue hci_int.h with permission from Dmitry Grinberg, the
|
|
* original author.
|
|
*/
|
|
|
|
|
|
#ifndef _HCI_INT_H_
|
|
#define _HCI_INT_H_
|
|
|
|
#include "util.h"
|
|
#define HCI_DEV_NAME_LEN 248
|
|
|
|
#define HCI_INQUIRY_LENGTH_UNIT 1280 /* msec */
|
|
#define HCI_INQUIRY_LENGTH_MAX 48 /* units */
|
|
|
|
#define HCI_LAP_Unlimited_Inquiry 0x9E8B33
|
|
#define HCI_LAP_Limited_Inquiry 0x9E8B00
|
|
|
|
#define HCI_CLOCK_OFST_VALID 0x8000
|
|
|
|
#define HCI_PKT_TYP_NO_2_DH1 0x0002 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_NO_3_DH1 0x0004 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_DM1 0x0008 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_DH1 0x0010 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_NO_2_DH3 0x0100 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_NO_3_DH3 0x0200 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_DM3 0x0400 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_DH3 0x0800 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_NO_2_DH5 0x1000 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_NO_3_DH5 0x1000 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_DM5 0x4000 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_DH5 0x8000 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_DEFAULT 0xCC18
|
|
|
|
#define HCI_PKT_TYP_SCO_HV1 0x0001 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_SCO_HV2 0x0002 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_SCO_HV3 0x0004 /* BT 1.1+ */
|
|
#define HCI_PKT_TYP_SCO_EV3 0x0008 /* BT 1.2+ */
|
|
#define HCI_PKT_TYP_SCO_EV4 0x0010 /* BT 1.2+ */
|
|
#define HCI_PKT_TYP_SCO_EV5 0x0020 /* BT 1.2+ */
|
|
#define HCI_PKT_TYP_SCO_NO_2_EV3 0x0040 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_SCO_NO_3_EV3 0x0080 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_SCO_NO_2_EV5 0x0100 /* BT 2.1+ */
|
|
#define HCI_PKT_TYP_SCO_NO_3_EV5 0x0200 /* BT 2.1+ */
|
|
|
|
#define HCI_LINK_POLICY_DISABLE_ALL_LM_MODES 0x0000
|
|
#define HCI_LINK_POLICY_ENABLE_ROLESWITCH 0x0001
|
|
#define HCI_LINK_POLICY_ENABLE_HOLD_MODE 0x0002
|
|
#define HCI_LINK_POLICY_ENABLE_SNIFF_MODE 0x0004
|
|
#define HCI_LINK_POLICY_ENABLE_PARK_MODE 0x0008
|
|
|
|
#define HCI_FILTER_TYPE_CLEAR_ALL 0x00 /* no subtypes, no data */
|
|
#define HCI_FILTER_INQUIRY_RESULT 0x01 /* below subtypes */
|
|
#define HCI_FILTER_COND_TYPE_RETURN_ALL_DEVS 0x00 /* no data */
|
|
#define HCI_FILTER_COND_TYPE_SPECIFIC_DEV_CLS 0x01 /* uint24_t wanted_class, uint24_t wanted_mask (only set bits are compared to wanted_class) */
|
|
#define HCI_FILTER_COND_TYPE_SPECIFIC_ADDR 0x02 /* uint8_t mac[6] */
|
|
#define HCI_FILTER_CONNECTION_SETUP 0x02 /* below subtypes */
|
|
#define HCI_FILTER_COND_TYPE_ALLOW_CONNS_FROM_ALL_DEVS 0x00 /* uint8_t auto_accept_type: 1 - no, 2 - yes w/ no roleswitch, 3 - yes w/ roleswitch */
|
|
#define HCI_FILTER_COND_TYPE_ALLOW_CONNS_FROM_SPECIFIC_DEV_CLS 0x01 /* uint24_t wanted_class, uint24_t wanted_mask (only set bits are compared to wanted_class), auto_accept flag same as above */
|
|
#define HCI_FILTER_COND_TYPE_ALLOW_CONNS_FROM_SPECIFIC_ADDR 0x02 /* uint8_t mac[6], auto_accept flag same as above */
|
|
|
|
#define HCI_SCAN_ENABLE_INQUIRY 0x01 /* discoverable */
|
|
#define HCI_SCAN_ENABLE_PAGE 0x02 /* connectable */
|
|
|
|
#define HCI_HOLD_MODE_SUSPEND_PAGE_SCAN 0x01
|
|
#define HCI_HOLD_MODE_SUSPEND_INQUIRY_SCAN 0x02
|
|
#define HCI_HOLD_MODE_SUSPEND_PERIODIC_INQUIRIES 0x04
|
|
|
|
#define HCI_TO_HOST_FLOW_CTRL_ACL 0x01
|
|
#define HCI_TO_HOST_FLOW_CTRL_SCO 0x02
|
|
|
|
#define HCI_INQ_MODE_STD 0 /* normal mode @ BT 1.1+ */
|
|
#define HCI_INQ_MODE_RSSI 1 /* with RSSI @ BT 1.2+ */
|
|
#define HCI_INQ_MODE_EIR 2 /* with EIR @ BT 2.1+ */
|
|
|
|
#define HCI_SSP_KEY_ENTRY_STARTED 0
|
|
#define HCI_SSP_KEY_ENTRY_DIGIT_ENTERED 1
|
|
#define HCI_SSP_KEY_ENTRY_DIGIT_ERASED 2
|
|
#define HCI_SSP_KEY_ENTRY_CLEARED 3
|
|
#define HCI_SSP_KEY_ENTRY_COMPLETED 4
|
|
|
|
#define HCI_LOCATION_DOMAIN_OPTION_NONE 0x20 /* ' ' */
|
|
#define HCI_LOCATION_DOMAIN_OPTION_OUTDOORS_ONLY 0x4F /* 'O' */
|
|
#define HCI_LOCATION_DOMAIN_OPTION_INDOORS_ONLY 0x49 /* 'I' */
|
|
#define HCI_LOCATION_DOMAIN_OPTION_NON_COUNTRY_ENTITY 0x58 /* 'X' */
|
|
|
|
#define HCI_PERIOD_TYPE_DOWNLINK 0x00
|
|
#define HCI_PERIOD_TYPE_UPLINK 0x01
|
|
#define HCI_PERIOD_TYPE_BIDIRECTIONAL 0x02
|
|
#define HCI_PERIOD_TYPE_GUARD_PERIOD 0x03
|
|
|
|
#define HCI_MWS_INTERVAL_TYPE_NO_RX_NO_TX 0x00
|
|
#define HCI_MWS_INTERVAL_TYPE_TX_ALLOWED 0x01
|
|
#define HCI_MWS_INTERVAL_TYPE_RX_ALLOWED 0x02
|
|
#define HCI_MWS_INTERVAL_TYPE_TX_RX_ALLOWED 0x03
|
|
#define HCI_MWS_INTERVAL_TYPE_FRAME 0x04 /* type defined by Set External Frame Configuration command */
|
|
|
|
#define HCI_CONNLESS_FRAG_TYPE_CONT 0x00 /* continuation fragment */
|
|
#define HCI_CONNLESS_FRAG_TYPE_START 0x01 /* first fragment */
|
|
#define HCI_CONNLESS_FRAG_TYPE_END 0x02 /* last fragment */
|
|
#define HCI_CONNLESS_FRAG_TYPE_COMPLETE 0x03 /* complete fragment - no fragmentation */
|
|
|
|
#define HCI_CUR_MODE_ACTIVE 0x00
|
|
#define HCI_CUR_MODE_HOLD 0x01
|
|
#define HCI_CUR_MODE_SNIFF 0x02
|
|
#define HCI_CUR_MODE_PARK 0x03
|
|
|
|
#define HCI_SCO_LINK_TYPE_SCO 0x00
|
|
#define HCI_SCO_LINK_TYPE_ESCO 0x02
|
|
|
|
#define HCI_SCO_AIR_MODE_MULAW 0x00
|
|
#define HCI_SCO_AIR_MODE_ALAW 0x01
|
|
#define HCI_SCO_AIR_MODE_CVSD 0x02
|
|
#define HCI_SCO_AIR_MODE_TRANSPARENT 0x03
|
|
|
|
#define HCI_MCA_500_PPM 0x00
|
|
#define HCI_MCA_250_PPM 0x01
|
|
#define HCI_MCA_150_PPM 0x02
|
|
#define HCI_MCA_100_PPM 0x03
|
|
#define HCI_MCA_75_PPM 0x04
|
|
#define HCI_MCA_50_PPM 0x05
|
|
#define HCI_MCA_30_PPM 0x06
|
|
#define HCI_MCA_20_PPM 0x07
|
|
|
|
#define HCI_EDR_LINK_KEY_COMBO 0x00
|
|
#define HCI_EDR_LINK_KEY_LOCAL 0x01
|
|
#define HCI_EDR_LINK_KEY_REMOTE 0x02
|
|
#define HCI_EDR_LINK_KEY_DEBUG 0x03
|
|
#define HCI_EDR_LINK_KEY_UNAUTH_COMBO 0x04
|
|
#define HCI_EDR_LINK_KEY_AUTH_COMBO 0x05
|
|
#define HCI_EDR_LINK_KEY_CHANGED 0x06
|
|
|
|
#define HCI_VERSION_1_0_B 0 /* BT 1.0b */
|
|
#define HCI_VERSION_1_1 1 /* BT 1.1 */
|
|
#define HCI_VERSION_1_2 2 /* BT 1.2 */
|
|
#define HCI_VERSION_2_0 4 /* BT 2.0 */
|
|
#define HCI_VERSION_2_1 3 /* BT 2.1 */
|
|
#define HCI_VERSION_3_0 4 /* BT 3.0 */
|
|
#define HCI_VERSION_4_0 6 /* BT 4.0 */
|
|
#define HCI_VERSION_4_1 7 /* BT 4.1 */
|
|
|
|
#define HCI_LE_STATE_NONCON_ADV 0x0000000000000001ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_SCANNABLE_ADV 0x0000000000000002ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_CONNECTABLE_ADV 0x0000000000000004ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_DIRECT_ADV 0x0000000000000008ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_PASSIVE_SCAN 0x0000000000000010ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_ACTIVE_SCAN 0x0000000000000020ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_INITIATE 0x0000000000000040ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_SLAVE 0x0000000000000080ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_NONCON_ADV_w_PASSIVE_SCAN 0x0000000000000100ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_SCANNABLE_ADV_w_PASSIVE_SCAN 0x0000000000000200ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_CONNECTABLE_ADV_w_PASSIVE_SCAN 0x0000000000000400ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_DIRECT_ADV_w_PASSIVE_SCAN 0x0000000000000800ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_NONCON_ADV_w_ACTIVE_SCAN 0x0000000000001000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_SCANNABLE_ADV_w_ACTIVE_SCAN 0x0000000000002000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_CONNECTABLE_ADV_w_ACTIVE_SCAN 0x0000000000004000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_DIRECT_ADV_w_ACTIVE_SCAN 0x0000000000008000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_NONCON_ADV_w_INITIATING 0x0000000000010000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_SCANNABLE_ADV_w_INITIATING 0x0000000000020000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_NONCON_ADV_w_MASTER 0x0000000000040000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_SCANNABLE_ADV_w_MASTER 0x0000000000080000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_NONCON_ADV_w_SLAVE 0x0000000000100000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_SCANNABLE_ADV_w_SLAVE 0x0000000000200000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_PASSIVE_SCAN_w_INITIATING 0x0000000000400000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_ACTIVE_SCAN_w_INITIATING 0x0000000000800000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_PASSIVE_SCAN_w_MASTER 0x0000000001000000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_ACTIVE_SCAN_w_MASTER 0x0000000002000000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_PASSIVE_SCAN_w_SLAVE 0x0000000004000000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_ACTIVE_SCAN_w_SLAVE 0x0000000008000000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_INTIATING_w_MASTER 0x0000000010000000ULL /* BT 4.0+ */
|
|
#define HCI_LE_STATE_LOW_DUTY_CYCLE_DIRECT_ADV 0x0000000020000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_PASSIVE_SCAN_w_LOW_DUTY_CYCLE_DIRECT_ADV 0x0000000040000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_ACTIVE_SCAN_w_LOW_DUTY_CYCLE_DIRECT_ADV 0x0000000080000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_CONNECTABLE_ADV_w_INITIATING 0x0000000100000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_DIRECT_ADV_w_INITIATING 0x0000000200000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_LOW_DUTY_CYCLE_DIRECT_ADV_w_INITIATING 0x0000000400000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_CONNECTABLE_ADV_w_MASTER 0x0000000800000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_DIRECT_ADV_w_MASTER 0x0000001000000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_LOW_DUTY_CYCLE_DIRECT_ADV_w_MASTER 0x0000002000000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_CONNECTABLE_ADV_w_SLAVE 0x0000004000000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_DIRECT_ADV_w_SLAVE 0x0000008000000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_LOW_DUTY_CYCLE_DIRECT_ADV_w_SLAVE 0x0000010000000000ULL /* BT 4.1+ */
|
|
#define HCI_LE_STATE_INITIATING_w_SLAVE 0x0000020000000000ULL /* BT 4.1+ */
|
|
|
|
#define HCI_LMP_FTR_3_SLOT_PACKETS 0x0000000000000001ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_5_SLOT_PACKETS 0x0000000000000002ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_ENCRYPTION 0x0000000000000004ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_SLOT_OFFSET 0x0000000000000008ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_TIMING_ACCURACY 0x0000000000000010ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_SWITCH 0x0000000000000020ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_HOLD_MODE 0x0000000000000040ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_SNIFF_MODE 0x0000000000000080ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_PARK_MODE 0x0000000000000100ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_RSSI 0x0000000000000200ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_CHANNEL_QUALITY_DRIVEN_DATA_RATE 0x0000000000000400ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_SCO_LINKS 0x0000000000000800ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_HV2_PACKETS 0x0000000000001000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_HV3_PACKETS 0x0000000000002000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_MU_LAW 0x0000000000004000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_A_LAW 0x0000000000008000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_CVSD 0x0000000000010000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_PAGING_SCHEME 0x0000000000020000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_POWER_CONTROL 0x0000000000040000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_TRANSPARENT_SCO_DATA 0x0000000000080000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_FLOW_CONTROL_LAG_B0 0x0000000000100000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_FLOW_CONTROL_LAG_B1 0x0000000000200000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_FLOW_CONTROL_LAG_B2 0x0000000000400000ULL /* BT 1.1+ */
|
|
#define HCI_LMP_FTR_BROADCAST_ENCRYPTION 0x0000000000800000ULL /* BT 1.2+ */
|
|
#define HCI_LMP_FTR_ACL_2MBPS 0x0000000002000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_ACL_3MBPS 0x0000000004000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_ENHANCED_INQUIRY_SCAN 0x0000000008000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_INTERLACED_INQUIRY_SCAN 0x0000000010000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_INTERLACED_PAGE_SCAN 0x0000000020000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_RSSI_WITH_INQUIRY_RESULTS 0x0000000040000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_EXTENDED_SCO_LINK 0x0000000080000000ULL /* BT 2.1+ */ /* EV3 packets */
|
|
#define HCI_LMP_FTR_EV4_PACKETS 0x0000000100000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_EV5_PACKETS 0x0000000200000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_AFH_CAPABLE_SLAVE 0x0000000800000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_AFH_CLASSIFICATION_SLAVE 0x0000001000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_BR_EDR_NOT_SUPPORTED 0x0000002000000000ULL /* BT 4.0+ */
|
|
#define HCI_LMP_FTR_LE_SUPPORTED_CONTROLLER 0x0000004000000000ULL /* BT 4.0+ */
|
|
#define HCI_LMP_FTR_3_SLOT_ACL_PACKETS 0x0000008000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_5_SLOT_ACL_PACKETS 0x0000010000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_SNIFF_SUBRATING 0x0000020000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_PAUSE_ENCRYPTION 0x0000040000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_AFH_CAPABLE_MASTER 0x0000080000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_AFH_CLASSIFICATION_MASTER 0x0000100000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_ESCO_2MBPS 0x0000200000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_ESCO_3MBPS 0x0000400000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_3_SLOT_ESCO 0x0000800000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_EXTENDED_INQUIRY_RESPONSE 0x0001000000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_SSP 0x0008000000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_ENCAPSULATED_PDU 0x0010000000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_ERRONEOUS_DATA_REPORTING 0x0020000000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_NON_FLUSHABLE_PACKET_BOUNDARY_FLAG 0x0040000000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_LINK_SUPERVISION_TIMEOUT_CHANGED_EVENT 0x0100000000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_INQUIRY_RESPONSE_TX_POWER_LEVEL 0x0200000000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_EXTENDED_FEATURES 0x8000000000000000ULL /* BT 2.1+ */
|
|
#define HCI_LMP_FTR_ENHANCED_POWER_CONTROL 0x0400000000000000ULL /* BT 3.0+ */
|
|
#define HCI_LMP_FTR_SIMUL_LE_EDR_CAPABLE_CONTROLLER 0x0002000000000000ULL /* BT 4.0+ */
|
|
|
|
#define HCI_LMP_EXT_FTR_P1_SSP_HOST_SUPPORT 0x0000000000000001ULL /* BT 2.1+ */
|
|
#define HCI_LMP_EXT_FTR_P1_LE_HOST_SUPPORT 0x0000000000000002ULL /* BT 4.0+ */
|
|
#define HCI_LMP_EXT_FTR_P1_SIMUL_LE_EDR_HOST_SUPPORT 0x0000000000000004ULL /* BT 4.0+ */
|
|
#define HCI_LMP_EXT_FTR_P1_SECURE_CONNECTIONS_HOST_SUPPORT 0x0000000000000008ULL /* BT 4.1+ */
|
|
|
|
#define HCI_LMP_EXT_FTR_P2_CONNLESS_SLAVE_BROADCAST_MASTER 0x0000000000000001ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_CONNLESS_SLAVE_BROADCAST_SLAVE 0x0000000000000002ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_SYNCHRONIZATION_TRAIN 0x0000000000000004ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_SYNCHRONIZATION_SCAN 0x0000000000000008ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_INQUIRY_RESPONSE_NOTIFICATION_EVT 0x0000000000000010ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_GENERALIZED_INTERLACED_SCAN 0x0000000000000020ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_COARSE_CLOCK_ADJUSTMENT 0x0000000000000040ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_SECURE_CONNECTIONS_CAPABLE_CONTROLLER 0x0000000000000100ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_PING 0x0000000000000200ULL /* BT 4.1+ */
|
|
#define HCI_LMP_EXT_FTR_P2_TRAIN_NUDGING 0x0000000000000800ULL /* BT 4.1+ */
|
|
|
|
#define HCI_EVENT_INQUIRY_COMPLETE 0x0000000000000001ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_INQUIRY_RESULT 0x0000000000000002ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_CONN_COMPLETE 0x0000000000000004ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_CONN_REQUEST 0x0000000000000008ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_DISCONNECTION_COMPLETE 0x0000000000000010ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_AUTH_COMPLETE 0x0000000000000020ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_REMOTE_NAME_REQUEST_COMPLETE 0x0000000000000040ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_ENCR_CHANGE 0x0000000000000080ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_CHANGE_CONN_LINK_KEY_COMPLETE 0x0000000000000100ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_MASTER_LINK_KEY_COMPLETE 0x0000000000000200ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_READ_REMOTE_SUPPORTED_FEATURES_COMPLETE 0x0000000000000400ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_READ_REMOTE_VERSION_INFO_COMPLETE 0x0000000000000800ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_QOS_SETUP_COMPLETE 0x0000000000001000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_HARDWARE_ERROR 0x0000000000008000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_FLUSH_OCCURRED 0x0000000000010000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_ROLE_CHANGE 0x0000000000020000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_MODE_CHANGE 0x0000000000080000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_RETURN_LINK_KEYS 0x0000000000100000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_PIN_CODE_REQUEST 0x0000000000200000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_LINK_KEY_REQUEST 0x0000000000400000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_LINK_KEY_NOTIFICATION 0x0000000000800000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_LOOPBACK_COMMAND 0x0000000001000000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_DATA_BUFFER_OVERFLOW 0x0000000002000000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_MAX_SLOTS_CHANGE 0x0000000004000000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_READ_CLOCK_OFFSET_COMPLETE 0x0000000008000000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_CONN_PACKET_TYPE_CHANGED 0x0000000010000000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_QOS_VIOLATION 0x0000000020000000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_PAGE_SCAN_MODE_CHANGE 0x0000000040000000ULL /* BT 1.1+, obsolete @ BT1.2+ */
|
|
#define HCI_EVENT_PAGE_SCAN_REPETITION_MODE_CHANGE 0x0000000080000000ULL /* BT 1.1+ */
|
|
#define HCI_EVENT_ALL_BT_1_1 0x00000000FFFFFFFFULL /* also the default for BT 1.1 */
|
|
#define HCI_EVENT_FLOW_SPEC_COMPLETE 0x0000000100000000ULL /* BT 1.2+ */
|
|
#define HCI_EVENT_INQUIRY_RESULT_WITH_RSSI 0x0000000200000000ULL /* BT 1.2+ */
|
|
#define HCI_EVENT_READ_REMOTE_EXTENDED_FEATURES_COMPLETE 0x0000000400000000ULL /* BT 1.2+ */
|
|
#define HCI_EVENT_SYNC_CONN_COMPLETE 0x0000080000000000ULL /* BT 1.2+ */
|
|
#define HCI_EVENT_SYNC_CONN_CHANGED 0x0000100000000000ULL /* BT 1.2+ */
|
|
#define HCI_EVENT_ALL_BT_1_2 0x00001FFFFFFFFFFFULL /* also the default for BT 1.2+ */
|
|
#define HCI_EVENT_SNIFF_SUBRATING 0x0000200000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_EXTENDED_INQUIRY_RESULT 0x0000400000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_ENCR_KEY_REFRESH_COMPLETE 0x0000800000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_IO_CAPABILITY_REQUEST 0x0001000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_IO_CAPABILITY_REQUEST_REPLY 0x0002000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_USER_CONFIRMATION_REQUEST 0x0004000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_USER_PASSKEY_REQUEST 0x0008000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_REMOTE_OOB_DATA_REQUEST 0x0010000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_SIMPLE_PAIRING_COMPLETE 0x0020000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_LINK_SUPERVISION_TIMOUT_CHANGED 0x0080000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_ENHANCED_FLUSH_COMPLETE 0x0100000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_USER_PASSKEY_NOTIFICATION 0x0400000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_KEYPRESS_NOTIFICATION 0x0800000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_REMOTE_HOST_SUPPORTED_FEATURES 0x1000000000000000ULL /* BT 2.1+ */
|
|
#define HCI_EVENT_ALL_BT_2_1 0x1DBFFFFFFFFFFFFFULL
|
|
#define HCI_EVENT_ALL_BT_3_0 0x1DBFFFFFFFFFFFFFULL
|
|
#define HCI_EVENT_LE_META 0x2000000000000000ULL /* BT 4.0+ */
|
|
#define HCI_EVENT_ALL_BT_4_0 0x3DBFFFFFFFFFFFFFULL
|
|
#define HCI_EVENT_ALL_BT_4_1 0x3DBFFFFFFFFFFFFFULL
|
|
|
|
#define HCI_EVENT_P2_PHYS_LINK_COMPLETE 0x0000000000000001ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_CHANNEL_SELECTED 0x0000000000000002ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_DISCONNECTION_PHYSICAL_LINK 0x0000000000000004ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_PHYSICAL_LINK_LOSS_EARLY_WARNING 0x0000000000000008ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_PHYSICAL_LINK_RECOVERY 0x0000000000000010ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_LOGICAL_LINK_COMPLETE 0x0000000000000020ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_DISCONNECTION_LOGICAL_LINK_COMPLETE 0x0000000000000040ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_FLOW_SPEC_MODIFY_COMPLETE 0x0000000000000080ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_NUMBER_OF_COMPLETED_DATA_BLOCKS 0x0000000000000100ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_AMP_START_TEST 0x0000000000000200ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_AMP_TEST_END 0x0000000000000400ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_AMP_RECEIVER_REPORT 0x0000000000000800ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_SHORT_RANGE_MODE_CHANGE_COMPLETE 0x0000000000001000ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_AMP_STATUS_CHANGE 0x0000000000002000ULL /* BT 3.0+ */
|
|
#define HCI_EVENT_P2_ALL_BT_3_0 0x0000000000003FFFULL
|
|
#define HCI_EVENT_P2_ALL_BT_4_0 0x0000000000003FFFULL
|
|
#define HCI_EVENT_P2_TRIGGERED_CLOCK_CAPTURE 0x0000000000004000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_SYNCH_TRAIN_COMPLETE 0x0000000000008000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_SYNCH_TRAIN_RECEIVED 0x0000000000010000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_CONNLESS_SLAVE_BROADCAST_RXED 0x0000000000020000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_CONNLESS_SLAVE_BROADCAST_TIMEOUT 0x0000000000040000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_TRUNCATED_PAGE_COMPLETE 0x0000000000080000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_SLAVE_PAGE_RESPONSE_TIMEOUT 0x0000000000100000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_CONNLESS_SLAVE_BROADCAST_CHANNEL_MAP_CHANGE 0x0000000000200000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_INQUIRY_RESPONSE_NOTIFICATION 0x0000000000400000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_AUTHENTICATED_PAYLOAD_TIMEOUT_EXPIRED 0x0000000000800000ULL /* BT 4.1+ */
|
|
#define HCI_EVENT_P2_ALL_BT_4_1 0x0000000000FFFFFFULL
|
|
|
|
#define HCI_LE_EVENT_CONN_COMPLETE 0x0000000000000001ULL /* BT 4.0+ */
|
|
#define HCI_LE_EVENT_ADV_REPORT 0x0000000000000002ULL /* BT 4.0+ */
|
|
#define HCI_LE_EVENT_CONN_UPDATE_COMPLETE 0x0000000000000004ULL /* BT 4.0+ */
|
|
#define HCI_LE_EVENT_READ_REMOTE_USED_FEATURES_CMPLETE 0x0000000000000008ULL /* BT 4.0+ */
|
|
#define HCI_LE_EVENT_LTK_REQUEST 0x0000000000000010ULL /* BT 4.0+ */
|
|
#define HCI_LE_EVENT_REMOTE_CONNECTION_PARAMETER_REQUEST 0x0000000000000020ULL /* BT 4.1+ */
|
|
|
|
#define HCI_LE_FTR_ENCRYPTION 0x0000000000000001ULL /* BT 4.0+ */
|
|
#define HCI_LE_FTR_CONNECTION_PARAMETERS_REQUEST 0x0000000000000002ULL /* BT 4.1+ */
|
|
#define HCI_LE_FTR_EXTENDED_REJECT_INDICATION 0x0000000000000004ULL /* BT 4.1+ */
|
|
#define HCI_LE_FTR_SLAVE_INITIATED_FEATURES_EXCHANGE 0x0000000000000008ULL /* BT 4.1+ */
|
|
#define HCI_LE_FTR_LE_PING 0x0000000000000010ULL /* BT 4.1+ */
|
|
|
|
|
|
|
|
|
|
|
|
#define HCI_OGF_Link_Control 1
|
|
|
|
|
|
/* ==== BT 1.1 ==== */
|
|
|
|
#define HCI_CMD_Inquiry 0x0001 /* status */
|
|
struct hciInquiry {
|
|
uint8_t lap[3];
|
|
uint8_t inqLen;
|
|
uint8_t numResp;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Inquiry_Cancel 0x0002 /* complete */
|
|
struct hciCmplInquiryCancel {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Periodic_Inquiry_Mode 0x0003 /* complete */
|
|
struct hciPeriodicInquiryMode {
|
|
uint16_t maxPeriodLen;
|
|
uint16_t minPeriodLen;
|
|
uint8_t lap[3];
|
|
uint8_t inqLen;
|
|
uint8_t numResp;
|
|
} __packed;
|
|
struct hciCmplPeriodicInquiryMode {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
|
|
#define HCI_CMD_Exit_Periodic_Inquiry_Mode 0x0004 /* complete */
|
|
|
|
#define HCI_CMD_Create_Connection 0x0005 /* status */
|
|
struct hciCreateConnection {
|
|
uint8_t mac[6];
|
|
uint16_t allowedPackets; /* HCI_PKT_TYP_* */
|
|
uint8_t PSRM;
|
|
uint16_t clockOffset; /* possibly | HCI_CLOCK_OFST_VALID */
|
|
uint8_t allowRoleSwitch;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Disconnect 0x0006 /* status */
|
|
struct hciDisconnect {
|
|
uint16_t conn;
|
|
uint8_t reason;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Add_SCO_Connection 0x0007 /* status */ /* deprecated in BT 1.2+ */
|
|
struct hciAddScoConnection {
|
|
uint16_t conn;
|
|
uint16_t packetTypes; /* HCI_PKT_TYP_SCO_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Create_Connection_Cancel 0x0008 /* complete */
|
|
struct hciCreateConnectionCancel {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplCreateConnectionCancel {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Accept_Connection_Request 0x0009 /* status */
|
|
struct hciAcceptConnection {
|
|
uint8_t mac[6];
|
|
uint8_t remainSlave;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Reject_Connection_Request 0x000A /* status */
|
|
struct hciRejectConnection {
|
|
uint8_t mac[6];
|
|
uint8_t reason;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Link_Key_Request_Reply 0x000B /* complete */
|
|
struct hciLinkKeyRequestReply {
|
|
uint8_t mac[6];
|
|
uint8_t key[16];
|
|
} __packed;
|
|
struct hciCmplLinkKeyRequestReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Link_Key_Request_Negative_Reply 0x000C /* complete */
|
|
struct hciLinkKeyRequestNegativeReply {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplLinkKeyRequestNegativeReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_PIN_Code_Request_Reply 0x000D /* complete */
|
|
struct hciPinCodeRequestReply {
|
|
uint8_t mac[6];
|
|
uint8_t pinCodeLen;
|
|
uint8_t pinCode[16];
|
|
} __packed;
|
|
struct hciCmplPinCodeRequestReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_PIN_Code_Request_Negative_Reply 0x000E /* complete */
|
|
struct hciPinCodeRequestNegativeReply {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplPinCodeRequestNegativeReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Change_Connection_Packet_Type 0x000F /* status */
|
|
struct hciChangeConnectionPacketType {
|
|
uint16_t conn;
|
|
uint16_t allowedPackets; /* HCI_PKT_TYP_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Authentication_Requested 0x0011 /* status */
|
|
struct hciAuthRequested {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Connection_Encryption 0x0013 /* status */
|
|
struct hciSetConnectionEncryption {
|
|
uint16_t conn;
|
|
uint8_t encrOn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Change_Connection_Link_Key 0x0015 /* status */
|
|
struct hciChangeConnLinkKey {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Master_Link_Key 0x0017 /* status */
|
|
struct hciMasterLinkKey {
|
|
uint8_t useTempKey;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Remote_Name_Request 0x0019 /* status */
|
|
struct hciRemoteNameRequest {
|
|
uint8_t mac[6];
|
|
uint8_t PSRM;
|
|
uint8_t PSM; /* deprecated, should be zero for BT 1.2+ */
|
|
uint16_t clockOffset; /* possibly | HCI_CLOCK_OFST_VALID */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Remote_Name_Request_Cancel 0x001A /* complete */
|
|
struct hciRemoteNameRequestCancel {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplRemoteNameRequestCancel {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Remote_Supported_Features 0x001B /* status */
|
|
struct hciReadRemoteSupportedFeatures {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Remote_Version_Information 0x001D /* status */
|
|
struct hciReadRemoteVersionInfo {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Clock_Offset 0x001F /* status */
|
|
struct hciReadClockOffset {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 1.2 ==== */
|
|
|
|
#define HCI_CMD_Read_Remote_Extended_Features 0x001C /* status */
|
|
struct hciReadRemoteExtendedFeatures {
|
|
uint16_t conn;
|
|
uint8_t page; /* BT1.2 max: 0 */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Lmp_Handle 0x0020 /* complete */
|
|
struct hciReadLmpHandle {
|
|
uint16_t handle;
|
|
} __packed;
|
|
struct hciCmplReadLmpHandle {
|
|
uint8_t status;
|
|
uint16_t handle;
|
|
uint8_t lmpHandle;
|
|
uint32_t reserved;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Setup_Synchronous_Connection 0x0028 /* status */
|
|
struct hciSetupSyncConn {
|
|
uint16_t conn;
|
|
uint32_t txBandwidth;
|
|
uint32_t rxBandwidth;
|
|
uint16_t maxLatency;
|
|
uint16_t voiceSetting;
|
|
uint8_t retransmissionEffort;
|
|
uint16_t allowedPacketsSco; /* HCI_PKT_TYP_SCO_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Accept_Synchronous_Connection_Request 0x0029 /* status */
|
|
struct hciAcceptSyncConn {
|
|
uint8_t mac[6];
|
|
uint32_t txBandwidth;
|
|
uint32_t rxBandwidth;
|
|
uint16_t maxLatency;
|
|
uint16_t contentFormat;
|
|
uint8_t retransmissionEffort;
|
|
uint16_t allowedPacketsSco; /* HCI_PKT_TYP_SCO_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Reject_Synchronous_Connection_Request 0x002A /* status */
|
|
struct hciRejectSyncConn {
|
|
uint8_t mac[6];
|
|
uint8_t reason;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BR 2.1 ==== */
|
|
|
|
#define HCI_CMD_IO_Capability_Request_Reply 0x002B /* complete */
|
|
struct hciIoCapabilityRequestReply {
|
|
uint8_t mac[6];
|
|
uint8_t cap; /* HCI_DISPLAY_CAP_* */
|
|
uint8_t oobPresent;
|
|
uint8_t authReqments; /* HCI_AUTH_REQMENT_* */
|
|
} __packed;
|
|
struct hciCmplIoCapabilityRequestReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_User_Confirmation_Request_Reply 0x002C /* complete */
|
|
struct hciUserConfRequestReply {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplUserConfRequestReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_User_Confirmation_Request_Negative_Reply 0x002D /* complete */
|
|
struct hciUserConfRequestNegativeReply {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplUserConfRequestNegativeReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_User_Passkey_Request_Reply 0x002E /* complete */
|
|
struct hciUserPasskeyRequestReply {
|
|
uint8_t mac[6];
|
|
uint32_t num;
|
|
} __packed;
|
|
struct hciCmplUserPasskeyRequestReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_User_Passkey_Request_Negative_Reply 0x002F /* complete */
|
|
struct hciUserPasskeyRequestNegativeReply {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplUserPasskeyRequestNegativeReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Remote_OOB_Data_Request_Reply 0x0030 /* complete */
|
|
struct hciRemoteOobDataRequestReply {
|
|
uint8_t mac[6];
|
|
uint8_t C[16];
|
|
uint8_t R[16];
|
|
} __packed;
|
|
struct hciCmplRemoteOobDataRequestReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Remote_OOB_Data_Request_Negative_Reply 0x0033 /* complete */
|
|
struct hciRemoteOobDataRequestNegativeReply {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplRemoteOobDataRequestNegativeReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_IO_Capability_Request_Negative_Reply 0x0034 /* complete */
|
|
struct hciIoCapabilityRequestNegativeReply {
|
|
uint8_t mac[6];
|
|
uint8_t reason;
|
|
} __packed;
|
|
struct hciCmplIoCapabilityRequestNegativeReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 3.0 ==== */
|
|
|
|
#define HCI_CMD_Create_Physical_link 0x0035 /* status */
|
|
struct hciCreatePhysicalLink {
|
|
uint8_t physLinkHandle;
|
|
uint8_t dedicatedAmpKeyLength;
|
|
uint8_t dedicatedAmpKeyType;
|
|
uint8_t dedicatedAmpKey;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Accept_Physical_link 0x0036 /* status */
|
|
struct hciAcceptPhysicalLink {
|
|
uint8_t physLinkHandle;
|
|
uint8_t dedicatedAmpKeyLength;
|
|
uint8_t dedicatedAmpKeyType;
|
|
uint8_t dedicatedAmpKey;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Disconnect_Physical_link 0x0037 /* status */
|
|
struct hciDisconnectPhysicalLink {
|
|
uint8_t physLinkHandle;
|
|
uint8_t reason;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Create_Logical_link 0x0038 /* status */
|
|
struct hciCreateLogicalLink {
|
|
uint8_t physLinkHandle;
|
|
uint8_t txFlowSpec[16];
|
|
uint8_t rxFlowSpec[16];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Accept_Logical_Link 0x0039 /* status */
|
|
struct hciAcceptLogicalLink {
|
|
uint8_t physLinkHandle;
|
|
uint8_t txFlowSpec[16];
|
|
uint8_t rxFlowSpec[16];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Disconnect_Logical_link 0x003A /* status */
|
|
struct hciDisconnectLogicalLink {
|
|
uint8_t physLinkHandle;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Logical_Link_Cancel 0x003B /* complete */
|
|
struct hciLogicalLinkCancel {
|
|
uint8_t physLinkHandle;
|
|
uint8_t txFlowSpecID;
|
|
} __packed;
|
|
struct hciCmplLogicalLinkCancel {
|
|
uint8_t status;
|
|
uint8_t physLinkHandle;
|
|
uint8_t txFlowSpecID;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Flow_Spec_Modify 0x003C /* status */
|
|
struct hciFlowSpecModify {
|
|
uint16_t handle;
|
|
uint8_t txFlowSpec[16];
|
|
uint8_t rxFlowSpec[16];
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 4.1 ==== */
|
|
|
|
#define HCI_CMD_Enhanced_Setup_Synchronous_Connection 0x003D /* status */
|
|
struct hciEnhSetupSyncConn {
|
|
uint16_t conn;
|
|
uint32_t txBandwidth;
|
|
uint32_t rxBandwidth;
|
|
uint8_t txCodingFormat[5];
|
|
uint8_t rxCodingFormat[5];
|
|
uint16_t txCodecFrameSize;
|
|
uint16_t rxCodecFrameSize;
|
|
uint32_t inputBandwidth;
|
|
uint32_t outputBandwidth;
|
|
uint8_t inputCodingFormat[5];
|
|
uint8_t outputCodingFormat[5];
|
|
uint16_t inputCodedDataSize;
|
|
uint16_t outputCodedDataSize;
|
|
uint8_t inputPcmDataFormat;
|
|
uint8_t outputPcmDataFormat;
|
|
uint8_t inputPcmSamplePayloadMsbPosition;
|
|
uint8_t outputPcmSamplePayloadMsbPosition;
|
|
uint8_t inputDataPath;
|
|
uint8_t outputDataPath;
|
|
uint8_t inputTransportUnitSize;
|
|
uint8_t outputTransportUnitSize;
|
|
uint16_t maxLatency;
|
|
uint16_t allowedPacketsSco; /* HCI_PKT_TYP_SCO_* */
|
|
uint8_t retransmissionEffort;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Enhanced_Accept_Synchronous_Connection 0x003E /* status */
|
|
struct hciEnhAcceptSyncConn {
|
|
uint8_t mac[6];
|
|
uint32_t txBandwidth;
|
|
uint32_t rxBandwidth;
|
|
uint8_t txCodingFormat[5];
|
|
uint8_t rxCodingFormat[5];
|
|
uint16_t txCodecFrameSize;
|
|
uint16_t rxCodecFrameSize;
|
|
uint32_t inputBandwidth;
|
|
uint32_t outputBandwidth;
|
|
uint8_t inputCodingFormat[5];
|
|
uint8_t outputCodingFormat[5];
|
|
uint16_t inputCodedDataSize;
|
|
uint16_t outputCodedDataSize;
|
|
uint8_t inputPcmDataFormat;
|
|
uint8_t outputPcmDataFormat;
|
|
uint8_t inputPcmSamplePayloadMsbPosition;
|
|
uint8_t outputPcmSamplePayloadMsbPosition;
|
|
uint8_t inputDataPath;
|
|
uint8_t outputDataPath;
|
|
uint8_t inputTransportUnitSize;
|
|
uint8_t outputTransportUnitSize;
|
|
uint16_t maxLatency;
|
|
uint16_t allowedPacketsSco; /* HCI_PKT_TYP_SCO_* */
|
|
uint8_t retransmissionEffort;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Truncated_Page 0x003F /* status */
|
|
struct hciTruncatedPage {
|
|
uint8_t mac[6];
|
|
uint8_t PSRM;
|
|
uint16_t clockOffset; /* possibly | HCI_CLOCK_OFST_VALID */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Truncated_Page_Cancel 0x0040 /* complete */
|
|
struct hciTruncatedPageCancel {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplTruncatedPageCancel {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Connectionless_Slave_Broadcast 0x0041 /* complete */
|
|
struct hciSetConnectionlessSlaveBroadcast {
|
|
uint8_t enabled;
|
|
uint8_t ltAddr; /* 1..7 */
|
|
uint8_t lpoAllowed; /* can sleep? */
|
|
uint16_t allowedPackets; /* HCI_PKT_TYP_* */
|
|
uint16_t intervalMin;
|
|
uint16_t intervalMax;
|
|
uint16_t supervisionTimeout;
|
|
} __packed;
|
|
struct hciCmplSetConnectionlessSlaveBroadcast {
|
|
uint8_t status;
|
|
uint8_t ltAddr; /* 1..7 */
|
|
uint16_t interval;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Connectionless_Slave_Broadcast_Receive 0x0042 /* complete */
|
|
struct hciSetConnectionlessSlaveBroadcastReceive {
|
|
uint8_t enabled;
|
|
uint8_t mac[6]; /* add rof tranmitter */
|
|
uint8_t ltAddr; /* 1..7 */
|
|
uint16_t interval;
|
|
uint32_t clockOffset; /* lower 28 bits used */
|
|
uint32_t nextConnectionlessSlaveBroadcastClock; /* lower 28 bits used */
|
|
uint16_t supervisionTimeout;
|
|
uint8_t remoteTimingAccuracy;
|
|
uint8_t skip;
|
|
uint16_t allowedPackets; /* HCI_PKT_TYP_* */
|
|
uint8_t afhChannelMap[10];
|
|
} __packed;
|
|
struct hciCmplSetConnectionlessSlaveBroadcastReceive {
|
|
uint8_t status;
|
|
uint8_t mac[6]; /* add rof tranmitter */
|
|
uint8_t ltAddr; /* 1..7 */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Start_Synchronisation_Train 0x0043 /* status */
|
|
|
|
#define HCI_CMD_Receive_Synchronisation_Train 0x0044 /* status */
|
|
struct hciReceiveSyncTrain {
|
|
uint8_t mac[6];
|
|
uint16_t syncScanTimeout;
|
|
uint16_t syncScanWindow;
|
|
uint16_t syncScanInterval;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Remote_OOB_Extended_Data_Request_Reply 0x0045 /* complete */
|
|
struct hciRemoteOobExtendedDataRequestReply {
|
|
uint8_t mac[6];
|
|
uint8_t C_192[16];
|
|
uint8_t R_192[16];
|
|
uint8_t C_256[16];
|
|
uint8_t R_256[16];
|
|
} __packed;
|
|
struct hciCmplRemoteOobExtendedDataRequestReply {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
|
|
|
|
|
|
|
|
#define HCI_OGF_Link_Policy 2
|
|
|
|
|
|
/* ==== BT 1.1 ==== */
|
|
|
|
#define HCI_CMD_Hold_Mode 0x0001 /* status */
|
|
struct hciHoldMode {
|
|
uint16_t conn;
|
|
uint16_t holdModeMaxInt;
|
|
uint16_t holdModeMinInt;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Sniff_Mode 0x0003 /* status */
|
|
struct hciSniffMode {
|
|
uint16_t conn;
|
|
uint16_t sniffMaxInt;
|
|
uint16_t sniffMinInt;
|
|
uint16_t sniffAttempt;
|
|
uint16_t sniffTimeout;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Exit_Sniff_Mode 0x0004 /* status */
|
|
struct hciExitSniffMode {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Park_State 0x0005 /* status */
|
|
struct hciParkState {
|
|
uint16_t conn;
|
|
uint16_t beaconMaxInt;
|
|
uint16_t beaconMinInt;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Exit_Park_State 0x0006 /* status */
|
|
struct hciExitParkState {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_QoS_Setup 0x0007 /* status */
|
|
struct hisQosSetup {
|
|
uint16_t conn;
|
|
uint8_t flags;
|
|
uint8_t serviceType;
|
|
uint32_t tokenRate;
|
|
uint32_t peakBandwidth;
|
|
uint32_t latency;
|
|
uint32_t delayVariation;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Role_Discovery 0x0009 /* complete */
|
|
struct hciRoleDiscovery {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplRoleDiscovery {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Switch_Role 0x000B /* status */
|
|
struct hciSwitchRole {
|
|
uint8_t mac[6];
|
|
uint8_t becomeSlave;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Link_Policy_Settings 0x000C /* complete */
|
|
struct hciReadLinkPolicySettings {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadLinkPolicySettings {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t policy; /* HCI_LINK_POLICY_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Link_Policy_Settings 0x000D /* complete */
|
|
struct hciWriteLinkPolicySettings {
|
|
uint16_t conn;
|
|
uint16_t policy; /* HCI_LINK_POLICY_* */
|
|
} __packed;
|
|
struct hciCmplWriteLinkPolicySettings {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 1.2 ==== */
|
|
|
|
#define HCI_CMD_Read_Default_Link_Policy_Settings 0x000E /* complete */
|
|
struct hciCmplReadDefaultLinkPolicySettings {
|
|
uint8_t status;
|
|
uint16_t policy; /* HCI_LINK_POLICY_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Default_Link_Policy_Settings 0x000F /* complete */
|
|
struct hciWriteDefaultLinkPolicySettings {
|
|
uint16_t policy; /* HCI_LINK_POLICY_* */
|
|
} __packed;
|
|
struct hciCmplWriteDefaultLinkPolicySettings {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Flow_Specification 0x0010 /* status */
|
|
struct hisFlowSpecification {
|
|
uint16_t conn;
|
|
uint8_t flags;
|
|
uint8_t flowDirection;
|
|
uint8_t serviceType;
|
|
uint32_t tokenRate;
|
|
uint32_t tockenBucketSize;
|
|
uint32_t peakBandwidth;
|
|
uint32_t accessLatency;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 2.1 ==== */
|
|
|
|
#define HCI_CMD_Sniff_Subrating 0x0011 /* complete */
|
|
struct hciSniffSubrating {
|
|
uint16_t conn;
|
|
uint16_t maxLatency;
|
|
uint16_t minRemoteTimeout;
|
|
uint16_t minLocalTimeout;
|
|
} __packed;
|
|
struct hciCmplSniffSubrating {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
|
|
|
|
|
|
|
|
#define HCI_OGF_Controller_and_Baseband 3
|
|
|
|
|
|
/* ==== BT 1.1 ==== */
|
|
|
|
#define HCI_CMD_Set_Event_Mask 0x0001 /* complete */
|
|
struct hciSetEventMask {
|
|
uint64_t mask; /* bitmask of HCI_EVENT_* */
|
|
} __packed;
|
|
struct hciCmplSetEventMask {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Reset 0x0003 /* complete */
|
|
struct hciCmplReset {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Event_Filter 0x0005 /* complete */
|
|
struct hciSetEventFilter {
|
|
uint8_t filterType; /* HCI_FILTER_TYPE_* */
|
|
/* more things are optional here */
|
|
} __packed;
|
|
struct hciCmplSetEventFiler {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Flush 0x0008 /* complete */
|
|
struct hciFlush {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplFlush {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_PIN_Type 0x0009 /* complete */
|
|
struct hciCmplReadPinType {
|
|
uint8_t status;
|
|
uint8_t isFixed;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_PIN_Type 0x000A /* complete */
|
|
struct hciWritePinType {
|
|
uint8_t isFixed;
|
|
} __packed;
|
|
struct hciCmplWritePinType {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Create_New_Unit_Key 0x000B /* complete */
|
|
struct hciCmplCreateNewUnitKey {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Stored_Link_Key 0x000D /* complete */
|
|
struct hciReadStoredLinkKey {
|
|
uint8_t mac[6];
|
|
uint8_t readAll;
|
|
} __packed;
|
|
struct hciCmplReadStoredLinkKey {
|
|
uint8_t status;
|
|
uint16_t maxNumKeys;
|
|
uint16_t numKeysRead;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Stored_Link_Key 0x0011 /* complete */
|
|
struct hciWriteStoredLinkKeyItem {
|
|
uint8_t mac[6];
|
|
uint8_t key[16];
|
|
} __packed;
|
|
struct hciWriteStoredLinkKey {
|
|
uint8_t numKeys;
|
|
struct hciWriteStoredLinkKeyItem items[];
|
|
} __packed;
|
|
struct hciCmplWriteStoredLinkKey {
|
|
uint8_t status;
|
|
uint8_t numKeysWritten;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Delete_Stored_Link_Key 0x0012 /* complete */
|
|
struct hciDeleteStoredLinkKey {
|
|
uint8_t mac[6];
|
|
uint8_t deleteAll;
|
|
} __packed;
|
|
struct hciCmplDeleteStoredLinkKey {
|
|
uint8_t status;
|
|
uint8_t numKeysDeleted;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Local_Name 0x0013 /* complete */
|
|
struct hciWriteLocalName {
|
|
char name[HCI_DEV_NAME_LEN];
|
|
} __packed;
|
|
struct hciCmplWriteLocalName {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Local_Name 0x0014 /* complete */
|
|
struct hciCmplReadLocalName {
|
|
uint8_t status;
|
|
char name[HCI_DEV_NAME_LEN];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Connection_Accept_Timeout 0x0015 /* complete */
|
|
struct hciCmplReadConnAcceptTimeout {
|
|
uint8_t status;
|
|
uint16_t timeout; /* in units of 0.625ms 1..0xB540 */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Connection_Accept_Timeout 0x0016 /* complete */
|
|
struct hciWriteConnAcceptTimeout {
|
|
uint16_t timeout; /* in units of 0.625ms 1..0xB540 */
|
|
} __packed;
|
|
struct hciCmplWriteConnAcceptTimeout {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Page_Timeout 0x0017 /* complete */
|
|
struct hciCmplReadPageTimeout {
|
|
uint8_t status;
|
|
uint16_t timeout;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Page_Timeout 0x0018 /* complete */
|
|
struct hciWritePageTimeout {
|
|
uint16_t timeout;
|
|
} __packed;
|
|
struct hciCmplWritePageTimeout {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Scan_Enable 0x0019 /* complete */
|
|
struct hciCmplReadScanEnable {
|
|
uint8_t status;
|
|
uint8_t state; /* bitmask of HCI_SCAN_ENABLE_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Scan_Enable 0x001A /* complete */
|
|
struct hciWriteScanEnable {
|
|
uint8_t state; /* bitmask of HCI_SCAN_ENABLE_* */
|
|
} __packed;
|
|
struct hciCmplWriteScanEnable {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Page_Scan_Activity 0x001B /* complete */
|
|
struct hciCmplReadPageScanActivity {
|
|
uint8_t status;
|
|
uint16_t scanInterval;
|
|
uint16_t scanWindow;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Page_Scan_Activity 0x001C /* complete */
|
|
struct hciWritePageScanActivity {
|
|
uint16_t scanInterval;
|
|
uint16_t scanWindow;
|
|
} __packed;
|
|
struct hciCmplWritePageScanActivity {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Inquiry_Scan_Activity 0x001D /* complete */
|
|
struct hciCmplReadInquiryScanActivity {
|
|
uint8_t status;
|
|
uint16_t scanInterval;
|
|
uint16_t scanWindow;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Inquiry_Scan_Activity 0x001E /* complete */
|
|
struct hciWriteInquiryScanActivity {
|
|
uint16_t scanInterval;
|
|
uint16_t scanWindow;
|
|
} __packed;
|
|
struct hciCmplWriteInquiryScanActivity {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Authentication_Enable 0x001F /* complete */
|
|
struct hciCmplReadAuthEnable {
|
|
uint8_t status;
|
|
uint8_t authRequired;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Authentication_Enable 0x0020 /* complete */
|
|
struct hciWriteAuthEnable {
|
|
uint8_t authRequired;
|
|
} __packed;
|
|
struct hciCmplWriteAuthEnable {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Encryption_Mode 0x0021 /* complete *//* deprecated in BT 2.1+ */
|
|
struct hciCmplReadEncryptionMode {
|
|
uint8_t status;
|
|
uint8_t encrRequired;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Encryption_Mode 0x0022 /* complete *//* deprecated in BT 2.1+ */
|
|
struct hciWriteEncryptionMode {
|
|
uint8_t encrRequired;
|
|
} __packed;
|
|
struct hciCmplWriteEncryptionMode {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Class_Of_Device 0x0023 /* complete */
|
|
struct hciCmplReadClassOfDevice {
|
|
uint8_t status;
|
|
uint8_t cls[3];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Class_Of_Device 0x0024 /* complete */
|
|
struct hciWriteClassOfDevice {
|
|
uint8_t cls[3];
|
|
} __packed;
|
|
struct hciCmplWriteClassOfDevice {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Voice_Setting 0x0025 /* complete */
|
|
struct hciCmplReadVoiceSetting {
|
|
uint8_t status;
|
|
uint16_t voiceSetting;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Voice_Setting 0x0026 /* complete */
|
|
struct hciWriteVoiceSetting {
|
|
uint16_t voiceSetting;
|
|
} __packed;
|
|
struct hciCmplWriteVoiceSetting {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Automatic_Flush_Timeout 0x0027 /* complete */
|
|
struct hciReadAutoFlushTimeout {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadAutoFlushTimeout {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t timeout;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Automatic_Flush_Timeout 0x0028 /* complete */
|
|
struct hciWriteAutoFlushTimeout {
|
|
uint16_t conn;
|
|
uint16_t timeout;
|
|
} __packed;
|
|
struct hciCmplWriteAutoFlushTimeout {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Num_Broadcast_Retransmissions 0x0029 /* complete */
|
|
struct hciCmplReadNumBroadcastRetransmissions {
|
|
uint8_t status;
|
|
uint8_t numRetransmissions; /* 0 .. 0xFE => 1 .. 255 TXes */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Num_Broadcast_Retransmissions 0x002A /* complete */
|
|
struct hciWriteNumBroadcastRetransmissions {
|
|
uint8_t numRetransmissions; /* 0 .. 0xFE => 1 .. 255 TXes */
|
|
} __packed;
|
|
struct hciCmplWriteNumBroadcastRetransmissions {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Hold_Mode_Activity 0x002B /* complete */
|
|
struct hciCmplReadHoldModeActivity {
|
|
uint8_t status;
|
|
uint8_t holdModeActivity; /* bitfield if HCI_HOLD_MODE_SUSPEND_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Hold_Mode_Activity 0x002C /* complete */
|
|
struct hciWriteHoldModeActivity {
|
|
uint8_t holdModeActivity; /* bitfield if HCI_HOLD_MODE_SUSPEND_* */
|
|
} __packed;
|
|
struct hciCmplWriteHoldModeActivity {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Transmit_Power_Level 0x002D /* complete */
|
|
struct hciReadTransmitPowerLevel {
|
|
uint16_t conn;
|
|
uint8_t max; /* else current */
|
|
} __packed;
|
|
struct hciCmplReadTransmitPowerLevel {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t txPower; /* actually an int8_t */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_SCO_Flow_Control_Enable 0x002E /* complete */
|
|
struct hciCmplReadSyncFlowCtrl {
|
|
uint8_t status;
|
|
uint8_t syncFlowCtrlOn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_SCO_Flow_Control_Enable 0x002F /* complete */
|
|
struct hciWriteSyncFlowCtrlEnable {
|
|
uint8_t syncFlowCtrlOn;
|
|
} __packed;
|
|
struct hciCmplWriteSyncFlowCtrlEnable {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Controller_To_Host_Flow_Control 0x0031 /* complete */
|
|
struct hciSetControllerToHostFlowControl {
|
|
uint8_t chipToHostFlowCtrl; /* bitmask of HCI_TO_HOST_FLOW_CTRL_* */
|
|
} __packed;
|
|
struct hciCmplSetControllerToHostFlowControl {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Host_Buffer_Size 0x0033 /* complete */
|
|
struct hciHostBufferSize {
|
|
uint16_t maxAclPacket;
|
|
uint8_t maxScoPacket;
|
|
uint16_t numAclPackets;
|
|
uint16_t numScoPackets;
|
|
} __packed;
|
|
struct hciCmplHostBufferSize {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Host_Number_Of_Completed_Packets 0x0035 /* special: can be sent anytime (not subj to cmd flow control), does not generate events unless error */
|
|
struct hciHostNumberOfCompletedPacketsItem {
|
|
uint16_t conn;
|
|
uint16_t numCompletedPackets;
|
|
} __packed;
|
|
struct hciHostNumberOfCompletedPackets {
|
|
uint8_t numHandles;
|
|
struct hciHostNumberOfCompletedPacketsItem items[];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Link_Supervision_Timeout 0x0036 /* complete */
|
|
struct hciReadLinkSupervisionTimeout {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadLinkSupervisionTimeout {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t timeout; /* in units of 0.625ms allowed: 1..0xffff, required support 0x0190 - 0xffff */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Link_Supervision_Timeout 0x0037 /* complete */
|
|
struct hciWriteLinkSupervisionTimeout {
|
|
uint16_t conn;
|
|
uint16_t timeout; /* in units of 0.625ms allowed: 1..0xffff, required support 0x0190 - 0xffff */
|
|
} __packed;
|
|
struct hciCmplWriteLinkSupervisionTimeout {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Number_Of_Supported_IAC 0x0038 /* complete */
|
|
struct hciCmplReadNumberOfSupportedIac {
|
|
uint8_t status;
|
|
uint8_t numSupportedIac;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Current_IAC_LAP 0x0039 /* complete */
|
|
struct hciCmplReadCurrentIacItem {
|
|
uint8_t iac_lap[3];
|
|
} __packed;
|
|
struct hciCmplReadCurrentIac {
|
|
uint8_t status;
|
|
uint8_t numCurrentIac;
|
|
struct hciCmplReadCurrentIacItem items[];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Current_IAC_LAP 0x003A /* complete */
|
|
struct hciWriteCurrentIacLapItem {
|
|
uint8_t iacLap[3];
|
|
} __packed;
|
|
struct hciWriteCurrentIacLap {
|
|
uint8_t numCurrentIac;
|
|
struct hciWriteCurrentIacLapItem items[];
|
|
} __packed;
|
|
struct hciCmplWriteCurrentIacLap {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Page_Scan_Period_Mode 0x003B /* complete */
|
|
struct hciCmplReadPageScanPeriodMode {
|
|
uint8_t status;
|
|
uint8_t mode;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Page_Scan_Period_Mode 0x003C /* complete */
|
|
struct hciWritePageScanPeriodMode {
|
|
uint8_t mode;
|
|
} __packed;
|
|
struct hciCmplWritePageScanPeriodMode {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Page_Scan_Mode 0x003D /* complete *//* deprecated in BT 1.2+ */
|
|
struct hciCmplReadPageScanMode {
|
|
uint8_t status;
|
|
uint8_t pageScanMode; /* nonzero modes are optional */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Page_Scan_Mode 0x003E /* complete *//* deprecated in BT 1.2+ */
|
|
struct hciWritePageScanMode {
|
|
uint8_t pageScanMode; /* nonzero modes are optional */
|
|
} __packed;
|
|
struct hciCmplWritePageScanMode {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 1.2 ==== */
|
|
|
|
#define HCI_CMD_Set_AFH_Host_Channel_Classification 0x003F /* complete */
|
|
struct hciSetAfhHostChannelClassification {
|
|
uint8_t channels[10];
|
|
} __packed;
|
|
struct hciCmplSetAfhHostChannelClassification {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Inquiry_Scan_Type 0x0042 /* complete */
|
|
struct hciCmplReadInquiryScanType {
|
|
uint8_t status;
|
|
uint8_t interlaced; /* optional */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Inquiry_Scan_Type 0x0043 /* complete */
|
|
struct hciWriteInquiryScanType {
|
|
uint8_t interlaced; /* optional */
|
|
} __packed;
|
|
struct hciCmplWriteInquiryScanType {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Inquiry_Mode 0x0044 /* complete */
|
|
struct hciCmplReadInquryMode {
|
|
uint8_t status;
|
|
uint8_t inqMode; /* HCI_INQ_MODE_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Inquiry_Mode 0x0045 /* complete */
|
|
struct hciWriteInquiryMode {
|
|
uint8_t inqMode; /* HCI_INQ_MODE_* */
|
|
} __packed;
|
|
struct hciCmplWriteInquiryMode {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Page_Scan_Type 0x0046 /* complete */
|
|
struct hciCmplReadPageScanType {
|
|
uint8_t status;
|
|
uint8_t interlaced; /* optional */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Page_Scan_Type 0x0047 /* complete */
|
|
struct hciWritePageScanType {
|
|
uint8_t interlaced; /* optional */
|
|
} __packed;
|
|
struct hciCmplWritePageScanType {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_AFH_Channel_Assessment_Mode 0x0048 /* complete */
|
|
struct hciCmplReadAfhChannelAssessment {
|
|
uint8_t status;
|
|
uint8_t channelAssessmentEnabled;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_AFH_Channel_Assessment_Mode 0x0049 /* complete */
|
|
struct hciWriteAfhChannelAssessment {
|
|
uint8_t channelAssessmentEnabled;
|
|
} __packed;
|
|
struct hciCmplWriteAfhChannelAssessment {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 2.1 ==== */
|
|
|
|
#define HCI_CMD_Read_Extended_Inquiry_Response 0x0051 /* complete */
|
|
struct hciCmplReadEIR {
|
|
uint8_t status;
|
|
uint8_t useFec;
|
|
uint8_t data[240];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Extended_Inquiry_Response 0x0052 /* complete */
|
|
struct hciWriteEIR {
|
|
uint8_t useFec;
|
|
uint8_t data[240];
|
|
} __packed;
|
|
struct hciCmplWriteEIR {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Refresh_Encryption_Key 0x0052 /* status */
|
|
struct hciRefreshEncryptionKey {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Simple_Pairing_Mode 0x0055 /* complete */
|
|
struct hciCmplReadSimplePairingMore {
|
|
uint8_t status;
|
|
uint8_t useSsp;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Simple_Pairing_Mode 0x0056 /* complete */
|
|
struct hciWriteSimplePairingMode {
|
|
uint8_t useSsp;
|
|
} __packed;
|
|
struct hciCmplWriteSimplePairingMode {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Local_OOB_Data 0x0057 /* complete */
|
|
struct hciCmplReadLocalOobData {
|
|
uint8_t status;
|
|
uint8_t C[16];
|
|
uint8_t R[16];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Inquiry_Response_Transmit_Power_Level 0x0058 /* complete */
|
|
struct hciCmplReadInquiryTransmitPowerLevel {
|
|
uint8_t status;
|
|
uint8_t power; /* actually an int8_t */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Inquiry_Transmit_Power_Level 0x0059 /* complete */
|
|
struct hciWriteInquiryTransmitPowerLevel {
|
|
uint8_t power; /* actually an int8_t */
|
|
} __packed;
|
|
struct hciCmplWriteInquiryTransmitPowerLevel {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Default_Erroneous_Data_Reporting 0x005A /* complete */
|
|
struct hciCmplReadErroneousDataReporting {
|
|
uint8_t status;
|
|
uint8_t reportingEnabled;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Default_Erroneous_Data_Reporting 0x005B /* complete */
|
|
struct hciWriteErroneousDataReporting {
|
|
uint8_t reportingEnabled;
|
|
} __packed;
|
|
struct hciCmplWriteErroneousDataReporting {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Enhanced_Flush 0x005F /* status */
|
|
struct hciEnhancedFlush {
|
|
uint16_t conn;
|
|
uint8_t which; /* 0 is the only value - flush auto-flushable packets only */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Send_Keypress_Notification 0x0060 /* complete */
|
|
struct hciSendKeypressNotification {
|
|
uint8_t mac[6];
|
|
uint8_t notifType; /* HCI_SSP_KEY_ENTRY_* */
|
|
} __packed;
|
|
struct hciCmplSendKeypressNotification {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 3.0 ==== */
|
|
|
|
#define HCI_CMD_Read_Logical_Link_Accept_Timeout 0x0061 /* complete */
|
|
struct hciCmplReadLogicalLinkTimeout {
|
|
uint8_t status;
|
|
uint16_t timeout; /* in units of 0.625ms 1..0xB540. Required support 0x00A0..0xB540 */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Logical_Link_Accept_Timeout 0x0062 /* complete */
|
|
struct hciWriteLogicalLinkTimeout {
|
|
uint16_t timeout; /* in units of 0.625ms 1..0xB540. Required support 0x00A0..0xB540 */
|
|
} __packed;
|
|
struct hciCmplWriteLogicalLinkTimeout {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Event_Mask_Page_2 0x0063 /* complete */
|
|
struct hciSetEventMaskPage2 {
|
|
uint64_t mask; /* bitmask of HCI_EVENT_P2_* */
|
|
} __packed;
|
|
struct hciCmplSetEventMaskPage2 {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Location_Data 0x0064 /* complete */
|
|
struct hciCmplReadLocationData {
|
|
uint8_t status;
|
|
uint8_t regulatoryDomainKnown;
|
|
uint16_t domain; /* ISO3166-1 code if known, else 0x5858 'XX' */
|
|
uint8_t locationSuffix; /* HCI_LOCATION_DOMAIN_OPTION_* */
|
|
uint8_t mainsPowered;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Location_Data 0x0065 /* complete */
|
|
struct hciWriteLocationData {
|
|
uint8_t regulatoryDomainKnown;
|
|
uint16_t domain; /* ISO3166-1 code if known, else 0x5858 'XX' */
|
|
uint8_t locationSuffix; /* HCI_LOCATION_DOMAIN_OPTION_* */
|
|
uint8_t mainsPowered;
|
|
} __packed;
|
|
struct hciCmplWriteLocationData {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Flow_Control_Mode 0x0066 /* complete */
|
|
struct hciCmplReadFlowControlMode {
|
|
uint8_t status;
|
|
uint8_t blockBased; /* block based is for amp, packed-based is for BR/EDR */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Flow_Control_mode 0x0067 /* complete */
|
|
struct hciWriteFlowControlMode {
|
|
uint8_t blockBased; /* block based is for amp, packed-based is for BR/EDR */
|
|
} __packed;
|
|
struct hciCmplWriteFlowcontrolMode {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Enhanced_Transmit_Power_Level 0x0068 /* complete */
|
|
struct hciReadEnhancedTransmitPowerLevel {
|
|
uint16_t conn;
|
|
uint8_t max; /* else currurent is read */
|
|
} __packed;
|
|
struct hciCmplReadEnhancedTransmitPowerLevel {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t txLevelGFSK; /* actually an int8_t */
|
|
uint8_t txLevelDQPSK; /* actually an int8_t */
|
|
uint8_t txLevel8DPSK; /* actually an int8_t */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Best_Effort_Flush_Timeout 0x0069 /* complete */
|
|
struct hciReadBestEffortFlushTimeout {
|
|
uint16_t logicalLinkHandle;
|
|
} __packed;
|
|
struct hciCmplReadBestEffortFlushTimeout {
|
|
uint8_t status;
|
|
uint32_t bestEffortFlushTimeout; /* in microseconds */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Best_Effort_Flush_Timeout 0x006A /* complete */
|
|
struct hciWriteBestEffortFlushTimeout {
|
|
uint16_t logicalLinkHandle;
|
|
uint32_t bestEffortFlushTimeout; /* in microseconds */
|
|
} __packed;
|
|
struct hciCmplWriteBestEffortFlushTimeout {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Short_Range_Mode 0x006B /* status */
|
|
struct hciShortRangeMode {
|
|
uint8_t physicalLinkHandle;
|
|
uint8_t shortRangeModeEnabled;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 4.0 ==== */
|
|
|
|
#define HCI_CMD_Read_LE_Host_Supported 0x006C /* complete */
|
|
struct hciCmplReadLeHostSupported {
|
|
uint8_t status;
|
|
uint8_t leSupportedHost;
|
|
uint8_t simultaneousLeHost;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_LE_Host_Supported 0x006D /* complete */
|
|
struct hciWriteLeHostSupported {
|
|
uint8_t leSupportedHost;
|
|
uint8_t simultaneousLeHost;
|
|
} __packed;
|
|
struct hciCmplWriteLeHostSupported {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 4.1 ==== */
|
|
|
|
#define HCI_CMD_Set_MWS_Channel_Parameters 0x006E /* complete */
|
|
struct hciSetMwsChannelParams {
|
|
uint8_t mwsEnabled;
|
|
uint16_t mwsChannelRxCenterFreq; /* in MHz */
|
|
uint16_t mwsChannelTxCenterFreq; /* in MHz */
|
|
uint16_t mwsChannelRxBandwidth; /* in MHz */
|
|
uint16_t mwsChannelTxBandwidth; /* in MHz */
|
|
uint8_t mwsChannelType;
|
|
} __packed;
|
|
struct hciCmplSetMwsChannelParams {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_External_Frame_Configuration 0x006F /* complete */
|
|
struct hciSetExternalFrameConfigItem {
|
|
uint16_t periodDuration; /* in microseconds */
|
|
uint8_t periodType; /* HCI_PERIOD_TYPE_* */
|
|
} __packed;
|
|
struct hciSetExternalFrameConfig {
|
|
uint16_t extFrameDuration; /* in microseonds */
|
|
uint16_t extFrameSyncAssertOffset; /* in microseonds */
|
|
uint16_t extFrameSyncAssertJitter; /* in microseonds */
|
|
uint8_t extNumPeriods; /* 1 .. 32 */
|
|
struct hciSetExternalFrameConfigItem items[];
|
|
} __packed;
|
|
struct hciCmplSetExternalFrameConfig {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_MWS_Signalling 0x0070 /* complete */
|
|
struct hciSetMwsSignalling {
|
|
uint16_t mwsRxAssertOffset; /* all of these are in microseconds */
|
|
uint16_t mwsRxAssertJitter;
|
|
uint16_t mwsRxDeassertOffset;
|
|
uint16_t mwsRxDeassertJitter;
|
|
uint16_t mwsTxAssertOffset;
|
|
uint16_t mwsTxAssertJitter;
|
|
uint16_t mwsTxDeassertOffset;
|
|
uint16_t mwsTxDeassertJitter;
|
|
uint16_t mwsPatternAssertOffset;
|
|
uint16_t mwsPatternAssertJitter;
|
|
uint16_t mwsInactivityDurationAssertOffset;
|
|
uint16_t mwsInactivityDurationAssertJitter;
|
|
uint16_t mwsScanFrequencyAssertOffset;
|
|
uint16_t mwsScanFrequencyAssertJitter;
|
|
uint16_t mwsPriorityAssertOffsetRequest;
|
|
} __packed;
|
|
struct hciCmplSetMwsSignalling {
|
|
uint8_t status;
|
|
uint16_t bluetoothRxPriorityAssertOffset;
|
|
uint16_t bluetoothRxPriorityAssertJitter;
|
|
uint16_t bluetoothRxPriorityDeassertOffset;
|
|
uint16_t bluetoothRxPriorityDeassertJitter;
|
|
uint16_t _802RxPriorityAssertOffset;
|
|
uint16_t _802RxPriorityAssertJitter;
|
|
uint16_t _802RxPriorityDeassertOffset;
|
|
uint16_t _802RxPriorityDeassertJitter;
|
|
uint16_t bluetoothTxOnAssertOffset;
|
|
uint16_t bluetoothTxOnAssertJitter;
|
|
uint16_t bluetoothTxOnDeassertOffset;
|
|
uint16_t bluetoothTxOnDeassertJitter;
|
|
uint16_t _802TxOnAssertOffset;
|
|
uint16_t _802TxOnAssertJitter;
|
|
uint16_t _802TxOnDeassertOffset;
|
|
uint16_t _802TxOnDeassertJitter;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_MWS_Transport_Layer 0x0071 /* complete */
|
|
struct hciSetMwsTransportLayer {
|
|
uint8_t transportLayer;
|
|
uint32_t toMwsBaudRate; /* in byte/sec */
|
|
uint32_t fromMwsBaudRate; /* in byte/sec */
|
|
} __packed;
|
|
struct hciCmplSetMwsTransportLayer {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_MWS_Scan_Frequency_Table 0x0072 /* complete */
|
|
struct hciSetMwsScanFrequencyTableItem {
|
|
uint16_t scanFreqLow; /*in MHz */
|
|
uint16_t scanFreqHigh; /*in MHz */
|
|
} __packed;
|
|
struct hciSetMwsScanFrequencyTable {
|
|
uint8_t n;
|
|
struct hciSetMwsScanFrequencyTableItem items[];
|
|
} __packed;
|
|
struct hciCmplSetMwsScanFrequencyTable {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_MWS_PATTERN_Configuration 0x0073 /* complete */
|
|
struct hciSetMwsPatternConfigItem {
|
|
uint16_t intervalDuration; /* in microseconds */
|
|
uint8_t intervalType; /* HCI_MWS_INTERVAL_TYPE_* */
|
|
} __packed;
|
|
struct hciSetMwsPatternConfig {
|
|
uint8_t mwsPatternIndex; /* 0 .. 2 */
|
|
uint8_t mwsPatternNumIntervals;
|
|
struct hciSetMwsPatternConfigItem items[];
|
|
} __packed;
|
|
struct hciCmplSetMwsPatternConfig {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Reserved_LT_ADDR 0x0074 /* complete */
|
|
struct hciSetReservedLtAddr {
|
|
uint8_t ltAddr;
|
|
} __packed;
|
|
struct hciCmplSetReservedLtAddr {
|
|
uint8_t status;
|
|
uint8_t ltAddr;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Delete_Reserved_LT_ADDR 0x0075 /* complete */
|
|
struct hciDeleteReservedLtAddr {
|
|
uint8_t ltAddr;
|
|
} __packed;
|
|
struct hciCmplDeleteReservedLtAddr {
|
|
uint8_t status;
|
|
uint8_t ltAddr;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Connectionless_Slave_Broadcast_Data 0x0076 /* complete */
|
|
struct hciSetConnlessSlaveBroadcastData {
|
|
uint8_t ltAddr;
|
|
uint8_t fragment; /* HCI_CONNLESS_FRAG_TYPE_* */
|
|
uint8_t dataLen;
|
|
uint8_t data[];
|
|
} __packed;
|
|
struct hciCmplSetConnlessSlaveBroadcastData {
|
|
uint8_t status;
|
|
uint8_t ltAddr;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Synchronisation_Train_Parameters 0x0077 /* complete */
|
|
struct hciCmplReadSyncTrainParams {
|
|
uint8_t status;
|
|
uint16_t interval;
|
|
uint32_t syncTrainTimeout;
|
|
uint8_t serviceData;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Synchronisation_Train_Parameters 0x0078 /* complete */
|
|
struct hciWriteSyncTrainParams {
|
|
uint16_t intMin;
|
|
uint16_t intMax;
|
|
uint32_t syncTrainTimeout;
|
|
uint8_t serviceData;
|
|
} __packed;
|
|
struct hciCmplWriteSyncTrainParams {
|
|
uint8_t status;
|
|
uint16_t interval;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Secure_Connections_Host_Support 0x0079 /* complete */
|
|
struct hciCmplReadSecureConnectionsHostSupport {
|
|
uint8_t status;
|
|
uint8_t secureConnectionsSupported;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Secure_Connections_Host_Support 0x007A /* complete */
|
|
struct hciWriteSecureConnectionsHostSupport {
|
|
uint8_t secureConnectionsSupported;
|
|
} __packed;
|
|
struct hciCmplWriteSecureConnectionsHostSupport {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Authenticated_Payload_Timeout 0x007B /* complete */
|
|
struct hciReadAuthedPayloadTimeout {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadAuthedPayloadTimeout {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t timeout; /* in units of 10ms, 1 .. 0xffff */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Authenticated_Payload_Timeout 0x007C /* complete */
|
|
struct hciWriteAuthedPayloadTimeout {
|
|
uint16_t conn;
|
|
uint16_t timeout; /* in units of 10ms, 1 .. 0xffff */
|
|
} __packed;
|
|
struct hciCmplWriteAuthedPayloadTimeout {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Local_OOB_Extended_Data 0x007D /* complete */
|
|
struct hciCmplReadLocalOobExtendedData {
|
|
uint8_t status;
|
|
uint8_t C_192[16];
|
|
uint8_t R_192[16];
|
|
uint8_t C_256[16];
|
|
uint8_t R_256[16];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Extended_Page_Timeout 0x007E /* complete */
|
|
struct hciCmplReadExtendedPageTimeout {
|
|
uint8_t status;
|
|
uint16_t timeout; /* in units of 0.625ms 0..0xffff */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Extended_Page_Timeout 0x007F /* complete */
|
|
struct hciWriteExtendedPageTimeout {
|
|
uint16_t timeout; /* in units of 0.625ms 0..0xffff */
|
|
} __packed;
|
|
struct hciCmplWriteExtendedPageTimeout {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Extended_Inquiry_Length 0x0080 /* complete */
|
|
struct hciCmplReadExtendedInquiryLength {
|
|
uint8_t status;
|
|
uint16_t timeout; /* in units of 0.625ms 0..0xffff */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Extended_Inquiry_Length 0x0081 /* complete */
|
|
struct hciWriteExtendedInquiryLength {
|
|
uint16_t timeout; /* in units of 0.625ms 0..0xffff */
|
|
} __packed;
|
|
struct hciCmplWriteExtendedInquiryLength {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
|
|
|
|
|
|
|
|
#define HCI_OGF_Informational 4
|
|
|
|
|
|
/* ==== BT 1.1 ==== */
|
|
|
|
#define HCI_CMD_Read_Local_Version_Information 0x0001 /* complete */
|
|
struct hciCmplReadLocalVersion {
|
|
uint8_t status;
|
|
uint8_t hciVersion; /* HCI_VERSION_* */
|
|
uint16_t hciRevision;
|
|
uint8_t lmpVersion; /* HCI_VERSION_* */
|
|
uint16_t manufName;
|
|
uint16_t lmpSubversion;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Local_Supported_Commands 0x0002 /* complete */
|
|
struct hciCmplReadLocalSupportedCommands {
|
|
uint8_t status;
|
|
uint64_t bitfield;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Local_Supported_Features 0x0003 /* complete */
|
|
struct hciCmplReadLocalSupportedFeatures {
|
|
uint8_t status;
|
|
uint64_t features; /* bitmask of HCI_LMP_FTR_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Local_Extended_Features 0x0004 /* complete */
|
|
struct hciReadLocalExtendedFeatures {
|
|
uint8_t page;
|
|
} __packed;
|
|
struct hciCmplReadLocalExtendedFeatures {
|
|
uint8_t status;
|
|
uint8_t page;
|
|
uint8_t maxPage;
|
|
uint64_t features; /* bitmask of HCI_LMP_EXT_FTR_P* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Buffer_Size 0x0005 /* complete */
|
|
struct hciCmplReadBufferSize {
|
|
uint8_t status;
|
|
uint16_t aclBufferLen;
|
|
uint8_t scoBufferLen;
|
|
uint16_t numAclBuffers;
|
|
uint16_t numScoBuffers;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_BD_ADDR 0x0009 /* complete */
|
|
struct hciCmplReadBdAddr {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 3.0 ==== */
|
|
|
|
#define HCI_CMD_Read_Data_Block_Size 0x000A /* complete */
|
|
struct hciCmplReadDataBlockSize {
|
|
uint8_t status;
|
|
uint16_t maxAclDataPacketLen;
|
|
uint16_t dataBlockLen;
|
|
uint16_t totalNumDataBlocks;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 4.1 ==== */
|
|
|
|
#define HCI_CMD_Read_Local_Supported_Codecs 0x000B /* complete */
|
|
struct hciCmplReadLocalSupportedCodecs {
|
|
uint8_t status;
|
|
uint8_t numSupportedCodecs;
|
|
uint8_t codecs[];
|
|
/* these follow, but due to var array cannot be declared here:
|
|
uint8_t numVendorCodecs;
|
|
uint32_t vendorCodecs[];
|
|
*/
|
|
} __packed;
|
|
|
|
|
|
|
|
|
|
|
|
#define HCI_OGF_Status 5
|
|
|
|
|
|
/* == BT 1.1 == */
|
|
|
|
#define HCI_CMD_Read_Failed_Contact_Counter 0x0001 /* complete */
|
|
struct hciReadFailedContactCounter {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadFailedContactCounter {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t counter;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Reset_Failed_Contact_Counter 0x0002 /* complete */
|
|
struct hciResetFailedContactCounter {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplResetFailedContactCounter {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Link_Quality 0x0003 /* complete */
|
|
struct hciReadLinkQuality {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadLinkQuality {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t quality;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_RSSI 0x0005 /* complete */
|
|
struct hciReadRssi {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadRssi {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t RSSI; /* actually an int8_t */
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 1.2 ==== */
|
|
|
|
#define HCI_CMD_Read_AFH_Channel_Map 0x0006 /* complete */
|
|
struct hciReadAfhChannelMap {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadAfhChannelMap {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t map[10];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Clock 0x0007 /* complete */
|
|
struct hciReadClock {
|
|
uint16_t conn;
|
|
uint8_t readRemote; /* else reads local and ignores conn */
|
|
} __packed;
|
|
struct hciCmplReadClock {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint32_t clock;
|
|
uint16_t accuracy;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 3.0 ==== */
|
|
|
|
#define HCI_CMD_Read_Encryption_Key_Size 0x0008 /* complete */
|
|
struct hciReadEncrKeySize {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplReadEncrKeySize {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t keySize;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Local_AMP_Info 0x0009 /* complete */
|
|
struct hciCmplReadLocalAmpInfo {
|
|
uint8_t status;
|
|
uint8_t ampStatus;
|
|
uint32_t totalBandwidth;
|
|
uint32_t maxGuaranteedBandwidth;
|
|
uint32_t minLatency;
|
|
uint16_t maxPduSize;
|
|
uint8_t controllerType;
|
|
uint16_t palCapabilities;
|
|
uint16_t maxAmpAssocLen;
|
|
uint32_t maxFlushTimeout;
|
|
uint32_t bestEffortFlushTimeout;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Read_Local_AMP_ASSOC 0x000A /* complete */
|
|
struct hciReadLocalAmpAssoc {
|
|
uint8_t physicalLinkHandle;
|
|
uint16_t lengthSoFar;
|
|
uint16_t ampAssocLen;
|
|
} __packed;
|
|
struct hciCmplReadLocalAmpAssoc {
|
|
uint8_t status;
|
|
uint8_t physicalLinkHandle;
|
|
uint16_t ampAssocRemainingLen; /* incl this fragment */
|
|
uint8_t ampAssocFragment[]; /* 1.. 248 byutes */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Write_Remote_AMP_ASSOC 0x000B /* complete */
|
|
struct hciWriteRemoteAmpAssoc {
|
|
uint8_t physicalLinkHandle;
|
|
uint16_t lengthSoFar;
|
|
uint16_t remaningLength;
|
|
uint8_t fragment[]; /* 248 bytes for all but last one */
|
|
} __packed;
|
|
struct hciCmplWriteRemoteAmpAssoc {
|
|
uint8_t status;
|
|
uint8_t physicalLinkHandle;
|
|
} __packed;
|
|
|
|
/* ==== BT 4.1 ==== */
|
|
|
|
#define HCI_CMD_Get_MWS_Transport_Layer_Configuration 0x000C /* complete */
|
|
struct hciCmplGetMwsTransportLayerConfigItem {
|
|
uint8_t transportLayer;
|
|
uint8_t numBaudRates;
|
|
} __packed;
|
|
struct hciCmplGetMwsTransportLayerConfigBandwidthItem {
|
|
uint32_t toMwsBaudRate;
|
|
uint32_t fromMwsBaudRate;
|
|
} __packed;
|
|
struct hciCmplGetMwsTransportLayerConfig {
|
|
uint8_t status;
|
|
uint8_t numTransports;
|
|
struct hciCmplGetMwsTransportLayerConfigItem items[]; /* numTransports items */
|
|
/* this follows:
|
|
struct hciCmplGetMwsTransportLayerConfigBandwidthItem items[] // sum(items[].numbaudRates) items
|
|
*/
|
|
} __packed;
|
|
|
|
#define HCI_CMD_Set_Triggered_Clock_Capture 0x000D /* complete */
|
|
struct hciSetTriggeredClockCapture {
|
|
uint16_t conn;
|
|
uint8_t enable;
|
|
uint8_t piconetClock; /* else local clock & "conn" is ignored */
|
|
uint8_t lpoAllowed; /* can sleep? */
|
|
uint8_t numClockCapturesToFilter;
|
|
} __packed;
|
|
struct hciCmplSetTriggeredClockCapture {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
|
|
|
|
|
|
|
|
#define HCI_OGF_LE 8
|
|
|
|
|
|
/* ==== BT 4.0 ==== */
|
|
|
|
#define HCI_CMD_LE_Set_Event_Mask 0x0001 /* complete */
|
|
struct hciLeSetEventMask {
|
|
uint64_t events; /* bitmask of HCI_LE_EVENT_* */
|
|
} __packed;
|
|
struct hciCmplLeSetEventMask {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Read_Buffer_Size 0x0002 /* complete */
|
|
struct hciCmplLeReadBufferSize {
|
|
uint8_t status;
|
|
uint16_t leBufferSize;
|
|
uint8_t leNumBuffers;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Read_Local_Supported_Features 0x0003 /* complete */
|
|
struct hciCmplLeReadLocalSupportedFeatures {
|
|
uint8_t status;
|
|
uint64_t leFeatures; /* bitmask of HCI_LE_FTR_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Set_Random_Address 0x0005 /* complete */
|
|
struct hciLeSetRandomAddress{
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplLeSetRandomAddress{
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Set_Adv_Params 0x0006 /* complete */
|
|
struct hciLeSetAdvParams {
|
|
uint16_t advIntervalMin;
|
|
uint16_t advIntervalMax;
|
|
uint8_t advType;
|
|
uint8_t useRandomAddress;
|
|
uint8_t directRandomAddress;
|
|
uint8_t directAddr[6];
|
|
uint8_t advChannelMap;
|
|
uint8_t advFilterPolicy;
|
|
} __packed;
|
|
struct hciCmplLeSetAdvParams {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Read_Adv_Channel_TX_Power 0x0007 /* complete */
|
|
struct hciCmplLeReadAdvChannelTxPower {
|
|
uint8_t status;
|
|
uint8_t txPower; /* actually an int8_t */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Set_Advertising_Data 0x0008 /* complete */
|
|
struct hciLeSetAdvData {
|
|
uint8_t advDataLen;
|
|
uint8_t advData[31];
|
|
} __packed;
|
|
struct hciCmplLeSetAdvData {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Set_Scan_Response_Data 0x0009 /* complete */
|
|
struct hciSetScanResponseData {
|
|
uint8_t scanRspDataLen;
|
|
uint8_t scanRspData[31];
|
|
} __packed;
|
|
struct hciCmplSetScanResponseData {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Set_Advertise_Enable 0x000A /* complete */
|
|
struct hciLeSetAdvEnable {
|
|
uint8_t advOn;
|
|
} __packed;
|
|
struct hciCmplLeSetAdvEnable {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Set_Scan_Parameters 0x000B /* complete */
|
|
struct hciLeSetScanParams {
|
|
uint8_t activeScan;
|
|
uint16_t scanInterval; /* in units of 0.625ms, 4..0x4000 */
|
|
uint16_t scanWindow; /* in units of 0.625ms, 4..0x4000 */
|
|
uint8_t useOwnRandomAddr;
|
|
uint8_t onlyWhitelist;
|
|
} __packed;
|
|
struct hciCmplLeSetScanParams {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Set_Scan_Enable 0x000C /* complete */
|
|
struct hciLeSetScanEnable {
|
|
uint8_t scanOn;
|
|
uint8_t filterDuplicates;
|
|
} __packed;
|
|
struct hciCmplLeSetScanEnable {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Create_Connection 0x000D /* status */
|
|
struct hciLeCreateConnection {
|
|
uint16_t scanInterval; /* in units of 0.625ms, 4..0x4000 */
|
|
uint16_t scanWindow; /* in units of 0.625ms, 4..0x4000 */
|
|
uint8_t connectToAnyWhitelistedDevice; /* if so, ignore next 2 params */
|
|
uint8_t peerRandomAddr;
|
|
uint8_t peerMac[6];
|
|
uint8_t useOwnRandomAddr;
|
|
uint16_t connIntervalMin; /* in units of 1.25ms, 6..0x0C80 */
|
|
uint16_t connIntervalMax; /* in units of 1.25ms, 6..0x0C80 */
|
|
uint16_t connLatency; /* 0..0x1F4 */
|
|
uint16_t supervisionTimeout; /* in units of 10ms, 0xA...0x0C80 */
|
|
uint16_t minConnLen; /* minimum conn len needed in units of 0.625ms 0..0xfff */
|
|
uint16_t maxConnLen; /* minimum conn len needed in units of 0.625ms 0..0xfff */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Create_Connection_Cancel 0x000E /* complete */
|
|
struct hciCmplLeCreateConnectionCancel {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Read_White_List_Size 0x000F /* complete */
|
|
struct hciCmplLeReadWhiteListSize {
|
|
uint8_t status;
|
|
uint8_t whitelistSize;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Clear_White_List 0x0010 /* complete */
|
|
struct hciCmplLeClearWhiteList {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Add_Device_To_White_List 0x0011 /* complete */
|
|
struct hciLeAddDeviceToWhiteList {
|
|
uint8_t randomAddr;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplLeAddDeviceToWhiteList {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Remove_Device_From_White_List 0x0012 /* complete */
|
|
struct hciLeRemoveDeviceFromWhiteList {
|
|
uint8_t randomAddr;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
struct hciCmplLeRemoveDeviceFromWhiteList {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Connection_Update 0x0013 /* status */
|
|
struct hciLeConnectionUpdate {
|
|
uint16_t conn;
|
|
uint16_t connIntervalMin; /* in units of 1.25ms, 6..0x0C80 */
|
|
uint16_t connIntervalMax; /* in units of 1.25ms, 6..0x0C80 */
|
|
uint16_t connLatency; /* 0..0x1F4 */
|
|
uint16_t supervisionTimeout; /* in units of 10ms, 0xA...0x0C80 */
|
|
uint16_t minConnLen; /* minimum conn len needed in units of 0.625ms 0..0xfff */
|
|
uint16_t maxConnLen; /* minimum conn len needed in units of 0.625ms 0..0xfff */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Set_Host_Channel_Classification 0x0014 /* complete */
|
|
struct hciLeSetHostChannelClassification {
|
|
uint8_t chMap[5];
|
|
} __packed;
|
|
struct hciCmplLeSetHostChannelClassification {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Read_Channel_Map 0x0015 /* complete */
|
|
struct hciLeReadChannelMap {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplLeReadChannelMap {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t chMap[5];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Read_Remote_Used_Features 0x0016 /* status */
|
|
struct hciLeReadRemoteUsedFeatures {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Encrypt 0x0017 /* complete */
|
|
struct hciLeEncrypt {
|
|
uint8_t key[16];
|
|
uint8_t plaintext[16];
|
|
} __packed;
|
|
struct hciCmplLeEncrypt {
|
|
uint8_t status;
|
|
uint8_t encryptedData[16];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Rand 0x0018 /* complete */
|
|
struct hciCmplLeRand {
|
|
uint8_t status;
|
|
uint64_t rand;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Start_Encryption 0x0019 /* status */
|
|
struct hciLeStartEncryption {
|
|
uint16_t conn;
|
|
uint64_t rand;
|
|
uint16_t diversifier;
|
|
uint8_t LTK[16];
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_LTK_Request_Reply 0x001A /* complete */
|
|
struct hciLeLtkRequestReply {
|
|
uint16_t conn;
|
|
uint8_t LTK[16];
|
|
} __packed;
|
|
struct hciCmplLeLtkRequestReply {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_LTK_Request_Negative_Reply 0x001B /* complete */
|
|
struct hciLeLtkRequestNegativeReply {
|
|
uint16_t conn;
|
|
} __packed;
|
|
struct hciCmplLeLtkRequestNegativeReply {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Read_Supported_States 0x001C /* complete */
|
|
struct hciCmplLeReadSupportedStates {
|
|
uint8_t status;
|
|
uint64_t states; /* bitmask of HCI_LE_STATE_* */
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Receiver_Test 0x001D /* complete */
|
|
struct hciLeReceiverTest {
|
|
uint8_t radioChannelNum; /* 2402 + radioChannelNum * 2 MHz */
|
|
} __packed;
|
|
struct hciCmplLeReceiverTest {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Transmitter_Test 0x001E /* complete */
|
|
struct hciLeTransmitterTest {
|
|
uint8_t radioChannelNum; /* 2402 + radioChannelNum * 2 MHz */
|
|
uint8_t lengthOfTestData;
|
|
uint8_t testPacketDataType;
|
|
} __packed;
|
|
struct hciCmplLeTransmitterTest {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Test_End 0x001F /* complete */
|
|
struct hciCmplLeTestEnd {
|
|
uint8_t status;
|
|
uint16_t numPackets;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 4.1 ==== */
|
|
|
|
#define HCI_CMD_LE_Remote_Conn_Param_Request_Reply 0x0020 /* complete */
|
|
struct hciLeRemoteConnParamRequestReply {
|
|
uint16_t conn;
|
|
uint16_t connIntervalMin; /* in units of 1.25ms, 6..0x0C80 */
|
|
uint16_t connIntervalMax; /* in units of 1.25ms, 6..0x0C80 */
|
|
uint16_t connLatency; /* 0..0x1F4 */
|
|
uint16_t supervisionTimeout; /* in units of 10ms, 0xA...0x0C80 */
|
|
uint16_t minConnLen; /* minimum conn len needed in units of 0.625ms 0..0xfff */
|
|
uint16_t maxConnLen; /* minimum conn len needed in units of 0.625ms 0..0xfff */
|
|
} __packed;
|
|
struct hciCmplLeRemoteConnParamRequestReply {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_CMD_LE_Remote_Conn_Param_Request_Negative_Reply 0x0021 /* complete */
|
|
struct hciRemoteConnParamRequestNegativeReply {
|
|
uint16_t conn;
|
|
uint8_t reason;
|
|
} __packed;
|
|
struct hciCmplLeRemoteConnParamRequestNegativeReply {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
|
|
|
|
/* EVENTS */
|
|
|
|
|
|
/* ==== BT 1.1 ==== */
|
|
|
|
#define HCI_EVT_Inquiry_Complete 0x01
|
|
struct hciEvtInquiryComplete {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Inquiry_Result 0x02
|
|
struct hciEvtInquiryResultItem {
|
|
uint8_t mac[6];
|
|
uint8_t PSRM;
|
|
uint8_t PSPM;
|
|
uint8_t PSM; /* obsoleted in BT 1.2+ */
|
|
uint8_t deviceClass[3];
|
|
uint16_t clockOffset;
|
|
} __packed;
|
|
struct hciEvtInquiryResult {
|
|
uint8_t numResponses;
|
|
struct hciEvtInquiryResultItem items[];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Connection_Complete 0x03
|
|
struct hciEvtConnComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t mac[6];
|
|
uint8_t isAclLink;
|
|
uint8_t encrypted;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Connection_Request 0x04
|
|
struct hciEvtConnRequest {
|
|
uint8_t mac[6];
|
|
uint8_t deviceClass[3];
|
|
uint8_t isAclLink;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Disconnection_Complete 0x05
|
|
struct hciEvtDiscComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t reason;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Authentication_Complete 0x06
|
|
struct hciEvtAuthComplete {
|
|
uint8_t status;
|
|
uint16_t handle;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Remote_Name_Request_Complete 0x07
|
|
struct hciEvtRemoteNameReqComplete {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
char name[HCI_DEV_NAME_LEN];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Encryption_Change 0x08
|
|
struct hciEvtEncrChange {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t encrOn;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Change_Connection_Link_Key_Complete 0x09
|
|
struct hciEvtChangeConnLinkKeyComplete {
|
|
uint8_t status;
|
|
uint16_t handle;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Master_Link_Key_Complete 0x0A
|
|
struct hciEvtMasterLinkKeyComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t usingTempKey; /* else using semi-permanent key */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Read_Remote_Supported_Features_Complete 0x0B
|
|
struct hciEvtReadRemoteSupportedFeaturesComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint64_t lmpFeatures; /* bitmask of HCI_LMP_FTR_* */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Read_Remote_Version_Complete 0x0C
|
|
struct hciEvtReadRemoteVersionComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t lmpVersion; /* HCI_VERSION_* */
|
|
uint16_t manufName;
|
|
uint16_t lmpSubversion;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_QOS_Setup_Complete 0x0D
|
|
struct hciEvtQosSetupComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t flags;
|
|
uint8_t serviceType;
|
|
uint32_t tokenRate;
|
|
uint32_t peakBandwidth;
|
|
uint32_t latency;
|
|
uint32_t delayVariation;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Command_Complete 0x0E
|
|
struct hciEvtCmdComplete {
|
|
uint8_t numCmdCredits;
|
|
uint16_t opcode;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Command_Status 0x0F
|
|
struct hciEvtCmdStatus {
|
|
uint8_t status;
|
|
uint8_t numCmdCredits;
|
|
uint16_t opcode;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Hardware_Error 0x10
|
|
struct hciEvtHwError {
|
|
uint8_t errCode;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Flush_Occurred 0x11
|
|
struct hciEvtFlushOccurred {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Role_Change 0x12
|
|
struct hciEvtRoleChange {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
uint8_t amSlave;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Number_Of_Completed_Packets 0x13
|
|
struct hciEvtNumCompletedPacketsItem {
|
|
uint16_t conn;
|
|
uint16_t numPackets;
|
|
} __packed;
|
|
struct hciEvtNumCompletedPackets {
|
|
uint8_t numHandles;
|
|
struct hciEvtNumCompletedPacketsItem items[];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Mode_Change 0x14
|
|
struct hciEvtModeChange {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t mode; /* HCI_CUR_MODE_* */
|
|
uint16_t interval; /* in units of 0.625ms 0..0xffff */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Return_Link_Keys 0x15
|
|
struct hciEvtReturnLinkKeysItem {
|
|
uint8_t mac[6];
|
|
uint8_t key[16];
|
|
} __packed;
|
|
struct hciEvtReturnLinkKeys {
|
|
uint8_t numKeys;
|
|
struct hciEvtReturnLinkKeysItem items[];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_PIN_Code_Request 0x16
|
|
struct hciEvtPinCodeReq {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Link_Key_Request 0x17
|
|
struct hciEvtLinkKeyReq {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Link_Key_Notification 0x18
|
|
struct hciEvtLinkKeyNotif {
|
|
uint8_t mac[6];
|
|
uint8_t key[16];
|
|
uint8_t keyType; /* HCI_KEY_TYPE_ */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Loopback_Command 0x19
|
|
/* data is the sent command, up to 252 bytes of it */
|
|
|
|
#define HCI_EVT_Data_Buffer_Overflow 0x1A
|
|
struct hciEvtDataBufferOverflow {
|
|
uint8_t aclLink;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Max_Slots_Change 0x1B
|
|
struct hciEvtMaxSlotsChange {
|
|
uint16_t conn;
|
|
uint8_t lmpMaxSlots;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Read_Clock_Offset_Complete 0x1C
|
|
struct hciEvtReadClockOffsetComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t clockOffset;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Connection_Packet_Type_Changed 0x1D
|
|
struct hciEvtConnPacketTypeChanged {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t packetsAllowed; /* HCI_PKT_TYP_* */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_QoS_Violation 0x1E
|
|
struct hciEvtQosViolation {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Page_Scan_Mode_Change 0x1F /* deprecated in BT 1.2+ */
|
|
struct hciEvtPsmChange {
|
|
uint8_t mac[6];
|
|
uint8_t PSM;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Page_Scan_Repetition_Mode_Change 0x20
|
|
struct hciEvtPrsmChange {
|
|
uint8_t mac[6];
|
|
uint8_t PSRM;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 1.2 ==== */
|
|
|
|
#define HCI_EVT_Flow_Specification_Complete 0x21
|
|
struct hciEvtFlowSpecComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t flags;
|
|
uint8_t flowDirection;
|
|
uint8_t serviceType;
|
|
uint32_t tokenRate;
|
|
uint32_t peakBandwidth;
|
|
uint32_t latency;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Inquiry_Result_With_RSSI 0x22
|
|
struct hciEvtInquiryResultWithRssiItem {
|
|
uint8_t mac[6];
|
|
uint8_t PSRM;
|
|
uint8_t PSPM;
|
|
uint8_t deviceClass[3];
|
|
uint16_t clockOffset;
|
|
uint8_t RSSI; /* actually a int8_t */
|
|
} __packed;
|
|
struct hciEvtInquiryResultWithRssi {
|
|
uint8_t numResponses;
|
|
struct hciEvtInquiryResultWithRssiItem items[];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Read_Remote_Extended_Features_Complete 0x23
|
|
struct hciEvtReadRemoteExtFeturesComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t pageNum;
|
|
uint8_t maxPageNum;
|
|
uint64_t extLmpFeatures; /* HCI_LMP_EXT_FTR_P* & HCI_LMP_FTR_* */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Synchronous_Connection_Complete 0x2C
|
|
struct hciEvtSyncConnComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t mac[6];
|
|
uint8_t linkType; /* HCI_SCO_LINK_TYPE_* */
|
|
uint8_t interval;
|
|
uint8_t retrWindow;
|
|
uint16_t rxPacketLen;
|
|
uint16_t txPacketLen;
|
|
uint8_t airMode; /* HCI_SCO_AIR_MODE_* */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Synchronous_Connection_Changed 0x2D
|
|
struct hciEvtSyncConnChanged {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t interval;
|
|
uint8_t retrWindow;
|
|
uint16_t rxPacketLen;
|
|
uint16_t txPacketLen;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 2.1 ==== */
|
|
|
|
#define HCI_EVT_Sniff_Subrating 0x2E
|
|
struct hciEvtSniffSubrating {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t maxTxLatency;
|
|
uint16_t maxRxLatency;
|
|
uint16_t minRemoteTimeout;
|
|
uint16_t minLocalTimeout;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Extended_Inquiry_Result 0x2F
|
|
struct hciEvtExtendedInquiryResult {
|
|
uint8_t numResponses; /* must be 1 */
|
|
uint8_t mac[6];
|
|
uint8_t PSRM;
|
|
uint8_t reserved;
|
|
uint8_t deviceClass[3];
|
|
uint16_t clockOffset;
|
|
uint8_t RSSI; /* actually a int8_t */
|
|
uint8_t EIR[240];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Encryption_Key_Refresh_Complete 0x30
|
|
struct hciEvtEncrKeyRefreshComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_IO_Capability_Request 0x31
|
|
struct hciEvtIoCapRequest {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_IO_Capability_Response 0x32
|
|
struct hciEvtIoCapResponse {
|
|
uint8_t mac[6];
|
|
uint8_t ioCapability; /* HCI_DISPLAY_CAP_* */
|
|
uint8_t oobDataPresent;
|
|
uint8_t authReqments; /* HCI_AUTH_REQMENT_ */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_User_Confirmation_Request 0x33
|
|
struct hciEvtUserConfRequest {
|
|
uint8_t mac[6];
|
|
uint32_t numericValue;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_User_Passkey_Request 0x34
|
|
struct hciEvtUserPasskeyRequest {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Remote_OOB_Data_Request 0x35
|
|
struct hciEvtRemoteOobRequest {
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Simple_Pairing_Complete 0x36
|
|
struct hciEvtSimplePairingComplete {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Link_Supervision_Timeout_Changed 0x38
|
|
struct hciEvtLinkSupervisionTimeoutChanged {
|
|
uint16_t conn;
|
|
uint16_t timeout; /* in units of 0.625 ms 1..0xffff */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Enhanced_Flush_Complete 0x39
|
|
struct hciEvtEnahncedFlushComplete {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_User_Passkey_Notification 0x3B
|
|
struct hciEvtUserPasskeyNotif {
|
|
uint8_t mac[6];
|
|
uint32_t passkey;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Keypress_Notification 0x3C
|
|
struct hciEvtKeypressNotification {
|
|
uint8_t mac[6];
|
|
uint8_t notifType; /* HCI_SSP_KEY_ENTRY_* */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Remote_Host_Supported_Features_Notification 0x3D
|
|
struct hciEvtRemoteHostSupportedFeatures {
|
|
uint8_t mac[6];
|
|
uint64_t hostSupportedFeatures; /* HCI_LMP_FTR_* */
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 3.0 ==== */
|
|
|
|
#define HCI_EVT_Physical_Link_Complete 0x40
|
|
struct hciEvtPhysLinkComplete {
|
|
uint8_t status;
|
|
uint8_t physLinkHandle;
|
|
} __packed;
|
|
|
|
#define HIC_EVT_Channel_Selected 0x41
|
|
struct hciEvtChannelSelected {
|
|
uint8_t physLinkHandle;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Disconnection_Physical_Link_Complete 0x42
|
|
struct hciEvtDiscPhysLinkComplete {
|
|
uint8_t status;
|
|
uint8_t physLinkHandle;
|
|
uint8_t reason;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Physical_Link_Loss_Early_Warning 0x43
|
|
struct hciEvtDiscPhysLinkLossEralyWarning {
|
|
uint8_t physLinkHandle;
|
|
uint8_t lossReason;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Physical_Link_Recovery 0x44
|
|
struct hciEvtDiscPhysLinkRecovery {
|
|
uint8_t physLinkHandle;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Logical_Link_Complete 0x45
|
|
struct hciEvtLogicalLinkComplete {
|
|
uint8_t status;
|
|
uint16_t logicalLinkHandle;
|
|
uint8_t physLinkHandle;
|
|
uint8_t txFlowSpecID;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Disconnection_Logical_Link_Complete 0x46
|
|
struct hciEvtDiscLogicalLinkComplete {
|
|
uint8_t status;
|
|
uint16_t logicalLinkHandle;
|
|
uint8_t reason;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Flow_Spec_Modify_Complete 0x47
|
|
struct hciEvtFlowSpecModifyComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Number_Of_Completed_Data_Blocks 0x48
|
|
struct hciEvtNumCompletedDataBlocksItem {
|
|
uint16_t conn;
|
|
uint16_t numPackets;
|
|
} __packed;
|
|
struct hciEvtNumCompletedDataBlocks {
|
|
uint16_t totalNumBlocks;
|
|
uint8_t numberOfHandles;
|
|
struct hciEvtNumCompletedDataBlocksItem items[];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_AMP_Start_Test 0x49
|
|
struct hciEvtAmpStartTest {
|
|
uint8_t status;
|
|
uint8_t scenario;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_AMP_Test_End 0x4A
|
|
struct hciEvtAmpTestEnd {
|
|
uint8_t status;
|
|
uint8_t scenario;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_AMP_Receiver_Report 0x4B
|
|
struct hciEvtampReceiverReport {
|
|
uint8_t controllerType;
|
|
uint8_t reason;
|
|
uint32_t eventType;
|
|
uint16_t numberOfFrames;
|
|
uint16_t numberOfErrorFrames;
|
|
uint32_t numberOfBits;
|
|
uint32_t numberOfErrorBits;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Short_Range_Mode_Change_Complete 0x4C
|
|
struct hciEvtshortRangeModeChangeComplete {
|
|
uint8_t status;
|
|
uint8_t physLinkHandle;
|
|
uint8_t shortRangeModeOn;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_AMP_Status_Change 0x4D
|
|
struct hciEvtAmpStatusChange {
|
|
uint8_t status;
|
|
uint8_t ampStatus;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 4.0 ==== */
|
|
|
|
#define HCI_EVT_LE_Meta 0x3E
|
|
struct hciEvtLeMeta {
|
|
uint8_t subevent;
|
|
} __packed;
|
|
|
|
#define HCI_EVTLE_Connection_Complete 0x01
|
|
struct hciEvtLeConnectionComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint8_t amSlave;
|
|
uint8_t peerAddrRandom;
|
|
uint8_t peerMac[6];
|
|
uint16_t connInterval; /* in units of 1.25 ms 6..0x0C80 */
|
|
uint16_t connLatency; /* 0..0x01f3 */
|
|
uint16_t supervisionTimeout; /* inunit sof 10ms, 0xA..0x0C80 */
|
|
uint8_t masterClockAccuracy; /* HCI_MCA_* */
|
|
} __packed;
|
|
|
|
#define HCI_EVTLE_Advertising_Report 0x02
|
|
struct hciEvtLeAdvReportItem {
|
|
uint8_t advType; /* HCI_ADV_TYPE_* */
|
|
uint8_t randomAddr;
|
|
uint8_t mac[6];
|
|
uint8_t dataLen;
|
|
uint8_t data[];
|
|
/* int8_t RSSI <-- this cannot be here due to variable data len, but in reality it is there */
|
|
} __packed;
|
|
struct hciEvtLeAdvReport {
|
|
uint8_t numReports;
|
|
/* struct hciEvtLeAdvReportItem items[]; <- this cannot be here since data length is variable */
|
|
} __packed;
|
|
|
|
#define HCI_EVTLE_Connection_Update_Complete 0x03
|
|
struct hciEvtLeConnectionUpdateComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint16_t connInterval; /* in units of 1.25 ms 6..0x0C80 */
|
|
uint16_t connLatency; /* 0..0x01f3 */
|
|
uint16_t supervisionTimeout; /* inunit sof 10ms, 0xA..0x0C80 */
|
|
} __packed;
|
|
|
|
#define HCI_EVTLE_Read_Remote_Used_Features_Complete 0x04
|
|
struct hciEvtLeReadRemoteFeaturesComplete {
|
|
uint8_t status;
|
|
uint16_t conn;
|
|
uint64_t leFeatures; /* bitmask of HCI_LE_FTR_* */
|
|
} __packed;
|
|
|
|
#define HCI_EVTLE_LTK_Request 0x05
|
|
struct hciEvtLeLtkRequest {
|
|
uint16_t conn;
|
|
uint64_t randomNum;
|
|
uint16_t diversifier;
|
|
} __packed;
|
|
|
|
|
|
/* ==== BT 4.1 ==== */
|
|
|
|
#define HCI_EVTLE_Read_Remote_Connection_Parameter_Request 0x06
|
|
struct hciEvtLeReadRemoteConnParamRequest {
|
|
uint16_t conn;
|
|
uint16_t connIntervalMin; /* in units of 1.25 ms 6..0x0C80 */
|
|
uint16_t connIntervalMax; /* in units of 1.25 ms 6..0x0C80 */
|
|
uint16_t connLatency; /* 0..0x01f3 */
|
|
uint16_t supervisionTimeout; /* inunit sof 10ms, 0xA..0x0C80 */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Triggered_Clock_Capture 0x4E
|
|
struct hciEvtTriggeredClockCapture {
|
|
uint16_t conn;
|
|
uint8_t piconetClock;
|
|
uint32_t clock;
|
|
uint16_t slotOffset;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Synchronization_Train_Complete 0x4F
|
|
struct hciEvtSyncTrainComplete {
|
|
uint8_t status;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Synchronization_Train_Received 0x50
|
|
struct hciEvtSyncTrainReceived {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
uint32_t offset;
|
|
uint8_t afhChannelMap[10];
|
|
uint8_t ltAddr;
|
|
uint32_t nextBroadcastInstant;
|
|
uint16_t connectionlessSlaveBroadcastInterval;
|
|
uint8_t serviceData;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Connectionless_Slave_Broadcast_Receive 0x51
|
|
struct hciEvtConnectionlessSlaveBroadcastReceive {
|
|
uint8_t mac[6];
|
|
uint8_t ltAddr;
|
|
uint32_t clk;
|
|
uint32_t offset;
|
|
uint8_t rxFailed;
|
|
uint8_t fragment; /* HCI_CONNLESS_FRAG_TYPE_* */
|
|
uint8_t dataLen;
|
|
/* data */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Connectionless_Slave_Broadcast_Timeout 0x52
|
|
struct hciEvtConnectionlessSlaveBroadcastTimeout {
|
|
uint8_t mac[6];
|
|
uint8_t ltAddr;
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Truncated_Page_Complete 0x53
|
|
struct hciEvtTruncatedPageComplete {
|
|
uint8_t status;
|
|
uint8_t mac[6];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Slave_Page_Response_Timeout 0x54
|
|
|
|
#define HCI_EVT_Connless_Slave_Broadcast_Channel_Map_Change 0x55
|
|
struct hciEvtConnlessSlaveBroadcastChannelMapChange {
|
|
uint8_t map[10];
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Inquiry_Response_Notification 0x56
|
|
struct hciEvtInquiryResponseNotif {
|
|
uint8_t lap[3];
|
|
uint8_t RSSI; /* actually an int8_t */
|
|
} __packed;
|
|
|
|
#define HCI_EVT_Authenticated_Payload_Timeout_Expired 0x57
|
|
struct hciEvtAuthedPayloadTimeoutExpired {
|
|
uint16_t conn;
|
|
} __packed;
|
|
|
|
|
|
|
|
|
|
|
|
/* ERROR CODES */
|
|
|
|
/* ==== BT 1.1 ==== */
|
|
|
|
#define HCI_SUCCESS 0x00
|
|
#define HCI_ERR_Unknown_HCI_Command 0x01
|
|
#define HCI_ERR_No_Connection 0x02
|
|
#define HCI_ERR_Hardware_Failure 0x03
|
|
#define HCI_ERR_Page_Timeout 0x04
|
|
#define HCI_ERR_Authentication_Failure 0x05
|
|
#define HCI_ERR_Key_Missing 0x06
|
|
#define HCI_ERR_Memory_Full 0x07
|
|
#define HCI_ERR_Connection_Timeout 0x08
|
|
#define HCI_ERR_Max_Number_Of_Connections 0x09
|
|
#define HCI_ERR_Max_Number_Of_SCO_Connections_To_A_Device 0x0A
|
|
#define HCI_ERR_ACL_Connection_Already_Exists 0x0B
|
|
#define HCI_ERR_Command_Disallowed 0x0C
|
|
#define HCI_ERR_Host_Rejected_Due_To_Limited_Resources 0x0D
|
|
#define HCI_ERR_Host_Rejected_Due_To_Security_Reasons 0x0E
|
|
#define HCI_ERR_Host_Rejected_Remote_Device_Personal_Device 0x0F
|
|
#define HCI_ERR_Host_Timeout 0x10
|
|
#define HCI_ERR_Unsupported_Feature_Or_Parameter_Value 0x11
|
|
#define HCI_ERR_Invalid_HCI_Command_Parameters 0x12
|
|
#define HCI_ERR_Other_End_Terminated_Connection_User_Requested 0x13
|
|
#define HCI_ERR_Other_End_Terminated_Connection_Low_Resources 0x14
|
|
#define HCI_ERR_Other_End_Terminated_Connection_Soon_Power_Off 0x15
|
|
#define HCI_ERR_Connection_Terminated_By_Local_Host 0x16
|
|
#define HCI_ERR_Repeated_Attempts 0x17
|
|
#define HCI_ERR_Pairing_Not_Allowed 0x18
|
|
#define HCI_ERR_Unknown_LMP_PDU 0x19
|
|
#define HCI_ERR_Unsupported_Remote_Feature 0x1A
|
|
#define HCI_ERR_SCO_Offset_Rejected 0x1B
|
|
#define HCI_ERR_SCO_Interval_Rejected 0x1C
|
|
#define HCI_ERR_SCO_Air_Mode_Rejected 0x1D
|
|
#define HCI_ERR_Invalid_LMP_Parameters 0x1E
|
|
#define HCI_ERR_Unspecified_Error 0x1F
|
|
#define HCI_ERR_Unsupported_LMP_Parameter 0x20
|
|
#define HCI_ERR_Role_Change_Not_Allowed 0x21
|
|
#define HCI_ERR_LMP_Response_Timeout 0x22
|
|
#define HCI_ERR_LMP_Error_Transaction_Collision 0x23
|
|
#define HCI_ERR_LMP_PDU_Not_Allowed 0x24
|
|
#define HCI_ERR_Encryption_Mode_Not_Acceptable 0x25
|
|
#define HCI_ERR_Unit_Key_Used 0x26
|
|
#define HCI_ERR_QoS_Not_Supported 0x27
|
|
#define HCI_ERR_Instant_Passed 0x28
|
|
#define HCI_ERR_Pairing_With_Unit_Key_Not_Supported 0x29
|
|
|
|
|
|
/* ==== BT 1.2 ==== */
|
|
|
|
#define HCI_ERR_Different_Transaction_Collision 0x2A
|
|
#define HCI_ERR_QoS_Unacceptable_Parameter 0x2C
|
|
#define HCI_ERR_QoS_Rejected 0x2D
|
|
#define HCI_ERR_Channel_Classification_Not_Supported 0x2E
|
|
#define HCI_ERR_Insufficient_Security 0x2F
|
|
#define HCI_ERR_Parameter_Out_Of_Mandatory_Range 0x30
|
|
#define HCI_ERR_Role_Switch_Pending 0x33
|
|
#define HCI_ERR_Reserved_Slot_Violation 0x34
|
|
#define HIC_ERR_Role_Switch_Failed 0x35
|
|
|
|
|
|
/* ==== BT 2.1 ==== */
|
|
|
|
#define HCI_ERR_EIR_Too_Large 0x36
|
|
#define HCI_ERR_SSP_Not_Supported_By_Host 0x37
|
|
#define HCI_ERR_Host_Busy_Pairing 0x38
|
|
|
|
|
|
/* ==== BT 3.0 ==== */
|
|
|
|
#define HCI_ERR_Connection_Rejected_No_Suitable_Channel_Found 0x39
|
|
#define HCI_ERR_Controller_Busy 0x3A
|
|
|
|
|
|
/* ==== BT 4.0 ==== */
|
|
|
|
#define HCI_ERR_Unacceptable_Connection_Interval 0x3B
|
|
#define HCI_ERR_Directed_Advertising_Timeout 0x3C
|
|
#define HCI_ERR_Connection_Terminated_Due_To_MIC_Failure 0x3D
|
|
#define HCI_ERR_Connection_Failed_To_To_Established 0x3E
|
|
#define HCI_ERR_MAC_Connection_Failed 0x3F
|
|
|
|
|
|
/* ==== BT 4.1 ==== */
|
|
|
|
#define HCI_ERR_CoarseClock_AdjFailed_Will_Try_clock_Dragging 0x40
|
|
|
|
|
|
|
|
#endif
|
|
|