| # Copyright 2023 The Pigweed Authors |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); you may not |
| # use this file except in compliance with the License. You may obtain a copy of |
| # the License at |
| # |
| # https://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT |
| # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the |
| # License for the specific language governing permissions and limitations under |
| # the License. |
| |
| # This file contains Emboss definitions for Host Controller Interface packets |
| # and types found in the Bluetooth Core Specification. The Emboss compiler is |
| # used to generate a C++ header from this file. |
| |
| import "hci_common.emb" as hci |
| |
| [$default byte_order: "LittleEndian"] |
| [(cpp) namespace: "pw::bluetooth::emboss"] |
| # =========================== Constants ================================= |
| |
| |
| enum InquiryAccessCode: |
| -- General- and Device-specific Inquiry Access Codes (DIACs) for use in Inquiry |
| -- command LAP fields. |
| -- (https://www.bluetooth.com/specifications/assigned-numbers/baseband) |
| [maximum_bits: 24] |
| GIAC = 0x9E8B33 |
| -- General Inquiry Access Code |
| |
| LIAC = 0x9E8B00 |
| -- Limited Dedicated Inquiry Access Code |
| |
| |
| enum PcmDataFormat: |
| -- PCM data formats from assigned numbers. |
| -- (https://www.bluetooth.com/specifications/assigned-numbers/host-controller-interface) |
| [maximum_bits: 8] |
| NOT_APPLICABLE = 0x00 |
| ONES_COMPLEMENT = 0x01 |
| TWOS_COMPLEMENT = 0x02 |
| SIGN_MAGNITUDE = 0x03 |
| UNSIGNED = 0x04 |
| |
| |
| enum ScoDataPath: |
| [maximum_bits: 8] |
| HCI = 0x00 |
| AUDIO_TEST_MODE = 0xFF |
| -- 0x01 - 0xFE specify the logical channel number (vendor specific) |
| |
| |
| enum PageTimeout: |
| [maximum_bits: 16] |
| MIN = 0x0001 |
| MAX = 0xFFFF |
| DEFAULT = 0x2000 |
| |
| |
| enum ScanInterval: |
| -- The minimum and maximum range values for Page and Inquiry Scan Interval (in time slices) |
| -- Page Scan Interval: (see Core Spec v5.0, Vol 2, Part E, Section 7.3.19) |
| -- Inquiry Scan Interval: (see Core Spec v5.0, Vol 2, Part E, Section 7.3.21) |
| [maximum_bits: 16] |
| MIN = 0x0012 |
| MAX = 0x1000 |
| |
| |
| enum ScanWindow: |
| -- The minimum and maximum range valeus for Page and Inquiry Scan Window (in time slices) |
| -- Page Scan Window: (see Core Spec v5.0, Vol 2, Part E, Section 7.3.19) |
| -- Inquiry Scan Window: (see Core Spec v5.0, Vol 2, Part E, Section 7.3.21) |
| [maximum_bits: 16] |
| MIN = 0x0011 |
| MAX = 0x1000 |
| |
| |
| bits ScoPacketType: |
| -- Bitmask of SCO packet types. |
| # SCO packet types |
| 0 [+1] Flag hv1 |
| $next [+1] Flag hv2 |
| $next [+1] Flag hv3 |
| # eSCO packet types |
| $next [+1] Flag ev3 |
| $next [+1] Flag ev4 |
| $next [+1] Flag ev5 |
| $next [+1] Flag not_2_ev3 |
| $next [+1] Flag not_3_ev3 |
| $next [+1] Flag not_2_ev5 |
| $next [+1] Flag not_3_ev5 |
| $next [+6] UInt padding |
| |
| |
| bits PacketType: |
| -- Bitmask values for supported Packet Types |
| -- Used for HCI_Create_Connection and HCI_Change_Connection_Packet_Type |
| -- All other bits reserved for future use. |
| 1 [+1] Flag disable_2_dh1 |
| 2 [+1] Flag disable_3_dh1 |
| 3 [+1] Flag enable_dm1 # Note: always on in >= v1.2 |
| 4 [+1] Flag enable_dh1 |
| 8 [+1] Flag disable_2_dh3 |
| 9 [+1] Flag disable_3_dh3 |
| 10 [+1] Flag enable_dm3 |
| 11 [+1] Flag enable_dh3 |
| 12 [+1] Flag disable_2_dh5 |
| 13 [+1] Flag disable_3_dh5 |
| 14 [+1] Flag enable_dm5 |
| 15 [+1] Flag enable_dh5 |
| |
| |
| enum OobDataPresent: |
| -- Whether there is out-of-band data present, and what type. |
| -- All other values reserved for future use. |
| [maximum_bits: 8] |
| NOT_PRESENT = 0x00 |
| P192_ = 0x01 |
| P256_ = 0x02 |
| P192_AND_P256 = 0x03 |
| |
| |
| bits ScanEnableBits: |
| -- Bitmask Values for the Scan_Enable parameter in a |
| -- HCI_(Read,Write)_Scan_Enable command. |
| 0 [+1] Flag inquiry |
| -- Inquiry scan enabled |
| |
| $next [+1] Flag page |
| -- Page scan enabled |
| |
| $next [+6] UInt padding |
| |
| |
| enum InquiryScanType: |
| [maximum_bits: 8] |
| STANDARD = 0x00 |
| -- Standard scan (Default) (Mandatory) |
| |
| INTERLACED = 0x01 |
| |
| |
| struct LocalName: |
| 0 [+248] UInt:8[248] local_name |
| |
| |
| struct ExtendedInquiryResponse: |
| 0 [+240] UInt:8[240] extended_inquiry_response |
| |
| |
| enum LEExtendedDuplicateFilteringOption: |
| -- Possible values that can be used for the |filter_duplicates| parameter in a |
| -- HCI_LE_Set_Extended_Scan_Enable command. |
| [maximum_bits: 8] |
| DISABLED = 0x00 |
| ENABLED = 0x01 |
| ENABLED_RESET_FOR_EACH_SCAN_PERIOD = 0x02 |
| -- Duplicate advertisements in a single scan period should not be sent to the |
| -- Host in advertising report events; this setting shall only be used if the |
| -- Period parameter is non-zero. |
| |
| |
| enum LEPeriodicAdvertisingCreateSyncUseParams: |
| [maximum_bits: 1] |
| |
| USE_PARAMS = 0x00 |
| -- Use the Advertising_SID, Advertiser_Address_Type, and Adertiser_Address parameters to |
| -- determine which advertiser to listen to. |
| |
| USE_PERIODIC_ADVERTISER_LIST = 0x01 |
| -- Use the Periodic Advertiser List to determine which advertiser to listen to. |
| |
| |
| bits LEPeriodicAdvertisingCreateSyncOptions: |
| -- First parameter to the LE Periodic Advertising Create Sync command |
| |
| 0 [+1] LEPeriodicAdvertisingCreateSyncUseParams advertiser_source |
| |
| $next [+1] Flag enable_reporting |
| -- 0: Reporting initially enabled |
| -- 1: Reporting initially disabled |
| |
| $next [+1] Flag enable_duplicate_filtering |
| -- 0: Duplicate filtering initially disabled |
| -- 1: Duplicate filtering initially enabled |
| |
| $next [+5] UInt padding |
| -- Reserved for future use |
| |
| |
| enum LEPeriodicAdvertisingAddressType: |
| -- Possible values that can be specified for the |advertiser_address_type| in an LE Periodic |
| -- Advertising Create Sync command. |
| [maximum_bits: 8] |
| PUBLIC = 0x00 |
| -- Public Device Address or Public Identity Address |
| |
| RANDOM = 0x01 |
| -- Random Device Address or Random (static) Identity Address |
| |
| |
| bits LEPeriodicAdvertisingSyncCTEType: |
| -- Bit definitions for a |sync_cte_type| field in an LE Periodic Advertising Create Sync command |
| |
| 0 [+1] Flag dont_sync_aoa |
| -- Do not sync to packets with an AoA Constant Tone Extension |
| |
| $next [+1] Flag dont_sync_aod_1us |
| -- Do not sync to packets with an AoD Constant Tone Extension with 1 microsecond slots |
| |
| $next [+1] Flag dont_sync_aod_2us |
| -- Do not sync to packets with an AoD Constant Tone Extension with 2 microsecond slots |
| |
| $next [+1] Flag dont_sync_type_3 |
| -- Do not sync to packets with a typoe 3 Constant Tone Extension (currently reserved for future |
| -- use) |
| |
| $next [+1] Flag dont_sync_without_cte |
| -- Do not sync to packets without a Constant Tone Extension |
| |
| $next [+3] UInt padding |
| -- Reserved for future use |
| |
| |
| enum LEOwnAddressType: |
| -- Possible values that can be used for the |own_address_type| parameter in various LE packets. |
| |
| [maximum_bits: 8] |
| |
| PUBLIC = 0x00 |
| -- Public Device Address |
| |
| RANDOM = 0x01 |
| -- Random Device Address |
| |
| PRIVATE_DEFAULT_TO_PUBLIC = 0x02 |
| -- Controller generates the Resolvable Private Address based on the local IRK from the resolving |
| -- list. If the resolving list contains no matching entry, then use the public address. |
| |
| PRIVATE_DEFAULT_TO_RANDOM = 0x03 |
| -- Controller generates the Resolvable Private Address based on the local IRK from the resolving |
| -- list. If the resolving list contains no matching entry, then use the random address from |
| -- LE_Set_Random_Address. |
| |
| |
| enum LEScanType: |
| -- Possible values that can be used for the |scan_type| parameter in various LE HCI commands. |
| [maximum_bits: 8] |
| PASSIVE = 0x00 |
| -- Passive Scanning. No scanning PDUs shall be sent (default) |
| |
| ACTIVE = 0x01 |
| -- Active scanning. Scanning PDUs may be sent. |
| |
| |
| enum LEScanFilterPolicy: |
| -- Possible values that can be used for the |filter_policy| parameter in various LE HCI commands |
| [maximum_bits: 8] |
| BASIC_UNFILTERED = 0x00 |
| BASIC_FILTERED = 0x01 |
| EXTENDED_UNFILTERED = 0x02 |
| EXTENDED_FILTERED = 0x03 |
| |
| |
| bits LEScanPHYBits: |
| 0 [+1] Flag le_1m |
| -- Scan advertisements on the LE 1M PHY |
| |
| $next [+1] Flag padding1 |
| -- Reserved for future use |
| |
| $next [+1] Flag le_coded |
| -- Scan advertisements on the LE Coded PHY |
| |
| $next [+5] UInt padding2 |
| -- Reserved for future use |
| |
| |
| enum LEPrivacyMode: |
| -- Possible values for the |privacy_mode| parameter in an LE Set Privacy Mode |
| -- command |
| [maximum_bits: 8] |
| NETWORK = 0x00 |
| -- Use Network Privacy Mode for this peer device (default). |
| |
| DEVICE = 0x01 |
| -- Use Device Privacy Mode for this peer device. |
| |
| |
| enum InquiryMode: |
| [maximum_bits: 8] |
| STANDARD = 0x00 |
| -- Standard Inquiry Result format (default) |
| |
| RSSI = 0x01 |
| -- Inquiry Result format with RSSI |
| |
| EXTENDED = 0x02 |
| -- Inquiry Result format with RSSI or EIR format |
| |
| |
| enum PageScanType: |
| [maximum_bits: 8] |
| STANDARD_SCAN = 0x00 |
| -- Standard scan (default) (mandatory) |
| |
| INTERLACED_SCAN = 0x01 |
| -- Interlaced scan (optional) |
| |
| |
| bits LEEventMask: |
| 0 [+1] Flag le_connection_complete |
| $next [+1] Flag le_advertising_report |
| $next [+1] Flag le_connection_update_complete |
| $next [+1] Flag le_read_remote_features_complete |
| $next [+1] Flag le_long_term_key_request |
| $next [+1] Flag le_remote_connection_parameter_request |
| $next [+1] Flag le_data_length_change |
| $next [+1] Flag le_read_local_p256_public_key_complete |
| $next [+1] Flag le_generate_dhkey_complete |
| $next [+1] Flag le_enhanced_connection_complete |
| $next [+1] Flag le_directed_advertising_report |
| $next [+1] Flag le_phy_update_complete |
| $next [+1] Flag le_extended_advertising_report |
| $next [+1] Flag le_periodic_advertising_sync_established |
| $next [+1] Flag le_periodic_advertising_report |
| $next [+1] Flag le_periodic_advertising_sync_lost |
| $next [+1] Flag le_extended_scan_timeout |
| $next [+1] Flag le_extended_advertising_set_terminated |
| $next [+1] Flag le_scan_request_received |
| $next [+1] Flag le_channel_selection_algorithm |
| $next [+1] Flag le_connectionless_iq_report |
| $next [+1] Flag le_connection_iq_report |
| $next [+1] Flag le_cte_request_failed |
| $next [+1] Flag le_periodic_advertising_sync_transfer_received_event |
| $next [+1] Flag le_cis_established_event |
| $next [+1] Flag le_cis_request_event |
| $next [+1] Flag le_create_big_complete_event |
| $next [+1] Flag le_terminate_big_complete_event |
| $next [+1] Flag le_big_sync_established_event |
| $next [+1] Flag le_big_sync_lost_event |
| $next [+1] Flag le_request_peer_sca_complete_event |
| $next [+1] Flag le_path_loss_threshold_event |
| $next [+1] Flag le_transmit_power_reporting_event |
| $next [+1] Flag le_biginfo_advertising_report_event |
| $next [+1] Flag le_subrate_change_event |
| |
| |
| enum LEAdvertisingType: |
| [maximum_bits: 8] |
| CONNECTABLE_AND_SCANNABLE_UNDIRECTED = 0x00 |
| -- ADV_IND |
| |
| CONNECTABLE_HIGH_DUTY_CYCLE_DIRECTED = 0x01 |
| -- ADV_DIRECT_IND |
| |
| SCANNABLE_UNDIRECTED = 0x02 |
| -- ADV_SCAN_IND |
| |
| NOT_CONNECTABLE_UNDIRECTED = 0x03 |
| -- ADV_NONCONN_IND |
| |
| CONNECTABLE_LOW_DUTY_CYCLE_DIRECTED = 0x04 |
| -- ADV_DIRECT_IND |
| |
| |
| bits LEAdvertisingChannels: |
| 0 [+1] Flag channel_37 |
| $next [+1] Flag channel_38 |
| $next [+1] Flag channel_39 |
| |
| |
| enum LEAdvertisingFilterPolicy: |
| [maximum_bits: 8] |
| |
| ALLOW_ALL = 0x00 |
| -- Process scan and connection requests from all devices (i.e., the Filter |
| -- Accept List is not in use) (default). |
| |
| ALLOW_ALL_CONNECTIONS_AND_USE_FILTER_ACCEPT_LIST_FOR_SCANS = 0x01 |
| -- Process connection requests from all devices and scan requests only from |
| -- devices that are in the Filter Accept List. |
| |
| ALLOW_ALL_SCANS_AND_USE_FILTER_ACCEPT_LIST_FOR_CONNECTIONS = 0x02 |
| -- Process scan requests from all devices and connection requests only from |
| -- devices that are in the Filter Accept List. |
| |
| ALLOW_FILTER_ACCEPT_LIST_ONLY = 0x03 |
| -- Process scan and connection requests only from devices in the Filter |
| -- Accept List. |
| |
| |
| enum ScanRequestNotifications: |
| [maximum_bits: 8] |
| DISABLED = 0x00 |
| ENABLED = 0x01 |
| |
| |
| enum LESetExtendedAdvDataOp: |
| -- Potential values for the Operation parameter in a HCI_LE_Set_Extended_Advertising_Data command. |
| [maximum_bits: 8] |
| INTERMEDIATE_FRAGMENT = 0x00 |
| -- Intermediate fragment of fragmented extended advertising data. |
| |
| FIRST_FRAGMENT = 0x01 |
| -- First fragment of fragmented extended advertising data. |
| |
| LAST_FRAGMENT = 0x02 |
| -- Last fragment of fragmented extended advertising data. |
| |
| COMPLETE = 0x03 |
| -- Complete extended advertising data. |
| |
| UNCHANGED_DATA = 0x04 |
| -- Unchanged data (just update the Advertising DID) |
| |
| |
| enum LEExtendedAdvFragmentPreference: |
| -- Potential values for the Fragment_Preference parameter in a |
| -- HCI_LE_Set_Extended_Advertising_Data command. |
| [maximum_bits: 8] |
| MAY_FRAGMENT = 0x00 |
| -- The Controller may fragment all Host advertising data |
| |
| SHOULD_NOT_FRAGMENT = 0x01 |
| -- The Controller should not fragment or should minimize fragmentation of Host advertising data |
| |
| |
| bits LEAdvertisingEventProperties: |
| -- The Advertising_Event_Properties bitfield values used in a HCI LE Set Extended Advertising |
| -- Parameters command. |
| 0 [+1] Flag connectable |
| $next [+1] Flag scannable |
| $next [+1] Flag directed |
| $next [+1] Flag high_duty_cycle_directed_connectable |
| $next [+1] Flag use_legacy_pdus |
| $next [+1] Flag anonymous_advertising |
| $next [+1] Flag include_tx_power |
| |
| |
| enum FlowControlMode: |
| [maximum_bits: 8] |
| PACKET_BASED = 0x00 |
| DATA_BLOCK_BASED = 0x01 |
| |
| |
| bits EventMaskPage2: |
| 8 [+1] Flag number_of_completed_data_blocks_event |
| 14 [+1] Flag triggered_clock_capture_event |
| 15 [+1] Flag synchronization_train_complete_event |
| 16 [+1] Flag synchronization_train_received_event |
| 17 [+1] Flag connectionless_peripheral_broadcast_receive_event |
| 18 [+1] Flag connectionless_peripheral_broadcast_timeout_event |
| 19 [+1] Flag truncated_page_complete_event |
| 20 [+1] Flag peripheral_page_response_timeout_event |
| 21 [+1] Flag connectionless_peripheral_broadcast_channel_map_event |
| 22 [+1] Flag inquiry_response_notification_event |
| 23 [+1] Flag authenticated_payload_timeout_expired_event |
| 24 [+1] Flag sam_status_change_event |
| 25 [+1] Flag encryption_change_event_v2 |
| |
| |
| bits LECISPHYOptions: |
| -- Identifies PHYs that can be used for transmission |
| 0 [+1] Flag le_1m |
| $next [+1] Flag le_2m |
| $next [+1] Flag le_coded |
| $next [+5] UInt padding |
| |
| |
| struct LESetCIGParametersCISOptions: |
| -- Parameters for the CISes defined in a LESetCIGParametersCommand |
| |
| 0 [+1] UInt cis_id |
| -- Used to identify a CIS |
| [requires: 0x00 <= this <= 0xEF] |
| |
| $next [+2] UInt max_sdu_c_to_p |
| -- Maximum size, in octets, of the payload from the Central's Host |
| [requires: 0x0000 <= this <= 0x0FFF] |
| |
| $next [+2] UInt max_sdu_p_to_c |
| -- Maximum size, in octets, of the payload from the Peripheral's Host |
| [requires: 0x0000 <= this <= 0x0FFF] |
| |
| $next [+1] LECISPHYOptions phy_c_to_p |
| -- Identifies which PHY to use for transmission from the Central to the Peripheral |
| |
| $next [+1] LECISPHYOptions phy_p_to_c |
| -- Identifies which PHY to use for transmission from the Peripheral to the Central |
| |
| $next [+1] UInt rtn_c_to_p |
| -- Number of times every CIS Data PDU should be retransmitted from the Central to the |
| -- Peripheral |
| |
| $next [+1] UInt rtn_p_to_c |
| -- Number of times every CIS Data PDU should be retransmitted from the Peripheral to the |
| -- Central |
| |
| |
| enum LESleepClockAccuracyRange: |
| -- Accuracy of the sleep clock, provided as a range |
| [maximum_bits: 8] |
| PPM_251_TO_500 = 0x00 |
| PPM_151_TO_250 = 0x01 |
| PPM_101_TO_150 = 0x02 |
| PPM_76_TO_100 = 0x03 |
| PPM_51_TO_75 = 0x04 |
| PPM_31_TO_50 = 0x05 |
| PPM_21_TO_30 = 0x06 |
| PPM_0_TO_20 = 0x07 |
| |
| |
| enum LECISPacking: |
| -- Preferred method of arranging subevents of multiple CISes |
| [maximum_bits: 8] |
| SEQUENTIAL = 0x00 |
| INTERLEAVED = 0x01 |
| |
| |
| enum LECISFraming: |
| -- Format of CIS Data PDUs |
| [maximum_bits: 8] |
| UNFRAMED = 0x00 |
| FRAMED = 0x01 |
| |
| |
| enum DataPathDirection: |
| [maximum_bits: 8] |
| INPUT = 0x00 |
| -- Host to Controller |
| |
| OUTPUT = 0x01 |
| -- Controller to Host |
| |
| # ========================= HCI Command packets ========================= |
| # Core Spec v5.3 Vol 4, Part E, Section 7 |
| |
| # ========== 7.1 Link Control Commands ========== |
| |
| |
| struct InquiryCommand: |
| -- 7.1.1 Inquiry command (v1.1) (BR/EDR) |
| -- HCI_Inquiry |
| -- |
| -- Note: NO Command Complete; Sends Inquiry Complete at the end of the |
| -- inquiry to indicate it's completion. No Inquiry Complete event is sent if |
| -- Inquiry is cancelled. |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+3] InquiryAccessCode lap |
| -- LAP (Lower Address Part) |
| -- In the range 0x9E8B00 - 0x9E8B3F, defined by the Bluetooth SIG in |
| -- Baseband Assigned Numbers. |
| |
| $next [+1] UInt inquiry_length |
| -- Time before the inquiry is halted. Defined in 1.28s units. |
| -- Range: 0x01 to kInquiryLengthMax in hci_constants.h |
| |
| $next [+1] UInt num_responses |
| -- Maximum number of responses before inquiry is halted. |
| -- Set to 0x00 for unlimited. |
| |
| |
| struct InquiryCancelCommand: |
| -- 7.1.2 Inquiry Cancel command (v1.1) (BR/EDR) |
| -- HCI_Inquiry_Cancel |
| -- |
| -- No command parameters |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| # 7.1.3 Periodic Inquiry Mode command |
| # HCI_Periodic_Inquiry_Mode |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.4 Exit Periodic Inquiry Mode command |
| # HCI_Exit_Periodic_Inquiry_Mode |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct CreateConnectionCommand: |
| -- 7.1.5 Create Connection (v1.1) (BR/EDR) |
| -- HCI_Create_Connection |
| -- |
| -- NOTE on ReturnParams: No Command Complete event will be sent by the |
| -- Controller to indicate that this command has been completed. Instead, the |
| -- Connection Complete event will indicate that this command has been |
| -- completed. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- BD_ADDR of the device to be connected |
| |
| $next [+2] PacketType packet_type |
| -- Mask of allowable packet types. |
| |
| $next [+1] hci.PageScanRepetitionMode page_scan_repetition_mode |
| -- The Page Scan Repetition Mode of the remote device as retrieved by Inquiry. |
| |
| $next [+1] UInt reserved |
| [requires: this == 0] |
| |
| $next [+2] hci.ClockOffset clock_offset |
| -- Clock Offset. The lower 15 bits are set to the clock offset as retrieved |
| -- by an Inquiry. The highest bit is set to 1 if the rest of this parameter |
| -- is valid. |
| |
| $next [+1] hci.GenericEnableParam allow_role_switch |
| -- Allow Role Switch. |
| -- Allowed values: |
| -- 0x00 - No role switch allowed, this device will be the central |
| -- 0x01 - Role switch allowed, this device may become peripheral during |
| -- connection setup |
| |
| |
| struct DisconnectCommand: |
| -- 7.1.6 Disconnect command (v1.1) (BR/EDR & LE) |
| -- HCI_Disconnect |
| -- |
| -- NOTE on ReturnParams: No Command Complete event will be sent by the |
| -- Controller to indicate that this command has been completed. Instead, the |
| -- Disconnection Complete event will indicate that this command has been |
| -- completed. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection_Handle (only the lower 12-bits are meaningful). |
| -- Range: 0x0000 to 0x0EFF |
| |
| $next [+1] hci.StatusCode reason |
| -- Reason for the disconnect. |
| |
| |
| struct CreateConnectionCancelCommand: |
| -- 7.1.7 Create Connection Cancel command (v1.1) (BR/EDR) |
| -- HCI_Create_Connection_Cancel |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- BD_ADDR of the Create Connection Command request |
| |
| |
| struct AcceptConnectionRequestCommand: |
| -- 7.1.8 Accept Connection Request command (v1.1) (BR/EDR) |
| -- HCI_Accept_Connection_Request |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The 48-bit BD_ADDR of the remote device requesting the connection. |
| |
| $next [+1] hci.ConnectionRole role |
| |
| |
| struct RejectConnectionRequestCommand: |
| -- 7.1.9 Reject Connection Request command (v1.1) (BR/EDR) |
| -- HCI_Reject_Connection_Request |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The 48-bit BD_ADDR of the remote device requesting the connection. |
| |
| $next [+1] hci.StatusCode reason |
| -- Must be one of CONNECTION_REJECTED* from hci.StatusCode in this file |
| |
| |
| struct LinkKeyRequestReplyCommand: |
| -- 7.1.10 Link Key Request Reply command (v1.1) (BR/EDR) |
| -- HCI_Link_Key_Request_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The 48-bit BD_ADDR of the remote device requesting the connection. |
| |
| let bredr_link_key_size = hci.LinkKey.$size_in_bytes |
| $next [+bredr_link_key_size] hci.LinkKey link_key |
| -- Link key to use for the connection with the peer device. |
| |
| |
| struct LinkKeyRequestNegativeReplyCommand: |
| -- 7.1.11 Link Key Request Negative Reply command (v1.1) (BR/EDR) |
| -- HCI_Link_Key_Request_Negative_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- BD_ADDR of the peer device that the host does not have a link key for. |
| |
| # 7.1.12 PIN Code Request Reply command |
| # HCI_PIN_Code_Request_Reply |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.13 PIN Code Request Negative Reply command |
| # HCI_PIN_Code_Request_Negative_Reply |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.14 Change Connection Packet Type command |
| # HCI_Change_Connection_Packet_Type |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct AuthenticationRequestedCommand: |
| -- 7.1.15 Authentication Requested command (v1.1) (BR/EDR) |
| -- HCI_Authentication_Requested |
| -- |
| -- NOTE on ReturnParams: No Command Complete event will be sent by the |
| -- Controller to indicate that this command has been completed. Instead, the |
| -- Authentication Complete event will indicate that this command has been |
| -- completed. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection_Handle (only the lower 12-bits are meaningful). |
| -- Range: 0x0000 to 0x0EFF |
| -- Must be the handle of a connected ACL-U logical link. |
| |
| |
| struct SetConnectionEncryptionCommand: |
| -- 7.1.16 Set Connection Encryption command (v1.1) (BR/EDR) |
| -- HCI_Set_Connection_Encryption |
| -- |
| -- NOTE on ReturnParams: No Command Complete event will be sent by the |
| -- Controller to indicate that this command has been completed. Instead, the |
| -- Encryption Change event will indicate that this command has been completed. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection_Handle (only the lower 12-bits are meaningful). |
| -- Range: 0x0000 to 0x0EFF |
| -- Must be the handle of a connected ACL-U logical link. |
| |
| $next [+1] hci.GenericEnableParam encryption_enable |
| -- Whether link level encryption should be turned on or off. |
| |
| # 7.1.17 Change Connection Link Key command |
| # HCI_Change_Connection_Link_Key |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.18 Link Key Selection command |
| # HCI_Link_Key_Selection |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct RemoteNameRequestCommand: |
| -- 7.1.19 Remote Name Request command (v1.1) (BR/EDR) |
| -- HCI_Remote_Name_Request |
| -- |
| -- NOTE on ReturnParams: No Command Complete event will be sent by the |
| -- Controller to indicate that this command has been completed. Instead, the |
| -- Remote Name Request Complete event will indicate that this command has been |
| -- completed. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- Address of the device whose name is to be requested. |
| |
| $next [+1] hci.PageScanRepetitionMode page_scan_repetition_mode |
| -- Page Scan Repetition Mode of the device, obtained by Inquiry. |
| |
| $next [+1] UInt reserved |
| [requires: this == 0] |
| |
| $next [+2] hci.ClockOffset clock_offset |
| -- Clock offset. The lower 15 bits of this represent bits 16-2 |
| -- of CLKNPeripheral-CLK, and the highest bit is set when the other |
| -- bits are valid. |
| |
| # 7.1.20 Remote Name Request Cancel command |
| # HCI_Remote_Name_Request_Cancel |
| |
| |
| struct ReadRemoteSupportedFeaturesCommand: |
| -- 7.1.21 Read Remote Supported Features command (v1.1) (BR/EDR) |
| -- HCI_Read_Remote_Supported_Features |
| -- |
| -- NOTE on ReturnParams: No Command Complete event will be sent by the |
| -- Controller to indicate that this command has been completed. Instead, the |
| -- Read Remote Supported Features Complete event will indicate that this |
| -- command has been completed. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection_Handle (only the lower 12-bits are meaningful). |
| -- Range: 0x0000 to 0x0EFF |
| -- Must be the handle of a connected ACL-U logical link. |
| |
| |
| struct ReadRemoteExtendedFeaturesCommand: |
| -- 7.1.22 Read Remote Extended Features command (v1.2) (BR/EDR) |
| -- HCI_Read_Remote_Extended_Features |
| -- |
| -- NOTE on ReturnParams: No Command Complete event will be sent by the |
| -- Controller to indicate that this command has been completed. Instead, the |
| -- Read Remote Extended Features Complete event will indicate that this |
| -- command has been completed. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection_Handle (only the lower 12-bits are meaningful). |
| -- Range: 0x0000 to 0x0EFF |
| -- Must be the handle of a connected ACL-U logical link. |
| |
| $next [+1] UInt page_number |
| -- Page of features to read. |
| -- Values: |
| -- - 0x00 standard features as if requested by Read Remote Supported Features |
| -- - 0x01-0xFF the corresponding features page (see Vol 2, Part C, Sec 3.3). |
| |
| |
| struct ReadRemoteVersionInfoCommand: |
| -- 7.1.23 Read Remote Version Information command (v1.1) (BR/EDR & LE) |
| -- HCI_Read_Remote_Version_Information |
| -- |
| -- NOTE on ReturnParams: No Command Complete event will be sent by the |
| -- Controller to indicate that this command has been completed. Instead, the |
| -- Read Remote Version Information Complete event will indicate that this |
| -- command has been completed. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection_Handle (only the lower 12-bits are meaningful). |
| -- Range: 0x0000 to 0x0EFF |
| |
| # 7.1.24 Read Clock Offset command |
| # HCI_Read_Clock_Offset |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.25 Read LMP Handle command |
| # HCI_Read_LMP_Handle |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.26 Setup Synchronous Connection command |
| # HCI_Setup_Synchronous_Connection |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.27 Accept Synchronous Connection Request command |
| # HCI_Accept_Synchronous_Connection_Request |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct RejectSynchronousConnectionRequestCommand: |
| -- 7.1.28 Reject Synchronous Connection command (BR/EDR) |
| -- HCI_Reject_Synchronous_Connection_Request |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- Address of the remote device that sent the request. |
| |
| $next [+1] hci.StatusCode reason |
| -- Reason the connection request was rejected. |
| |
| |
| struct IoCapabilityRequestReplyCommand: |
| -- 7.1.29 IO Capability Request Reply command (v2.1 + EDR) (BR/EDR) |
| -- HCI_IO_Capability_Request_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The BD_ADDR of the remote device involved in simple pairing process |
| |
| $next [+1] hci.IoCapability io_capability |
| -- The IO capabilities of this device. |
| |
| $next [+1] OobDataPresent oob_data_present |
| -- Whether there is out-of-band data present, and what type. |
| |
| $next [+1] hci.AuthenticationRequirements authentication_requirements |
| -- Authentication requirements of the host. |
| |
| |
| struct UserConfirmationRequestReplyCommand: |
| -- 7.1.30 User Confirmation Request Reply command (v2.1 + EDR) (BR/EDR) |
| -- HCI_User_Confirmation_Request_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The BD_ADDR of the remote device involved in simple pairing process |
| |
| |
| struct UserConfirmationRequestNegativeReplyCommand: |
| -- 7.1.31 User Confirmation Request Negative Reply command (v2.1 + EDR) (BR/EDR) |
| -- HCI_User_Confirmation_Request_Negative_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The BD_ADDR of the remote device involved in simple pairing process |
| |
| |
| struct UserPasskeyRequestReplyCommand: |
| -- 7.1.32 User Passkey Request Reply command (v2.1 + EDR) (BR/EDR) |
| -- HCI_User_Passkey_Request_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The BD_ADDR of the remote device involved in simple pairing process |
| |
| $next [+4] UInt numeric_value |
| -- Numeric value (passkey) entered by user. |
| [requires: 0 <= this <= 999999] |
| |
| |
| struct UserPasskeyRequestNegativeReplyCommand: |
| -- 7.1.33 User Passkey Request Negative Reply command (v2.1 + EDR) (BR/EDR) |
| -- HCI_User_Passkey_Request_Negative_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The BD_ADDR of the remote device involved in the simple pairing process. |
| |
| # 7.1.34 Remote OOB Data Request Reply command |
| # HCI_Remote_OOB_Data_Request_Reply |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.35 Remote OOB Data Request Negative Reply command |
| # HCI_Remote_OOB_Data_Request_Negative_Reply |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct IoCapabilityRequestNegativeReplyCommand: |
| -- 7.1.36 IO Capability Request Negative Reply command (v2.1 + EDR) (BR/EDR) |
| -- HCI_IO_Capability_Request_Negative_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The BD_ADDR of the remote device involved in the simple pairing process. |
| |
| $next [+1] hci.StatusCode reason |
| -- Reason that Simple Pairing was rejected. See 7.1.36 for valid error codes. |
| |
| |
| struct CodecId: |
| 0 [+1] hci.CodingFormat coding_format |
| $next [+2] UInt company_id |
| -- See assigned numbers. |
| |
| $next [+2] UInt vendor_codec_id |
| -- Shall be ignored if |coding_format| is not VENDOR_SPECIFIC. |
| |
| |
| struct SynchronousConnectionParameters: |
| -- Enhanced Setup Synchronous Connection Command (CSA2) (BR/EDR) |
| |
| struct VendorCodingFormat: |
| 0 [+1] hci.CodingFormat coding_format |
| $next [+2] UInt company_id |
| -- See assigned numbers. |
| |
| $next [+2] UInt vendor_codec_id |
| -- Shall be ignored if |coding_format| is not VENDOR_SPECIFIC. |
| |
| enum ScoRetransmissionEffort: |
| [maximum_bits: 8] |
| NONE = 0x00 |
| -- SCO or eSCO |
| |
| POWER_OPTIMIZED = 0x01 |
| -- eSCO only |
| |
| QUALITY_OPTIMIZED = 0x02 |
| -- eSCO only |
| |
| DONT_CARE = 0xFF |
| -- SCO or eSCO |
| |
| 0 [+4] UInt transmit_bandwidth |
| -- Transmit bandwidth in octets per second. |
| |
| $next [+4] UInt receive_bandwidth |
| -- Receive bandwidth in octets per second. |
| |
| let vcf_size = VendorCodingFormat.$size_in_bytes |
| |
| $next [+vcf_size] VendorCodingFormat transmit_coding_format |
| -- Local Controller -> Remote Controller coding format. |
| |
| $next [+vcf_size] VendorCodingFormat receive_coding_format |
| -- Remote Controller -> Local Controller coding format. |
| |
| $next [+2] UInt transmit_codec_frame_size_bytes |
| |
| $next [+2] UInt receive_codec_frame_size_bytes |
| |
| $next [+4] UInt input_bandwidth |
| -- Host->Controller data rate in octets per second. |
| |
| $next [+4] UInt output_bandwidth |
| -- Controller->Host data rate in octets per second. |
| |
| $next [+vcf_size] VendorCodingFormat input_coding_format |
| -- Host->Controller coding format. |
| |
| $next [+vcf_size] VendorCodingFormat output_coding_format |
| -- Controller->Host coding format. |
| |
| $next [+2] UInt input_coded_data_size_bits |
| -- Size, in bits, of the sample or framed data. |
| |
| $next [+2] UInt output_coded_data_size_bits |
| -- Size, in bits, of the sample or framed data. |
| |
| $next [+1] PcmDataFormat input_pcm_data_format |
| |
| $next [+1] PcmDataFormat output_pcm_data_format |
| |
| $next [+1] UInt input_pcm_sample_payload_msb_position |
| -- The number of bit positions within an audio sample that the MSB of |
| -- the sample is away from starting at the MSB of the data. |
| |
| $next [+1] UInt output_pcm_sample_payload_msb_position |
| -- The number of bit positions within an audio sample that the MSB of |
| -- the sample is away from starting at the MSB of the data. |
| |
| $next [+1] ScoDataPath input_data_path |
| |
| $next [+1] ScoDataPath output_data_path |
| |
| $next [+1] UInt input_transport_unit_size_bits |
| -- The number of bits in each unit of data received from the Host over the audio data transport. |
| -- 0 indicates "not applicable" (implied by the choice of audio data transport). |
| |
| $next [+1] UInt output_transport_unit_size_bits |
| -- The number of bits in each unit of data sent to the Host over the audio data transport. |
| -- 0 indicates "not applicable" (implied by the choice of audio data transport). |
| |
| $next [+2] UInt max_latency_ms |
| -- The value in milliseconds representing the upper limit of the sum of |
| -- the synchronous interval, and the size of the eSCO window, where the |
| -- eSCO window is the reserved slots plus the retransmission window. |
| -- Minimum: 0x0004 |
| -- Don't care: 0xFFFF |
| |
| $next [+2] ScoPacketType packet_types |
| -- Bitmask of allowed packet types. |
| |
| $next [+1] ScoRetransmissionEffort retransmission_effort |
| |
| |
| struct EnhancedSetupSynchronousConnectionCommand: |
| -- 7.1.45 Enhanced Setup Synchronous Connection command |
| -- HCI_Enhanced_Setup_Synchronous_Connection |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- The connection handle of the associated ACL link if creating a new (e)SCO connection, or the |
| -- handle of an existing eSCO link if updating connection parameters. |
| |
| let scp_size = SynchronousConnectionParameters.$size_in_bytes |
| $next [+scp_size] SynchronousConnectionParameters connection_parameters |
| |
| |
| struct EnhancedAcceptSynchronousConnectionRequestCommand: |
| -- 7.1.46 Enhanced Accept Synchronous Connection Request command (CSA2) (BR/EDR) |
| -- HCI_Enhanced_Accept_Synchronous_Connection_Request |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr bd_addr |
| -- The 48-bit BD_ADDR of the remote device requesting the connection. |
| |
| let scp_size = SynchronousConnectionParameters.$size_in_bytes |
| $next [+scp_size] SynchronousConnectionParameters connection_parameters |
| |
| # 7.1.47 Truncated Page command |
| # HCI_Truncated_Page |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.48 Truncated Page Cancel command |
| # HCI_Truncated_Page_Cancel |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.49 Set Connectionless Peripheral Broadcast command |
| # HCI_Set_Connectionless_Peripheral_Broadcast |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.50 Set Connectionless Peripheral Broadcast Receive command |
| # HCI_Set_Connectionless_Peripheral_Broadcast_Receive |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.51 Start Synchronization Train command |
| # HCI_Start_Synchronization_Train |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.52 Receive Synchronization Train command |
| # HCI_Receive_Synchronization_Train |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.1.53 Remote OOB Extended Data Request Reply command |
| # HCI_Remote_OOB_Extended_Data_Request_Reply |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # ========== 7.3 Controller & Baseband Commands ========== |
| |
| |
| struct SetEventMaskCommand: |
| -- 7.3.1 Set Event Mask command (v1.1) |
| -- HCI_Set_Event_Mask |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+8] UInt event_mask |
| -- 64-bit Bit mask used to control which HCI events are generated by the HCI for the |
| -- Host. See enum class EventMask in hci_constants.h |
| |
| |
| struct ResetCommand: |
| -- 7.3.2 Reset command (v1.1) |
| -- HCI_Reset |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| # 7.3.3 Set Event Filter command |
| # HCI_Set_Event_Filter |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.4 Flush command |
| # HCI_Flush |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.5 Read PIN Type command |
| # HCI_Read_PIN_Type |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.6 Write PIN Type command |
| # HCI_Write_PIN_Type |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.8 Read Stored Link Key command |
| # HCI_Read_Stored_Link_Key |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.9 Write Stored Link Key command |
| # HCI_Write_Stored_Link_Key |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.10 Delete Stored Link Key command |
| # HCI_Delete_Stored_Link_Key |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct WriteLocalNameCommand: |
| -- 7.3.11 Write Local Name command (v1.1) (BR/EDR) |
| -- HCI_Write_Local_Name |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| let local_name_size = LocalName.$size_in_bytes |
| $next [+local_name_size] LocalName local_name |
| -- A UTF-8 encoded User Friendly Descriptive Name for the device. |
| -- If the name contained in the parameter is shorter than 248 octets, the end |
| -- of the name is indicated by a NULL octet (0x00), and the following octets |
| -- (to fill up 248 octets, which is the length of the parameter) do not have |
| -- valid values. |
| |
| |
| struct ReadLocalNameCommand: |
| -- 7.3.12 Read Local Name command (v1.1) (BR/EDR) |
| -- HCI_Read_Local_Name |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| # 7.3.13 Read Connection Accept Timeout command |
| # HCI_Read_Connection_Accept_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.14 Write Connection Accept Timeout command |
| # HCI_Write_Connection_Accept_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.15 Read Page Timeout command |
| # HCI_Read_Page_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct WritePageTimeoutCommand: |
| -- 7.3.16 Write Page Timeout command (v1.1) (BR/EDR) |
| -- HCI_Write_Page_Timeout |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt page_timeout |
| -- Page_Timeout, in time slices (0.625 ms) |
| -- Range: From MIN to MAX in PageTimeout in this file |
| [requires: 0x0001 <= this <= 0xFFFF] |
| |
| |
| struct ReadScanEnableCommand: |
| -- 7.3.17 Read Scan Enable command (v1.1) (BR/EDR) |
| -- HCI_Read_Scan_Enable |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct WriteScanEnableCommand: |
| -- 7.3.18 Write Scan Enable command (v1.1) (BR/EDR) |
| -- HCI_Write_Scan_Enable |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] ScanEnableBits scan_enable |
| -- Bit Mask of enabled scans. See enum class ScanEnableBits in this file |
| -- for how to construct this bitfield. |
| |
| |
| struct ReadPageScanActivityCommand: |
| -- 7.3.19 Read Page Scan Activity command (v1.1) (BR/EDR) |
| -- HCI_Read_Page_Scan_Activity |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct WritePageScanActivityCommand: |
| -- 7.3.20 Write Page Scan Activity command (v1.1) (BR/EDR) |
| -- HCI_Write_Page_Scan_Activity |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt page_scan_interval |
| -- Page_Scan_Interval, in time slices (0.625ms) |
| -- Valid Range: MIN - MAX in ScanInterval in this file |
| [requires: 0x0012 <= this <= 0x1000] |
| |
| $next [+2] UInt page_scan_window |
| -- Page_Scan_Window, in time slices |
| -- Valid Range: MIN - MAX in ScanWindow in this file |
| [requires: 0x0011 <= this <= 0x1000] |
| |
| |
| struct ReadInquiryScanActivityCommand: |
| -- 7.3.21 Read Inquiry Scan Activity command (v1.1) (BR/EDR) |
| -- HCI_Read_Inquiry_Scan_Activity |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct WriteInquiryScanActivityCommand: |
| -- 7.3.22 Write Inquiry Scan Activity command (v1.1) (BR/EDR) |
| -- HCI_Write_Inquiry_Scan_Activity |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt inquiry_scan_interval |
| -- Inquiry_Scan_Interval, in time slices (0.625ms) |
| -- Valid Range: MIN - MAX in ScanInterval in this file |
| [requires: 0x0012 <= this <= 0x1000] |
| |
| $next [+2] UInt inquiry_scan_window |
| -- Inquiry_Scan_Window, in time slices |
| -- Valid Range: MIN - MAX in ScanWindow in this file |
| [requires: 0x0011 <= this <= 0x1000] |
| |
| # 7.3.23 Read Authentication Enable command |
| # HCI_Read_Authentication_Enable |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.24 Write Authentication Enable command |
| # HCI_Write_Authentication_Enable |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct ReadClassOfDeviceCommand: |
| -- 7.3.25 Read Class of Device command (v1.1) (BR/EDR) |
| -- HCI_Read_Class_Of_Device |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct WriteClassOfDeviceCommand: |
| -- 7.3.26 Write Class Of Device command (v1.1) (BR/EDR) |
| -- HCI_Write_Class_Of_Device |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+3] hci.ClassOfDevice class_of_device |
| |
| # 7.3.27 Read Voice Setting command |
| # HCI_Read_Voice_Setting |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.28 Write Voice Setting command |
| # HCI_Write_Voice_Setting |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.29 Read Automatic Flush Timeout command |
| # HCI_Read_Automatic_Flush_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct WriteAutomaticFlushTimeoutCommand: |
| -- 7.3.30 Write Automatic Flush Timeout command (v1.1) (BR/EDR) |
| -- HCI_Write_Automatic_Flush_Timeout |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection_Handle (only the lower 12-bits are meaningful). |
| -- Range: 0x0000 to 0x0EFF |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| $next [+2] UInt flush_timeout |
| -- The value for the Flush_Timeout configuration parameter (Core Spec v5.2, Vol 4, Part E, Sec 6.19). |
| -- Range: 0x0000 to 0x07FF. 0x0000 indicates infinite flush timeout (no automatic flush). |
| -- Time = flush_timeout * 0.625ms. |
| -- Time Range: 0.625ms to 1279.375ms. |
| [requires: 0x0000 <= this <= 0x07FF] |
| |
| # 7.3.31 Read Num Broadcast Retransmissions command |
| # HCI_Read_Num_Broadcast_Retransmissions |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.32 Write Num Broadcast Retransmissions command |
| # HCI_Write_Num_Broadcast_Retransmissions |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.33 Read Hold Mode Activity command |
| # HCI_Read_Hold_Mode_Activity |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.34 Write Hold Mode Activity command |
| # HCI_Write_Hold_Mode_Activity |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.35 Read Transmit Power Level command |
| # HCI_Read_Transmit_Power_Level |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.36 Read Synchronous Flow Control Enable command |
| # HCI_Read_Synchronous_Flow_Control_Enable |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct WriteSynchronousFlowControlEnableCommand: |
| -- 7.3.37 Write Synchonous Flow Control Enable command (BR/EDR) |
| -- HCI_Write_Synchronous_Flow_Control_Enable |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.GenericEnableParam synchronous_flow_control_enable |
| -- If enabled, HCI_Number_Of_Completed_Packets events shall be sent from the controller |
| -- for synchronous connection handles. |
| |
| # 7.3.38 Set Controller To Host Flow Control command |
| # HCI_Set_Controller_To_Host_Flow_Control |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.39 Host Buffer Size command |
| # HCI_Host_Buffer_Size |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.40 Host Number Of Completed Packets command |
| # HCI_Host_Number_Of_Completed_Packets |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.41 Read Link Supervision Timeout command |
| # HCI_Read_Link_Supervision_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.42 Write Link Supervision Timeout command |
| # HCI_Write_Link_Supervision_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.43 Read Number Of Supported IAC command |
| # HCI_Read_Number_Of_Supported_IAC |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.44 Read Current IAC LAP command |
| # HCI_Read_Current_IAC_LAP |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.45 Write Current IAC LAP command |
| # HCI_Write_Current_IAC_LAP |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.46 Set AFH Host Channel Classification command |
| # HCI_Set_AFH_Host_Channel_Classification |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.47 Read Inquiry Scan Type command |
| # HCI_Read_Inquiry_Scan_Type |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct WriteInquiryScanTypeCommand: |
| -- 7.3.48 Write Inquiry Scan Type (v1.2) (BR/EDR) |
| -- HCI_Write_Inquiry_Scan_Type |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] InquiryScanType inquiry_scan_type |
| -- See enum class InquiryScanType in this file for possible values |
| |
| |
| struct ReadInquiryModeCommand: |
| -- 7.3.49 Read Inquiry Mode (v1.2) (BR/EDR) |
| -- HCI_Read_Inquiry_Mode |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct WriteInquiryModeCommand: |
| -- 7.3.50 Write Inquiry Mode (v1.2) (BR/EDR) |
| -- HCI_Write_Inquiry_Mode |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] InquiryMode inquiry_mode |
| |
| |
| struct ReadPageScanTypeCommand: |
| -- 7.3.51 Read Page Scan Type (v1.2) (BR/EDR) |
| -- HCI_Read_Page_Scan_Type |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct WritePageScanTypeCommand: |
| -- 7.3.52 Write Page Scan Type (v1.2) (BR/EDR) |
| -- HCI_Write_Page_Scan_Type |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] PageScanType page_scan_type |
| |
| # 7.3.53 Read AFH Channel Assessment Mode command |
| # HCI_Read_AFH_Channel_Assessment_Mode |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.54 Write AFH Channel Assessment Mode command |
| # HCI_Write_AFH_Channel_Assessment_Mode |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.55 Read Extended Inquiry Response command |
| # HCI_Read_Extended_Inquiry_Response |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct WriteExtendedInquiryResponseCommand: |
| -- 7.3.56 Write Extended Inquiry Response (v1.2) (BR/EDR) |
| -- HCI_Write_Extended_Inquiry_Response |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt fec_required |
| -- If FEC Encoding is required. (v1.2) (7.3.56) |
| |
| let eir_size = ExtendedInquiryResponse.$size_in_bytes |
| $next [+eir_size] ExtendedInquiryResponse extended_inquiry_response |
| -- Extended inquiry response data as defined in Vol 3, Part C, Sec 8 |
| |
| # 7.3.57 Refresh Encryption Key command |
| # HCI_Refresh_Encryption_Key |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct ReadSimplePairingModeCommand: |
| -- 7.3.58 Read Simple Pairing Mode (v2.1 + EDR) (BR/EDR) |
| -- HCI_Read_Simple_Pairing_Mode |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct WriteSimplePairingModeCommand: |
| -- 7.3.59 Write Simple Pairing Mode (v2.1 + EDR) (BR/EDR) |
| -- HCI_Write_Simple_Pairing_Mode |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.GenericEnableParam simple_pairing_mode |
| |
| # 7.3.60 Read Local OOB Data command |
| # HCI_Read_Local_OOB_Data |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.61 Read Inquiry Response Transmit Power Level command |
| # HCI_Read_Inquiry_Response_Transmit_Power_Level |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.62 Write Inquiry Transmit Power Level command |
| # HCI_Write_Inquiry_Transmit_Power_Level |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.63 Send Keypress Notification command |
| # HCI_Send_Keypress_Notification |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.64 Read Default Erroneous Data Reporting command |
| # HCI_Read_Default_Erroneous_Data_Reporting |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.65 Write Default Erroneous Data Reporting command |
| # HCI_Write_Default_Erroneous_Data_Reporting |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.66 Enhanced Flush command |
| # HCI_Enhanced_Flush |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct SetEventMaskPage2Command: |
| -- 7.3.69 Set Event Mask Page 2 command (v3.0 + HS) |
| -- HCI_Set_Event_Mask_Page_2 |
| 0 [+hci.CommandHeader.$size_in_bytes] hci.CommandHeader header |
| $next [+8] bits: |
| 0 [+26] EventMaskPage2 event_mask_page_2 |
| -- Bit mask used to control which HCI events are generated by the HCI for the Host. |
| |
| |
| struct ReadFlowControlModeCommand: |
| -- 7.3.72 Read Flow Control Mode command (v3.0 + HS) (BR/EDR) |
| -- HCI_Read_Flow_Control_Mode |
| 0 [+hci.CommandHeader.$size_in_bytes] hci.CommandHeader header |
| |
| |
| struct WriteFlowControlModeCommand: |
| -- 7.3.73 Write Flow Control Mode command (v3.0 + HS) (BR/EDR) |
| -- HCI_Write_Flow_Control_Mode |
| 0 [+hci.CommandHeader.$size_in_bytes] hci.CommandHeader header |
| $next [+1] FlowControlMode flow_control_mode |
| |
| # 7.3.74 Read Enhanced Transmit Power Level command |
| # HCI_Read_Enhanced_Transmit_Power_Level |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct ReadLEHostSupportCommand: |
| -- 7.3.78 Read LE Host Support command (v4.0) (BR/EDR) |
| -- HCI_Read_LE_Host_Support |
| 0 [+hci.CommandHeader.$size_in_bytes] hci.CommandHeader header |
| |
| |
| struct WriteLEHostSupportCommand: |
| -- 7.3.79 Write LE Host Support command (v4.0) (BR/EDR) |
| -- HCI_Write_LE_Host_Support |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.GenericEnableParam le_supported_host |
| -- Sets the LE Supported (Host) Link Manager Protocol feature bit. |
| |
| $next [+1] UInt unused |
| -- Core Spec v5.0, Vol 2, Part E, Section 6.35: This parameter was named |
| -- "Simultaneous_LE_Host" and the value is set to "disabled(0x00)" and |
| -- "shall be ignored". |
| -- Core Spec v5.3, Vol 4, Part E, Section 7.3.79: This parameter was renamed |
| -- to "Unused" and "shall be ignored by the controller". |
| |
| # 7.3.80 Set MWS Channel Parameters command |
| # HCI_Set_MWS_Channel_Parameters |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.81 Set External Frame Configuration command |
| # HCI_Set_External_Frame_Configuration |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.82 Set MWS Signaling command |
| # HCI_Set_MWS_Signaling |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.83 Set MWS Transport Layer command |
| # HCI_Set_MWS_Transport_Layer |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.84 Set MWS Scan Frequency Table command |
| # HCI_Set_MWS_Scan_Frequency_Table |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.85 Set MWS_PATTERN Configuration command |
| # HCI_Set_MWS_PATTERN_Configuration |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.86 Set Reserved LT_ADDR command |
| # HCI_Set_Reserved_LT_ADDR |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.87 Delete Reserved LT_ADDR command |
| # HCI_Delete_Reserved_LT_ADDR |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.88 Set Connectionless Peripheral Broadcast Data command |
| # HCI_Set_Connectionless_Peripheral_Broadcast_Data |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.89 Read Synchronization Train Parameters command |
| # HCI_Read_Synchronization_Train_Parameters |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.90 Write Synchronization Train Parameters command |
| # HCI_Write_Synchronization_Train_Parameters |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.91 Read Secure Connections Host Support command |
| # HCI_Read_Secure_Connections_Host_Support |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct WriteSecureConnectionsHostSupportCommand: |
| -- 7.3.92 Write Secure Connections Host Support command |
| -- HCI_Write_Secure_Connections_Host_Support |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.GenericEnableParam secure_connections_host_support |
| |
| |
| struct ReadAuthenticatedPayloadTimeoutCommand: |
| -- 7.3.93 Read Authenticated Payload Timeout command (v4.1) (BR/EDR & LE) |
| -- HCI_Read_Authenticated_Payload_Timeout |
| 0 [+hci.CommandHeader.$size_in_bytes] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| |
| struct WriteAuthenticatedPayloadTimeoutCommand: |
| -- 7.3.94 Write Authenticated Payload Timeout command (v4.1) (BR/EDR & LE) |
| -- HCI_Write_Authenticated_Payload_Timeout |
| 0 [+hci.CommandHeader.$size_in_bytes] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| $next [+2] UInt authenticated_payload_timeout |
| -- Default = 0x0BB8 (30 s) |
| -- Time = N * 10 ms |
| -- Time Range: 10 ms to 655,350 ms |
| [requires: 0x0001 <= this <= 0xFFFF] |
| |
| # 7.3.95 Read Local OOB Extended Data command |
| # HCI_Read_Local_OOB_Extended_Data |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.96 Read Extended Page Timeout command |
| # HCI_Read_Extended_Page_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.97 Write Extended Page Timeout command |
| # HCI_Write_Extended_Page_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.98 Read Extended Inquiry Length command |
| # HCI_Read_Extended_Inquiry_Length |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.99 Write Extended Inquiry Length command |
| # HCI_Write_Extended_Inquiry_Length |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.100 Set Ecosystem Base Interval command |
| # HCI_Set_Ecosystem_Base_Interval |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.101 Configure Data Path command |
| # HCI_Configure_Data_Path |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.3.102 Set Min Encryption Key Size command |
| # HCI_Set_Min_Encryption_Key_size |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # ========== 7.4 Informational Parameters ========== |
| |
| |
| struct ReadLocalVersionInformationCommand: |
| -- 7.4.1 Read Local Version Information command (v1.1) |
| -- HCI_Read_Local_Version_Information |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct ReadLocalSupportedCommandsCommand: |
| -- 7.4.2 Read Local Supported Commands command (v1.2) |
| -- HCI_Read_Local_Supported_Commands |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct ReadLocalSupportedFeaturesCommand: |
| -- 7.4.3 Read Local Supported Features command (v1.1) |
| -- HCI_Read_Local_Supported_Features |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct ReadLocalExtendedFeaturesCommand: |
| -- 7.4.4 Read Local Extended Features command (v1.2) (BR/EDR) |
| -- HCI_Read_Local_Extended_Features |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt page_number |
| -- 0x00: Requests the normal LMP features as returned by |
| -- Read_Local_Supported_Features. |
| -- 0x01-0xFF: Return the corresponding page of features. |
| |
| |
| struct ReadBufferSizeCommand: |
| -- 7.4.5 Read Buffer Size command (v1.1) |
| -- HCI_Read_Buffer_Size |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct ReadBdAddrCommand: |
| -- 7.4.6 Read BD_ADDR command (v1.1) (BR/EDR, LE) |
| -- HCI_Read_BD_ADDR |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| # 7.4.7 Read Data Block Size command |
| # HCI_Read_Data_Block_Size |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.4.8 Read Local Supported Codecs command |
| # HCI_Read_Local_Supported_Codecs [v1][v2] |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.4.9 Read Local Simple Pairing Options command |
| # HCI_Read_Local_Simple_Pairing_Options |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.4.10 Read Local Supported Codec Capabilities command |
| # HCI_Read_Local_Supported_Codec_Capabilities |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.4.11 Read Local Supported Controller Delay command |
| # HCI_Read_Local_Supported_Controller_Delay |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # ========== 7.5 Status Parameters ========== |
| |
| |
| struct ReadEncryptionKeySizeCommand: |
| -- 7.5.6 Read Encryption Key Size (v1.1) (BR/EDR) |
| -- HCI_Read_Encryption_Key_Size |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Identifies an active ACL link (only the lower 12 bits are meaningful). |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| # ========== 7.8 LE Controller Commands ========== |
| |
| |
| struct LESetEventMaskCommand: |
| -- 7.8.1 LE Set Event Mask command (v4.0) (LE) |
| -- HCI_LE_Set_Event_Mask |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+8] bits: |
| 0 [+35] LEEventMask le_event_mask |
| -- Bitmask that indicates which LE events are generated by the HCI for the Host. |
| |
| |
| struct LEReadBufferSizeCommandV1: |
| -- 7.8.2 LE Read Buffer Size command [v1] (v4.0) (LE) |
| -- HCI_LE_Read_Buffer_Size [v1] |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEReadBufferSizeCommandV2: |
| -- 7.8.2 LE Read Buffer Size command [v2] (v5.2) (LE) |
| -- HCI_LE_Read_Buffer_Size [v2] |
| -- Version 2 of this command changed the opcode and added ISO return |
| -- parameters. |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEReadLocalSupportedFeaturesCommand: |
| -- 7.8.3 LE Read Local Supported Features command (v4.0) (LE) |
| -- HCI_LE_Read_Local_Supported_Features |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LESetRandomAddressCommand: |
| -- 7.8.4 LE Set Random Address command (v4.0) (LE) |
| -- HCI_LE_Set_Random_Address |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr random_address |
| |
| |
| struct LESetAdvertisingParametersCommand: |
| -- 7.8.5 LE Set Advertising Parameters command (v4.0) (LE) |
| -- HCI_LE_Set_Advertising_Parameters |
| |
| [requires: advertising_interval_min <= advertising_interval_max] |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+2] UInt advertising_interval_min |
| -- Default: 0x0800 (1.28 s) |
| -- Time: N * 0.625 ms |
| -- Time Range: 20 ms to 10.24 s |
| [requires: 0x0020 <= this <= 0x4000] |
| |
| $next [+2] UInt advertising_interval_max |
| -- Default: 0x0800 (1.28 s) |
| -- Time: N * 0.625 ms |
| -- Time Range: 20 ms to 10.24 s |
| [requires: 0x0020 <= this <= 0x4000] |
| |
| $next [+1] LEAdvertisingType adv_type |
| -- Used to determine the packet type that is used for advertising when |
| -- advertising is enabled. |
| |
| $next [+1] LEOwnAddressType own_address_type |
| |
| $next [+1] hci.LEPeerAddressType peer_address_type |
| -- ANONYMOUS address type not allowed. |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr peer_address |
| -- Public Device Address, Random Device Address, Public Identity Address, or |
| -- Random (static) Identity Address of the device to be connected. |
| |
| $next [+1] bits: |
| |
| 0 [+3] LEAdvertisingChannels advertising_channel_map |
| -- Indicates the advertising channels that shall be used when transmitting |
| -- advertising packets. At least 1 channel must be enabled. |
| -- Default: all channels enabled |
| |
| $next [+1] LEAdvertisingFilterPolicy advertising_filter_policy |
| -- This parameter shall be ignored when directed advertising is enabled. |
| |
| |
| struct LEReadAdvertisingChannelTxPowerCommand: |
| -- 7.8.6 LE Read Advertising Channel Tx Power command (v4.0) (LE) |
| -- HCI_LE_Read_Advertising_Channel_Tx_Power |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LESetAdvertisingDataCommand: |
| -- 7.8.7 LE Set Advertising Data command (v4.0) (LE) |
| -- HCI_LE_Set_Advertising_Data |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt advertising_data_length |
| -- The number of significant octets in `advertising_data`. |
| [requires: 0x00 <= this <= 0x1F] |
| |
| $next [+31] UInt:8[31] advertising_data |
| -- 31 octets of advertising data formatted as defined in Core Spec |
| -- v5.3, Vol 3, Part C, Section 11. |
| -- Default: All octets zero |
| |
| |
| struct LESetScanResponseDataCommand: |
| -- 7.8.8 LE Set Scan Response Data command (v4.0) (LE) |
| -- HCI_LE_Set_Scan_Response_Data |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt scan_response_data_length |
| -- The number of significant octets in `scan_response_data`. |
| [requires: 0x00 <= this <= 0x1F] |
| |
| $next [+31] UInt:8[31] scan_response_data |
| -- 31 octets of scan response data formatted as defined in Core Spec |
| -- v5.3, Vol 3, Part C, Section 11. |
| -- Default: All octets zero |
| |
| |
| struct LESetAdvertisingEnableCommand: |
| -- 7.8.9 LE Set Advertising Enable command (v4.0) (LE) |
| -- HCI_LE_Set_Advertising_Enable |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.GenericEnableParam advertising_enable |
| |
| |
| struct LESetScanParametersCommand: |
| -- 7.8.10 LE Set Scan Parameters command (v4.0) (LE) |
| -- HCI_LE_Set_Scan_Parameters |
| |
| [requires: le_scan_window <= le_scan_interval] |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+1] LEScanType le_scan_type |
| -- Controls the type of scan to perform. |
| |
| $next [+2] UInt le_scan_interval |
| -- Default: 0x0010 (10ms) |
| -- Time: N * 0.625 ms |
| -- Time Range: 2.5 ms to 10.24 s |
| [requires: 0x0004 <= this <= 0x4000] |
| |
| $next [+2] UInt le_scan_window |
| -- Default: 0x0010 (10ms) |
| -- Time: N * 0.625 ms |
| -- Time Range: 2.5ms to 10.24 s |
| [requires: 0x0004 <= this <= 0x4000] |
| |
| $next [+1] LEOwnAddressType own_address_type |
| -- The type of address being used in the scan request packets. |
| |
| $next [+1] LEScanFilterPolicy scanning_filter_policy |
| |
| |
| struct LESetScanEnableCommand: |
| -- 7.8.11 LE Set Scan Enable command (v4.0) (LE) |
| -- HCI_LE_Set_Scan_Enable |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.GenericEnableParam le_scan_enable |
| $next [+1] hci.GenericEnableParam filter_duplicates |
| -- Controls whether the Link Layer should filter out duplicate advertising |
| -- reports to the Host, or if the Link Layer should generate advertising |
| -- reports for each packet received. Ignored if le_scan_enable is set to |
| -- disabled. |
| -- See Core Spec v5.3, Vol 6, Part B, Section 4.4.3.5 |
| |
| |
| struct LECreateConnectionCommand: |
| -- 7.8.12 LE Create Connection command (v4.0) (LE) |
| -- HCI_LE_Create_Connection |
| |
| [requires: le_scan_window <= le_scan_interval && connection_interval_min <= connection_interval_max] |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+2] UInt le_scan_interval |
| -- The time interval from when the Controller started the last LE scan until |
| -- it begins the subsequent LE scan. |
| -- Time: N * 0.625 ms |
| -- Time Range: 2.5 ms to 10.24 s |
| [requires: 0x0004 <= this <= 0x4000] |
| |
| $next [+2] UInt le_scan_window |
| -- Amount of time for the duration of the LE scan. |
| -- Time: N * 0.625 ms |
| -- Time Range: 2.5 ms to 10.24 s |
| [requires: 0x0004 <= this <= 0x4000] |
| |
| $next [+1] hci.GenericEnableParam initiator_filter_policy |
| |
| $next [+1] hci.LEAddressType peer_address_type |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr peer_address |
| |
| $next [+1] LEOwnAddressType own_address_type |
| |
| $next [+2] UInt connection_interval_min |
| -- Time: N * 1.25 ms |
| -- Time Range: 7.5 ms to 4 s. |
| [requires: 0x0006 <= this <= 0x0C80] |
| |
| $next [+2] UInt connection_interval_max |
| -- Time: N * 1.25 ms |
| -- Time Range: 7.5 ms to 4 s. |
| [requires: 0x0006 <= this <= 0x0C80] |
| |
| $next [+2] UInt max_latency |
| -- Maximum Peripheral latency for the connection in number of connection |
| -- events. |
| [requires: 0x0000 <= this <= 0x01F3] |
| |
| $next [+2] UInt supervision_timeout |
| -- See Core Spec v5.3, Vol 6, Part B, Section 4.5.2. |
| -- Time: N * 10 ms |
| -- Time Range: 100 ms to 32 s |
| [requires: 0x000A <= this <= 0x0C80] |
| |
| $next [+2] UInt min_connection_event_length |
| -- Time: N * 0.625 ms |
| |
| $next [+2] UInt max_connection_event_length |
| -- Time: N * 0.625 ms |
| |
| |
| struct LECreateConnectionCancelCommand: |
| -- 7.8.13 LE Create Connection Cancel command (v4.0) (LE) |
| -- HCI_LE_Create_Connection_Cancel |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| # 7.8.14 LE Read Filter Accept List Size command |
| # HCI_LE_Read_Filter_Accept_List_Size |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct LEClearFilterAcceptListCommand: |
| -- 7.8.15 LE Clear Filter Accept List command (v4.0) (LE) |
| -- HCI_LE_Clear_Filter_Accept_List |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEAddDeviceToFilterAcceptListCommand: |
| -- 7.8.16 LE Add Device To Filter Accept List command (v4.0) (LE) |
| -- HCI_LE_Add_Device_To_Filter_Accept_List |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.LEPeerAddressType address_type |
| -- The address type of the peer. |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr address |
| -- Public Device Address or Random Device Address of the device to be added |
| -- to the Filter Accept List. Ignored if `address_type` is ANONYMOUS. |
| |
| |
| struct LERemoveDeviceFromFilterAcceptListCommand: |
| -- 7.8.17 LE Remove Device From Filter Accept List command (v4.0) (LE) |
| -- HCI_LE_Remove_Device_From_Filter_Accept_List |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.LEPeerAddressType address_type |
| -- The address type of the peer. |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr address |
| -- Public Device Address or Random Device Address of the device to be added |
| -- to the Filter Accept List. Ignored if `address_type` is ANONYMOUS. |
| |
| |
| struct LEConnectionUpdateCommand: |
| -- 7.8.18 LE Connection Update command (v4.0) (LE) |
| -- HCI_LE_Connection_Update |
| |
| [requires: connection_interval_min <= connection_interval_max && min_connection_event_length <= max_connection_event_length] |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+2] UInt connection_handle |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| $next [+2] UInt connection_interval_min |
| -- Time: N * 1.25 ms |
| -- Time Range: 7.5 ms to 4 s. |
| [requires: 0x0006 <= this <= 0x0C80] |
| |
| $next [+2] UInt connection_interval_max |
| -- Time: N * 1.25 ms |
| -- Time Range: 7.5 ms to 4 s. |
| [requires: 0x0006 <= this <= 0x0C80] |
| |
| $next [+2] UInt max_latency |
| -- Maximum Peripheral latency for the connection in number of subrated |
| -- connection events. |
| [requires: 0x0000 <= this <= 0x01F3] |
| |
| $next [+2] UInt supervision_timeout |
| -- See Core Spec v5.3, Vol 6, Part B, Section 4.5.2. |
| -- Time: N * 10 ms |
| -- Time Range: 100 ms to 32 s |
| [requires: 0x000A <= this <= 0x0C80] |
| |
| $next [+2] UInt min_connection_event_length |
| -- Time: N * 0.625 ms |
| |
| $next [+2] UInt max_connection_event_length |
| -- Time: N * 0.625 ms |
| |
| # 7.8.19 LE Set Host Channel Classification command |
| # HCI_LE_Set_Host_Channel_Classification |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.20 LE Read Channel Map command |
| # HCI_LE_Read_Channel_Map |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct LEReadRemoteFeaturesCommand: |
| -- 7.8.21 LE Read Remote Features command (v4.0) (LE) |
| -- HCI_LE_Read_Remote_Features |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| # 7.8.22 LE Encrypt command |
| # HCI_LE_Encrypt |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.23 LE Rand command |
| # HCI_LE_Rand |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct LEEnableEncryptionCommand: |
| -- 7.8.24 LE Enable Encryption command (v4.0) (LE) |
| -- HCI_LE_Enable_Encryption |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| $next [+8] UInt random_number |
| $next [+2] UInt encrypted_diversifier |
| $next [+hci.LinkKey.$size_in_bytes] hci.LinkKey long_term_key |
| |
| |
| struct LELongTermKeyRequestReplyCommand: |
| -- 7.8.25 LE Long Term Key Request Reply command (v4.0) (LE) |
| -- HCI_LE_Long_Term_Key_Request_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| $next [+hci.LinkKey.$size_in_bytes] hci.LinkKey long_term_key |
| |
| |
| struct LELongTermKeyRequestNegativeReplyCommand: |
| -- 7.8.26 LE Long Term Key Request Negative Reply command (v4.0) (LE) |
| -- HCI_LE_Long_Term_Key_Request_Negative_Reply |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| |
| struct LEReadSupportedStatesCommand: |
| -- 7.8.27 LE Read Supported States command (v4.0) (LE) |
| -- HCI_LE_Read_Supported_States |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| # 7.8.28 LE Receiver Test command |
| # HCI_LE_Receiver_Test [v1] [v2] [v3] |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.29 LE Transmitter Test command |
| # HCI_LE_Transmitter_Test [v1] [v2] [v3] [v4] |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.30 LE Test End command |
| # HCI_LE_Test_End |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.31 LE Remote Connection Parameter Request Reply command |
| # HCI_LE_Remote_Connection_Parameter_Request_Reply |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.32 LE Remote Connection Parameter Request Negative Reply command |
| # HCI_LE_Remote_Connection_Parameter_Request_Negative_Reply |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.33 LE Set Data Length command |
| # HCI_LE_Set_Data_Length |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.34 LE Read Suggested Default Data Length command |
| # HCI_LE_Read_Suggested_Default_Data_Length |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.35 LE Write Suggested Default Data Length command |
| # HCI_LE_Write_Suggested_Default_Data_Length |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.36 LE Read Local P-256 Public Key command |
| # HCI_LE_Read_Local_P-256_Public_Key |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.37 LE Generate DHKey command |
| # HCI_LE_Generate_DHKey [v1] [v2] |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.38 LE Add Device To Resolving List command |
| # HCI_LE_Add_Device_To_Resolving_List |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.39 LE Remove Device From Resolving List command |
| # HCI_LE_Remove_Device_From_Resolving_List |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct LEClearResolvingListCommand: |
| -- 7.8.40 LE Clear Resolving List command (v4.2) (LE) |
| -- HCI_LE_Clear_Resolving_List |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| # 7.8.41 LE Read Resolving List Size command |
| # HCI_LE_Read_Resolving_List_Size |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.42 LE Read Peer Resolvable Address command |
| # HCI_LE_Read_Peer_Resolvable_Address |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.43 LE Read Local Resolvable Address command |
| # HCI_LE_Read_Local_Resolvable_Address |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct LESetAddressResolutionEnableCommand: |
| -- 7.8.44 LE Set Address Resolution Enable command (v4.2) (LE) |
| -- HCI_LE_Set_Address_Resolution_Enable |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.GenericEnableParam address_resolution_enable |
| |
| # 7.8.45 LE Set Resolvable Private Address Timeout command |
| # HCI_LE_Set_Resolvable_Private_Address_Timeout |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.46 LE Read Maximum Data Length command |
| # HCI_LE_Read_Maximum_Data_Length |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.47 LE Read PHY command |
| # HCI_LE_Read_PHY |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.48 LE Set Default PHY command |
| # HCI_LE_Set_Default_PHY |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.49 LE Set PHY command |
| # HCI_LE_Set_PHY |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct LESetAdvertisingSetRandomAddressCommand: |
| -- 7.8.52 LE Set Advertising Set Random Address command (v5.0) (LE) |
| -- HCI_LE_Set_Advertising_Set_Random_Address |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt advertising_handle |
| -- Handle used to identify an advertising set. |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr random_address |
| -- The random address to use in the advertising PDUs. |
| |
| |
| struct LESetExtendedAdvertisingParametersV1Command: |
| -- 7.8.53 LE Set Extended Advertising Parameters [v1] command (v5.0) (LE) |
| -- HCI_LE_Set_Extended_Advertising_Parameters [v1] |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+1] UInt advertising_handle |
| -- Handle used to identify an advertising set. |
| |
| $next [+2] bits: |
| |
| 0 [+7] LEAdvertisingEventProperties advertising_event_properties |
| |
| $next [+3] UInt primary_advertising_interval_min |
| -- Time = N * 0.625 s |
| -- Time Range: 20 ms to 10,485.759375 s |
| [requires: 0x000020 <= this] |
| |
| $next [+3] UInt primary_advertising_interval_max |
| -- Time = N * 0.625 s |
| -- Time Range: 20 ms to 10,485.759375 s |
| [requires: 0x000020 <= this] |
| |
| $next [+1] bits: |
| |
| 0 [+3] LEAdvertisingChannels primary_advertising_channel_map |
| |
| $next [+1] LEOwnAddressType own_address_type |
| |
| $next [+1] hci.LEPeerAddressTypeNoAnon peer_address_type |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr peer_address |
| -- Public Device Address, Random Device Address, Public Identity Address, or Random (static) |
| -- Identity Address of the device to be connected. |
| |
| $next [+1] LEAdvertisingFilterPolicy advertising_filter_policy |
| |
| $next [+1] Int advertising_tx_power |
| -- Range: -127 <= N <= +126 |
| -- Units: dBm |
| -- If N = 127: Host has no preference. |
| [requires: -127 <= this] |
| |
| $next [+1] hci.LEPrimaryAdvertisingPHY primary_advertising_phy |
| -- LEPHY::kLE2M and LEPHY::kLECodedS2 are excluded. |
| |
| $next [+1] UInt secondary_advertising_max_skip |
| -- Maximum advertising events the controller can skip before sending the AUX_ADV_IND packets on |
| -- the secondary advertising physical channel. If this value is zero, AUX_ADV_IND shall be sent |
| -- prior to the next advertising event. |
| |
| $next [+1] hci.LESecondaryAdvertisingPHY secondary_advertising_phy |
| |
| $next [+1] UInt advertising_sid |
| -- Value of the Advertising SID subfield in the ADI field of the PDU |
| [requires: 0x00 <= this <= 0x0F] |
| |
| $next [+1] hci.GenericEnableParam scan_request_notification_enable |
| |
| # TODO: b/265052417 - LE Set Extended Advertising Parameters [v2] definition needs to be added |
| |
| |
| struct LESetExtendedAdvertisingDataCommand: |
| -- 7.8.54 LE Set Extended Advertising Data command (v5.0) (LE) |
| -- HCI_LE_Set_Extended_Advertising_Data |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+1] UInt advertising_handle |
| -- Handle used to identify an advertising set. |
| |
| $next [+1] LESetExtendedAdvDataOp operation |
| |
| $next [+1] LEExtendedAdvFragmentPreference fragment_preference |
| -- Provides a hint to the Controller as to whether advertising data should be fragmented. |
| |
| $next [+1] UInt advertising_data_length (sz) |
| -- Length of the advertising data included in this command packet, up to |
| -- kMaxLEExtendedAdvertisingDataLength bytes. If the advertising set uses legacy advertising |
| -- PDUs that support advertising data then this shall not exceed kMaxLEAdvertisingDataLength |
| -- bytes. |
| [requires: 0 <= this <= 251] |
| |
| $next [+sz] UInt:8[sz] advertising_data |
| -- Variable length advertising data. |
| |
| |
| struct LESetExtendedScanResponseDataCommand: |
| -- 7.8.55 LE Set Extended Scan Response Data command (v5.0) (LE) |
| -- HCI_LE_Set_Extended_Scan_Response_Data |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt advertising_handle |
| -- Used to identify an advertising set |
| [requires: 0x00 <= this <= 0xEF] |
| |
| $next [+1] LESetExtendedAdvDataOp operation |
| $next [+1] LEExtendedAdvFragmentPreference fragment_preference |
| -- Provides a hint to the controller as to whether advertising data should be fragmented |
| |
| $next [+1] UInt scan_response_data_length (sz) |
| -- The number of octets in the scan_response_data parameter |
| [requires: 0 <= this <= 251] |
| |
| $next [+sz] UInt:8[sz] scan_response_data |
| -- Scan response data formatted as defined in Core Spec v5.4, Vol 3, Part C, Section 11 |
| |
| |
| struct LESetExtendedAdvertisingEnableData: |
| -- Data fields for variable-length portion of an LE Set Extended Advertising Enable command |
| 0 [+1] UInt advertising_handle |
| $next [+2] UInt duration |
| $next [+1] UInt max_extended_advertising_events |
| |
| |
| struct LESetExtendedAdvertisingEnableCommand: |
| -- 7.8.56 LE Set Extended Advertising Enable command (v5.0) (LE) |
| -- HCI_LE_Set_Extended_Advertising_Enable |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.GenericEnableParam enable |
| $next [+1] UInt num_sets |
| let single_data_size = LESetExtendedAdvertisingEnableData.$size_in_bytes |
| $next [+single_data_size*num_sets] LESetExtendedAdvertisingEnableData[] data |
| |
| |
| struct LEReadMaxAdvertisingDataLengthCommand: |
| -- 7.8.57 LE Read Maximum Advertising Data Length command (v5.0) (LE) |
| -- HCI_LE_Read_Maximum_Advertising_Data_Length |
| -- This command has no parameters |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEReadNumSupportedAdvertisingSetsCommand: |
| -- 7.8.58 LE Read Number of Supported Advertising Sets command (v5.0) (LE) |
| -- HCI_LE_Read_Number_of_Supported_Advertising_Sets |
| -- This command has no parameters |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LERemoveAdvertisingSetCommand: |
| -- 7.8.59 LE Remove Advertising Set command (v5.0) (LE) |
| -- HCI_LE_Remove_Advertising_Set |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt advertising_handle |
| |
| |
| struct LEClearAdvertisingSetsCommand: |
| -- 7.8.60 LE Clear Advertising Sets command (v5.0) (LE) |
| -- HCI_LE_Clear_Advertising_Sets |
| -- This command has no parameters |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| # 7.8.61 LE Set Periodic Advertising Parameters command |
| # HCI_LE_Set_Periodic_Advertising_Parameters [v1] [v2] |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.62 LE Set Periodic Advertising Data command |
| # HCI_LE_Set_Periodic_Advertising_Data |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| # 7.8.63 LE Set Periodic Advertising Enable command |
| # HCI_LE_Set_Periodic_Advertising_Enable |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct LESetExtendedScanParametersData: |
| -- Data fields for variable-length portion of an LE Set Extneded Scan Parameters command |
| |
| 0 [+1] LEScanType scan_type |
| |
| $next [+2] UInt scan_interval |
| -- Time interval from when the Controller started its last scan until it begins the subsequent |
| -- scan on the primary advertising physical channel. |
| -- Time = N × 0.625 ms |
| -- Time Range: 2.5 ms to 40.959375 s |
| [requires: 0x0004 <= this] |
| |
| $next [+2] UInt scan_window |
| -- Duration of the scan on the primary advertising physical channel. |
| -- Time = N × 0.625 ms |
| -- Time Range: 2.5 ms to 40.959375 s |
| [requires: 0x0004 <= this] |
| |
| |
| struct LESetExtendedScanParametersCommand(num_entries: UInt:8): |
| -- 7.8.64 LE Set Extended Scan Parameters command (v5.0) (LE) |
| -- HCI_LE_Set_Extended_Scan_Parameters |
| -- num_entries corresponds to the number of bits set in the |scanning_phys| field |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] LEOwnAddressType own_address_type |
| $next [+1] LEScanFilterPolicy scanning_filter_policy |
| $next [+1] LEScanPHYBits scanning_phys |
| let single_entry_size = LESetExtendedScanParametersData.$size_in_bytes |
| let total_entries_size = num_entries*single_entry_size |
| $next [+total_entries_size] LESetExtendedScanParametersData[num_entries] data |
| -- Indicates the type of address being used in the scan request packets (for active scanning). |
| |
| |
| struct LESetExtendedScanEnableCommand: |
| -- 7.8.65 LE Set Extended Scan Enable command (v5.0) (LE) |
| -- HCI_LE_Set_Extended_Scan_Enable |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+1] hci.GenericEnableParam scanning_enabled |
| |
| $next [+1] LEExtendedDuplicateFilteringOption filter_duplicates |
| -- See enum class LEExtendedDuplicateFilteringOption in this file for possible values |
| |
| $next [+2] UInt duration |
| -- Possible values: |
| -- 0x0000: Scan continuously until explicitly disabled |
| -- 0x0001-0xFFFF: Scan duration, where: |
| -- Time = N * 10 ms |
| -- Time Range: 10 ms to 655.35 s |
| |
| $next [+2] UInt period |
| -- Possible values: |
| -- 0x0000: Periodic scanning disabled (scan continuously) |
| -- 0x0001-0xFFFF: Time interval from when the Controller started its last |
| -- Scan_Duration until it begins the subsequent Scan_Duration, where: |
| -- Time = N * 1.28 sec |
| -- Time Range: 1.28 s to 83,884.8 s |
| |
| # 7.8.66 LE Extended Create Connection command |
| # HCI_LE_Extended_Create_Connection [v1] [v2] |
| # TODO: b/265052417 - Definition needs to be added |
| |
| |
| struct LEPeriodicAdvertisingCreateSyncCommand: |
| -- 7.8.67 LE Periodic Advertising Create Sync command (v5.0) (LE) |
| -- HCI_LE_Periodic_Advertising_Create_Sync |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+1] LEPeriodicAdvertisingCreateSyncOptions options |
| |
| $next [+1] UInt advertising_sid |
| -- Advertising SID subfield in the ADI field used to identify the Periodic Advertising |
| [requires: 0x00 <= this <= 0x0F] |
| |
| $next [+1] LEPeriodicAdvertisingAddressType advertiser_address_type |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr advertiser_address |
| -- Public Device Address, Random Device Address, Public Identity Address, or Random (static) |
| -- Identity Address of the advertiser |
| |
| $next [+2] UInt skip |
| -- The maximum number of periodic advertising events that can be skipped after a successful |
| -- receive |
| [requires: 0x0000 <= this <= 0x01F3] |
| |
| $next [+2] UInt sync_timeout |
| -- Synchronization timeout for the periodic advertising. |
| -- Time = N * 10 ms |
| -- Time Range: 100 ms to 163.84 s |
| [requires: 0x000A <= this <= 0x4000] |
| |
| $next [+1] LEPeriodicAdvertisingSyncCTEType sync_cte_type |
| -- Constant Tone Extension sync options |
| |
| |
| struct LEPeriodicAdvertisingCreateSyncCancel: |
| -- 7.8.68 LE Periodic Advertising Create Sync Cancel command (v5.0) (LE) |
| -- HCI_LE_Periodic_Advertising_Create_Sync_Cancel |
| -- Note that this command has no arguments |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEPeriodicAdvertisingTerminateSyncCommand: |
| -- 7.8.69 LE Periodic Advertising Terminate Sync command (v5.0) (LE) |
| -- HCI_LE_Periodic_Advertising_Terminate_Sync |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt sync_handle |
| -- Identifies the periodic advertising train |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| |
| struct LEAddDeviceToPeriodicAdvertiserListCommand: |
| -- 7.8.70 LE Add Device To Periodic Advertiser List command (v5.0) (LE) |
| -- HCI_LE_Add_Device_To_Periodic_Advertiser_List |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.LEAddressType advertiser_address_type |
| -- Address type of the advertiser. The LEAddressType::kPublicIdentity and |
| -- LEAddressType::kRandomIdentity values are excluded for this command. |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr advertiser_address |
| -- Public Device Address, Random Device Address, Public Identity Address, or |
| -- Random (static) Identity Address of the advertiser. |
| |
| $next [+1] UInt advertising_sid |
| -- Advertising SID subfield in the ADI field used to identify the Periodic |
| -- Advertising. |
| |
| |
| struct LERemoveDeviceFromPeriodicAdvertiserListCommand: |
| -- 7.8.71 LE Remove Device From Periodic Advertiser List command (v5.0) (LE) |
| -- HCI_LE_Remove_Device_From_Periodic_Advertiser_List |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt advertiser_address_type |
| -- Address type of the advertiser. The LEAddressType::kPublicIdentity and |
| -- LEAddressType::kRandomIdentity values are excluded for this command. |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr advertiser_address |
| -- Public Device Address, Random Device Address, Public Identity Address, or |
| -- Random (static) Identity Address of the advertiser. |
| |
| $next [+1] UInt advertising_sid |
| -- Advertising SID subfield in the ADI field used to identify the Periodic |
| -- Advertising. |
| |
| |
| struct LEClearPeriodicAdvertiserListCommand: |
| -- 7.8.72 LE Clear Periodic Advertiser List command (v5.0) (LE) |
| -- HCI_LE_Clear_Periodic_Advertiser_List |
| -- Note that this command has no arguments |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEReadPeriodicAdvertiserListSizeCommand: |
| -- 7.8.73 LE Read Periodic Advertiser List Size command (v5.0) (LE) |
| -- HCI_LE_Read_Periodic_Advertiser_List_Size |
| -- Note that this command has no arguments |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEReadTransmitPowerCommand: |
| -- 7.8.74 LE Read Transmit Power command (v5.0) (LE) |
| -- HCI_LE_Read_Transmit_Power |
| -- Note that this command has no arguments |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEReadRFPathCompensationCommand: |
| -- 7.8.75 LE Read RF Path Compensation command (v5.0) (LE) |
| -- HCI_LE_Read_RF_Path_Compensation |
| -- Note that this command has no arguments |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| |
| struct LEWriteRFPathCompensationCommand: |
| -- 7.8.76 LE Write RF Path Compensation command (v5.0) (LE) |
| -- HCI_LE_Write_RF_Path_Compensation |
| -- Values provided are used in the Tx Power Level and RSSI calculation. |
| -- Range: -128.0 dB (0xFB00) ≤ N ≤ 128.0 dB (0x0500) |
| -- Units: 0.1 dB |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] Int rf_tx_path_compensation_value |
| [requires: -1280 <= this <= 1280] |
| |
| $next [+2] Int rf_rx_path_compensation_value |
| [requires: -1280 <= this <= 1280] |
| |
| |
| struct LESetPrivacyModeCommand: |
| -- 7.8.77 LE Set Privacy Mode command (v5.0) (LE) |
| -- HCI_LE_Set_Privacy_Mode |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] hci.LEPeerAddressTypeNoAnon peer_identity_address_type |
| -- The peer identity address type (either Public Identity or Private |
| -- Identity). |
| |
| $next [+hci.BdAddr.$size_in_bytes] hci.BdAddr peer_identity_address |
| -- Public Identity Address or Random (static) Identity Address of the |
| -- advertiser. |
| |
| $next [+1] LEPrivacyMode privacy_mode |
| -- The privacy mode to be used for the given entry on the resolving list. |
| |
| # 7.8.93 [No longer used] |
| # 7.8.94 LE Modify Sleep Clock Accuracy command |
| # 7.8.95 [No longer used] |
| |
| |
| struct LEReadISOTXSyncCommand: |
| -- 7.8.96 LE Read ISO TX Sync command (v5.2) (LE) |
| -- HCI_LE_Read_ISO_TX_Sync |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection handle of the CIS or BIS |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| |
| struct LESetCIGParametersCommand: |
| -- 7.8.97 LE Set CIG Parameters command (v5.2) (LE) |
| -- HCI_LE_Set_CIG_Parameters |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| |
| 0 [+hdr_size] hci.CommandHeader header |
| |
| $next [+1] UInt cig_id |
| -- Used to identify the CIG |
| [requires: 0x00 <= this <= 0xEF] |
| |
| $next [+3] UInt sdu_interval_c_to_p |
| -- The interval, in microseconds, of periodic SDUs (Central => Peripheral) |
| [requires: 0x0000FF <= this <= 0x0FFFFF] |
| |
| $next [+3] UInt sdu_interval_p_to_c |
| -- The interval, in microseconds, of periodic SDUs (Peripheral => Central) |
| [requires: 0x0000FF <= this <= 0x0FFFFF] |
| |
| $next [+1] LESleepClockAccuracyRange worst_case_sca |
| -- Worst-case sleep clock accuracy of all Peripherals that will participate in the CIG |
| |
| $next [+1] LECISPacking packing |
| -- Preferred method of arranging subevents of multiple CISes |
| |
| $next [+1] LECISFraming framing |
| -- Format of the CIS Data PDUs |
| |
| $next [+2] UInt max_transport_latency_c_to_p |
| -- Maximum transport latency, in milliseconds, from the Central's Controller to the |
| -- Peripheral's Controller |
| [requires: 0x0005 <= this <= 0x0FA0] |
| |
| $next [+2] UInt max_transport_latency_p_to_c |
| -- Maximum transport latency, in milliseconds, from the Peripheral's Controller to the |
| -- Central's Controller |
| [requires: 0x0005 <= this <= 0x0FA0] |
| |
| $next [+1] UInt cis_count |
| -- Total number of CIS configurations in the CIG being added or modified |
| [requires: 0x00 <= this <= 0x1F] |
| |
| let single_cis_options_size = LESetCIGParametersCISOptions.$size_in_bytes |
| |
| let total_cis_options_size = cis_count*single_cis_options_size |
| |
| $next [+total_cis_options_size] LESetCIGParametersCISOptions[cis_count] cis_options |
| -- Array of parameters, one for each of the CISes in this CIG |
| |
| # 7.8.98 LE Set CIG Parameters Test command |
| |
| |
| struct LECreateCISCommand: |
| -- 7.8.99 LE Create CIS command (v5.2) (LE) |
| -- HCI_LE_Create_CIS |
| struct ConnectionInfo: |
| -- Handles for each stream being created |
| |
| 0 [+2] UInt cis_connection_handle |
| -- Connection handle of a CIS |
| [requires: 0x0000 <= this <= 0xEFFF] |
| |
| $next [+2] UInt acl_connection_handle |
| -- Connection handle of an ACL connection |
| [requires: 0x0000 <= this <= 0xEFFF] |
| |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt cis_count |
| -- Total number of CISes to be created |
| [requires: 0x01 <= this <= 0x1F] |
| |
| let single_cis_params_size = ConnectionInfo.$size_in_bytes |
| let total_cis_params_size = cis_count*single_cis_params_size |
| $next [+total_cis_params_size] ConnectionInfo[cis_count] cis_connection_info |
| -- Connection handle information for the CIS(es) being created |
| |
| |
| struct LERemoveCIGCommand: |
| -- 7.8.100 LE Remove CIG command (v5.2) (LE) |
| -- HCI_LE_Remove_CIG |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+1] UInt cig_id |
| -- Identifier of a CIG |
| [requires: 0x00 <= this <= 0xEF] |
| |
| |
| struct LEAcceptCISRequestCommand: |
| -- 7.8.101 LE Accept CIS Request command (v5.2) (LE) |
| -- HCI_LE_Accept_CIS_Request |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection handle of the CIS |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| |
| struct LERejectCISRequestCommand: |
| -- 7.8.102 LE Reject CIS Request command (v5.2) (LE) |
| -- HCI_LE_Reject_CIS_Request |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection handle of the CIS |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| $next [+1] hci.StatusCode reason |
| -- Reason the CIS request was rejected |
| |
| # 7.8.103 LE Create BIG command |
| # 7.8.104 LE Create BIG Test command |
| # 7.8.105 LE Terminate BIG command |
| # 7.8.106 LE BIG Create Sync command |
| # 7.8.107 LE BIG Terminate Sync command |
| |
| |
| struct LERequestPeerSCACommand: |
| -- 7.8.108 LE Request Peer SCA command |
| -- HCI_LE_Request_Peer_SCA |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection handle of the ACL |
| [requires: 0x0000 <= this <= 0xEFF] |
| |
| |
| struct LESetupISODataPathCommand: |
| -- 7.8.109 LE Setup ISO Data Path command |
| -- HCI_LE_Setup_ISO_Data_Path |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection handle of the CIS or BIS |
| [requires: 0x0000 <= this <= 0x0EFF] |
| |
| $next [+1] DataPathDirection data_path_direction |
| -- Specifies the direction for which the data path is being configured |
| |
| $next [+1] UInt data_path_id |
| -- Data transport path used (0x00 for HCI). |
| [requires: 0x00 <= this <= 0xFE] |
| |
| let vcf_size = CodecId.$size_in_bytes |
| $next [+vcf_size] CodecId codec_id |
| -- Codec to be used |
| |
| $next [+3] UInt controller_delay |
| -- Controller delay in microseconds (0s to 4s) |
| [requires: 0x000000 <= this <= 0x3D0900] |
| |
| $next [+1] UInt codec_configuration_length |
| -- Length of codec configuration |
| |
| $next [+codec_configuration_length] UInt:8[codec_configuration_length] codec_configuration |
| -- Codec-specific configuration data |
| |
| |
| struct LERemoveISODataPathCommand: |
| -- 7.8.110 LE Remove ISO Data Path command |
| -- HCI_LE_Remove_ISO_Data_Path |
| let hdr_size = hci.CommandHeader.$size_in_bytes |
| 0 [+hdr_size] hci.CommandHeader header |
| $next [+2] UInt connection_handle |
| -- Connection handle of the CIS or BIS |
| [requires: 0x0000 <= this <= 0x0EFFF] |
| |
| $next [+1] bits: |
| 0 [+1] Flag remove_input_data_path |
| $next [+1] Flag remove_output_data_path |
| $next [+6] UInt padding |
| |
| # 7.8.111 LE ISO Transmit Test command |
| # 7.8.112 LE ISO Receive Test command |
| # 7.8.113 LE ISO Read Test Counters command |
| # 7.8.114 LE ISO Test End command |