pw_bluetooth: Remove unused hci emboss files
Remove legacy emboss definitions that are no longer used,
and update dependencies accordingly.
Test: Fuchsia and Pigweed both build with these changes.
Test: pw presubmit --step gn_emboss_nanopb_build
Change-Id: I635164706841150b0e6e4f3ef4374f4228918fac
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/167090
Presubmit-Verified: CQ Bot Account <pigweed-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Ben Lawson <benlawson@google.com>
Commit-Queue: Josh Conner <joshconner@google.com>
Reviewed-by: Faraaz Sareshwala <fsareshwala@google.com>
diff --git a/pw_bluetooth/BUILD.gn b/pw_bluetooth/BUILD.gn
index 341d0fb..15357bf 100644
--- a/pw_bluetooth/BUILD.gn
+++ b/pw_bluetooth/BUILD.gn
@@ -80,12 +80,6 @@
visibility = [ ":*" ]
}
- # deprecated - definitions have been split into emboss_hci_{common, commands, events} targets
- emboss_cc_library("emboss_hci") {
- public_configs = [ ":emboss_include_path" ]
- source = "public/pw_bluetooth/hci.emb"
- }
-
emboss_cc_library("emboss_hci_common") {
public_configs = [ ":emboss_include_path" ]
source = "public/pw_bluetooth/hci_common.emb"
@@ -105,14 +99,6 @@
deps = [ ":emboss_hci_common" ]
}
- # deprecated - to be replaced with emboss_hci_vendor target
- emboss_cc_library("emboss_vendor") {
- public_configs = [ ":emboss_include_path" ]
- source = "public/pw_bluetooth/vendor.emb"
- imports = [ "public/pw_bluetooth/hci.emb" ]
- deps = [ ":emboss_hci" ]
- }
-
emboss_cc_library("emboss_hci_vendor") {
public_configs = [ ":emboss_include_path" ]
source = "public/pw_bluetooth/hci_vendor.emb"
@@ -137,9 +123,17 @@
]
}
} else {
- group("emboss_hci") {
+ group("emboss_hci_common") {
}
- group("emboss_vendor") {
+ group("emboss_hci_commands") {
+ }
+ group("emboss_hci_events") {
+ }
+ group("emboss_hci_vendor") {
+ }
+ group("emboss_hci_test") {
+ }
+ group("emboss_hci_group") {
}
}
@@ -178,10 +172,7 @@
enable_if = dir_pw_third_party_emboss != ""
configs = [ "$dir_pigweed/third_party/emboss:flags" ]
sources = [ "emboss_test.cc" ]
- deps = [
- ":emboss_hci",
- ":emboss_vendor",
- ]
+ deps = [ ":emboss_hci_test" ]
}
if (dir_pw_third_party_emboss != "") {
diff --git a/pw_bluetooth/emboss_test.cc b/pw_bluetooth/emboss_test.cc
index 9db81fb..f2e7ba7 100644
--- a/pw_bluetooth/emboss_test.cc
+++ b/pw_bluetooth/emboss_test.cc
@@ -12,8 +12,7 @@
// License for the specific language governing permissions and limitations under
// the License.
#include "gtest/gtest.h"
-#include "pw_bluetooth/hci.emb.h"
-#include "pw_bluetooth/vendor.emb.h"
+#include "pw_bluetooth/hci_test.emb.h"
namespace pw::bluetooth {
namespace {
diff --git a/pw_bluetooth/public/pw_bluetooth/hci.emb b/pw_bluetooth/public/pw_bluetooth/hci.emb
deleted file mode 100644
index 9e2f789..0000000
--- a/pw_bluetooth/public/pw_bluetooth/hci.emb
+++ /dev/null
@@ -1,3910 +0,0 @@
-# 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.
-
-[$default byte_order: "LittleEndian"]
-[(cpp) namespace: "pw::bluetooth::emboss"]
-# =========================== Constants =================================
-
-
-enum CodingFormat:
- -- Coding formats from assigned numbers.
- -- (https://www.bluetooth.com/specifications/assigned-numbers/host-controller-interface)
- [maximum_bits: 8]
- U_LAW = 0x00
- A_LAW = 0x01
- CVSD = 0x02
- TRANSPARENT = 0x03
- LINEAR_PCM = 0x04
- MSBC = 0x05
- LC3 = 0x06
- G729A = 0x07
- VENDOR_SPECIFIC = 0xFF
-
-
-enum GenericEnableParam:
- -- Binary values that can be generically passed to HCI commands that expect a
- -- 1-octet boolean "enable"/"disable" parameter.
- [maximum_bits: 8]
- DISABLE = 0x00
- ENABLE = 0x01
-
-
-enum CoreSpecificationVersion:
- -- Bluetooth Core Specification version
- [maximum_bits: 8]
- V1_0B = 0x00 # v1.0b
- V1_1 = 0x01 # v1.1
- V1_2 = 0x02 # v1.2
- V2_0_EDR = 0x03 # v2.0+EDR
- V2_1_EDR = 0x04 # v2.0+EDR
- V3_0_HS = 0x05 # v3.0+HS
- V4_0 = 0x06 # v4.0
- V4_1 = 0x07 # v4.1
- V4_2 = 0x08 # v4.2
- V5_0 = 0x09 # v5.0
- V5_1 = 0x0A # v5.1
- V5_2 = 0x0B # v5.2
- V5_3 = 0x0C # v5.3
- V5_4 = 0x0D # v5.4
-
-
-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 ConnectionRole:
- [maximum_bits: 8]
- CENTRAL = 0x00
- PERIPHERAL = 0x01
-
-
-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
-
-
-enum StatusCode:
- -- HCI Error Codes. Refer to Core Spec v5.0, Vol 2, Part D for definitions and
- -- descriptions. All enum values are in increasing numerical order, however the
- -- values are listed below for clarity.
- [maximum_bits: 8]
- SUCCESS = 0x00
- UNKNOWN_COMMAND = 0x01
- UNKNOWN_CONNECTION_ID = 0x02
- HARDWARE_FAILURE = 0x03
- PAGE_TIMEOUT = 0x04
- AUTHENTICATION_FAILURE = 0x05
- PIN_OR_KEY_MISSING = 0x06
- MEMORY_CAPACITY_EXCEEDED = 0x07
- CONNECTION_TIMEOUT = 0x08
- CONNECTION_LIMIT_EXCEEDED = 0x09
- SYNCHRONOUS_CONNECTION_LIMIT_EXCEEDED = 0x0A
- CONNECTION_ALREADY_EXISTS = 0x0B
- COMMAND_DISALLOWED = 0x0C
- CONNECTION_REJECTED_LIMITED_RESOURCES = 0x0D
- CONNECTION_REJECTED_SECURITY = 0x0E
- CONNECTION_REJECTED_BAD_BD_ADDR = 0x0F
- CONNECTION_ACCEPT_TIMEOUT_EXCEEDED = 0x10
- UNSUPPORTED_FEATURE_OR_PARAMETER = 0x11
- INVALID_HCI_COMMAND_PARAMETERS = 0x12
- REMOTE_USER_TERMINATED_CONNECTION = 0x13
- REMOTE_DEVICE_TERMINATED_CONNECTION_LOW_RESOURCES = 0x14
- REMOTE_DEVICE_TERMINATED_CONNECTION_POWER_OFF = 0x15
- CONNECTION_TERMINATED_BY_LOCAL_HOST = 0x16
- REPEATED_ATTEMPTS = 0x17
- PAIRING_NOT_ALLOWED = 0x18
- UNKNOWN_LMP_PDU = 0x19
- UNSUPPORTED_REMOTE_FEATURE = 0x1A
- SCO_OFFSET_REJECTED = 0x1B
- SCO_INTERVAL_REJECTED = 0x1C
- SCO_AIRMODE_REJECTED = 0x1D
- INVALID_LMP_OR_LL_PARAMETERS = 0x1E
- UNSPECIFIED_ERROR = 0x1F
- UNSUPPORTED_LMP_OR_LL_PARAMETER_VALUE = 0x20
- ROLE_CHANGE_NOT_ALLOWED = 0x21
- LMP_OR_LL_RESPONSE_TIMEOUT = 0x22
- LMP_ERROR_TRANSACTION_COLLISION = 0x23
- LMP_PDU_NOT_ALLOWED = 0x24
- ENCRYPTION_MODE_NOT_ACCEPTABLE = 0x25
- LINK_KEY_CANNOT_BE_CHANGED = 0x26
- REQUESTED_QOS_NOT_SUPPORTED = 0x27
- INSTANT_PASSED = 0x28
- PAIRING_WITH_UNIT_KEY_NOT_SUPPORTED = 0x29
- DIFFERENT_TRANSACTION_COLLISION = 0x2A
- RESERVED_0 = 0x2B
- QOS_UNACCEPTABLE_PARAMETER = 0x2C
- QOS_REJECTED = 0x2D
- CHANNEL_CLASSIFICATION_NOT_SUPPORTED = 0x2E
- INSUFFICIENT_SECURITY = 0x2F
- PARAMETER_OUT_OF_MANDATORY_RANGE = 0x30
- RESERVED_1 = 0x31
- ROLE_SWITCH_PENDING = 0x32
- RESERVED_2 = 0x33
- RESERVED_SLOT_VIOLATION = 0x34
- ROLE_SWITCH_FAILED = 0x35
- EXTENDED_INQUIRY_RESPONSE_TOO_LARGE = 0x36
- SECURE_SIMPLE_PAIRING_NOT_SUPPORTED_BY_HOST = 0x37
- HOST_BUSY_PAIRING = 0x38
- CONNECTION_REJECTED_NO_SUITABLE_CHANNEL_FOUND = 0x39
- CONTROLLER_BUSY = 0x3A
- UNACCEPTABLE_CONNECTION_PARAMETERS = 0x3B
- DIRECTED_ADVERTISING_TIMEOUT = 0x3C
- CONNECTION_TERMINATED_MIC_FAILURE = 0x3D
- CONNECTION_FAILED_TO_BE_ESTABLISHED = 0x3E
- MAC_CONNECTION_FAILED = 0x3F
- COARSE_CLOCK_ADJUSTMENT_REJECTED = 0x40
- # 5.0
- TYPE_0_SUBMAP_NOT_DEFINED = 0x41
- UNKNOWN_ADVERTISING_IDENTIFIER = 0x42
- LIMIT_REACHED = 0x43
- OPERATION_CANCELLED_BY_HOST = 0x44
-
-
-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 PageScanRepetitionMode:
- -- The page scan repetition mode, representing a maximum time between Page Scans.
- -- (See Core Spec v5.0, Volume 2, Part B, Section 8.3.1)
- [maximum_bits: 8]
- R0_ = 0x00 # Continuous Scan
- R1_ = 0x01 # <= 1.28s
- R2_ = 0x02 # <= 2.56s
-
-
-bits ClockOffset:
- -- 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.
- 15 [+1] Flag valid
- if valid:
- 0 [+15] UInt clock_offset
-
-
-struct BdAddr:
- -- Bluetooth Device Address
- 0 [+6] UInt bd_addr
-
-
-enum IoCapability:
- -- All other values reserved for future use.
- [maximum_bits: 8]
- DISPLAY_ONLY = 0x00
- DISPLAY_YES_NO = 0x01
- KEYBOARD_ONLY = 0x02
- NO_INPUT_NO_OUTPUT = 0x03
-
-
-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
-
-# inclusive-language: disable
-
-
-enum AuthenticationRequirements:
- -- All options without MITM do not require MITM protection, and a numeric
- -- comparison with automatic accept is allowed.
- -- All options with MITM do require MITM protection, and IO capabilities should
- -- be used to determine the authentication procedure.
- [maximum_bits: 8]
- NO_BONDING = 0x00
- MITM_NO_BONDING = 0x01
- DEDICATED_BONDING = 0x02
- MITM_DEDICATED_BONDING = 0x03
- GENERAL_BONDING = 0x04
- MITM_GENERAL_BONDING = 0x05
-
-# inclusive-language: enable
-
-
-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 MajorDeviceClass:
- [maximum_bits: 5]
- MISCELLANEOUS = 0x00
- COMPUTER = 0x01
- PHONE = 0x02
- LAN = 0x03
- AUDIO_VIDEO = 0x04
- PERIPHERAL = 0x05
- IMAGING = 0x06
- WEARABLE = 0x07
- TOY = 0x08
- HEALTH = 0x09
- UNCATEGORIZED = 0x1F
-
-
-bits MajorServiceClasses:
- 0 [+1] Flag limited_discoverable_mode
- $next [+1] Flag le_audio
- $next [+1] Flag reserved
- $next [+1] Flag positioning
- $next [+1] Flag networking
- $next [+1] Flag rendering
- $next [+1] Flag capturing
- $next [+1] Flag object_transfer
- $next [+1] Flag audio
- $next [+1] Flag telephony
- $next [+1] Flag information
-
-
-enum ComputerMinorDeviceClass:
- [maximum_bits: 6]
- UNCATEGORIZED = 0x00
- DESKTOP_WORKSTATION = 0x01
- SERVER_CLASS = 0x02
- LAPTOP = 0x03
- HANDHELD_PC = 0x04
- PALM_SIZE_PC = 0x05
- WEARABLE = 0x06
- TABLET = 0x07
-
-
-enum PhoneMinorDeviceClass:
- [maximum_bits: 6]
- UNCATEGORIZED = 0x00
- CELLULAR = 0x01
- CORDLESS = 0x02
- SMARTPHONE = 0x03
- WIRED_MODEM_OR_VOID_GATEWAY = 0x04
- COMMON_ISDN_ACCESS = 0x05
-
-
-enum LANMinorDeviceClass:
- [maximum_bits: 6]
- FULLY_AVAILABLE = 0x00
- UTILIZED_1_TO_17 = 0x08
- UTILIZED_17_TO_33 = 0x10
- UTILIZED_33_TO_50 = 0x18
- UTILIZED_50_TO_67 = 0x20
- UTILIZED_67_TO_83 = 0x28
- UTILIZED_83_TO_99 = 0x30
- NO_SERVICE_AVAILABLE = 0x38
-
-
-enum AudioVideoMinorDeviceClass:
- [maximum_bits: 6]
- UNCATEGORIZED = 0x00
- WEARABLE_HEADSET_DEVICE = 0x01
- HANDS_FREE_DEVICE = 0x02
- RESERVED_0 = 0x03
- MICROPHONE = 0x04
- LOUDSPEAKER = 0x05
- HEADPHONES = 0x06
- PORTABLE_AUDIO = 0x07
- CAR_AUDIO = 0x08
- SET_TOP_BOX = 0x09
- HIFI_AUDIO_DEVICE = 0x0A
- VCR = 0x0B
- VIDEO_CAMERA = 0x0C
- CAMCORDER = 0x0D
- VIDEO_MONITOR = 0x0E
- VIDEO_DISPLAY_AND_LOUDSPEAKER = 0x0F
- VIDEO_CONFERENCING = 0x10
- RESERVED_1 = 0x11
- GAMING_TOY = 0x12
-
-
-enum PeripheralMinorDeviceClass0:
- [maximum_bits: 4]
- UNCATEGORIZED = 0x00
- JOYSTICK = 0x01
- GAMEPAD = 0x02
- REMOTE_CONTROL = 0x03
- SENSING_DEVICE = 0x04
- DIGITIZER_TABLET = 0x05
- CARD_READER = 0x06
- DIGITAL_PEN = 0x07
- HANDHELD_SCANNER = 0x08
- HANDHELD_GESTURAL_INPUT_DEVICE = 0x09
-
-
-enum PeripheralMinorDeviceClass1:
- [maximum_bits: 2]
- UNCATEGORIZED = 0x00
- KEYBOARD = 0x01
- POINTING_DEVICE = 0x02
- COMBO_KEYBOARD_POINTING_DEVICE = 0x03
-
-
-bits PeripheralMinorDeviceClass:
- 0 [+4] PeripheralMinorDeviceClass0 device_class_0
- $next [+2] PeripheralMinorDeviceClass1 device_class_1
-
-
-enum ImagingMinorDeviceClass:
- [maximum_bits: 2]
- UNCATEGORIZED = 0x00
-
-
-bits ImagingMinorDeviceClassBits:
- 0 [+2] ImagingMinorDeviceClass device_class
- $next [+1] Flag display
- $next [+1] Flag camera
- $next [+1] Flag scanner
- $next [+1] Flag printer
-
-
-enum WearableMinorDeviceClass:
- [maximum_bits: 6]
- WRISTWATCH = 0x01
- PAGER = 0x02
- JACKET = 0x03
- HELMET = 0x04
- GLASSES = 0x05
-
-
-enum ToyMinorDeviceClass:
- [maximum_bits: 6]
- ROBOT = 0x01
- VEHICLE = 0x02
- DOLL = 0x03
- CONTROLLER = 0x04
- GAME = 0x05
-
-
-enum HealthMinorDeviceClass:
- [maximum_bits: 6]
- UNDEFINED = 0x00
- BLOOD_PRESSURE_MONITOR = 0x01
- THERMOMETER = 0x02
- WEIGHING_SCALE = 0x03
- GLUCOSE_METER = 0x04
- PULSE_OXIMETER = 0x05
- HEART_PULSE_RATE_MONITOR = 0x06
- HEALTH_DATA_DISPLAY = 0x07
- STEP_COUNTER = 0x08
- BODY_COMPOSITION_ANALYZER = 0x09
- PEAK_FLOW_MONITOR = 0x0A
- MEDICATION_MONITOR = 0x0B
- KNEE_PROSTHESIS = 0x0C
- ANKLE_PROSTHESIS = 0x0D
- GENERIC_HEALTH_MANAGER = 0x0E
- PERSONAL_MOBILITY_DEVICE = 0x0F
-
-
-bits ClassOfDevice:
- -- Defined in Assigned Numbers for the Baseband
- -- https://www.bluetooth.com/specifications/assigned-numbers/baseband
- 0 [+2] UInt zero
- [requires: this == 0]
-
- if major_device_class == MajorDeviceClass.COMPUTER:
- 2 [+6] ComputerMinorDeviceClass computer_minor_device_class
-
- if major_device_class == MajorDeviceClass.PHONE:
- 2 [+6] PhoneMinorDeviceClass phone_minor_device_class
-
- if major_device_class == MajorDeviceClass.LAN:
- 2 [+6] LANMinorDeviceClass lan_minor_device_class
-
- if major_device_class == MajorDeviceClass.AUDIO_VIDEO:
- 2 [+6] AudioVideoMinorDeviceClass audio_video_minor_device_class
-
- if major_device_class == MajorDeviceClass.PERIPHERAL:
- 2 [+6] PeripheralMinorDeviceClass peripheral_minor_device_class
-
- if major_device_class == MajorDeviceClass.IMAGING:
- 2 [+6] ImagingMinorDeviceClassBits imaging_minor_device_class
-
- if major_device_class == MajorDeviceClass.WEARABLE:
- 2 [+6] WearableMinorDeviceClass wearable_minor_device_class
-
- if major_device_class == MajorDeviceClass.TOY:
- 2 [+6] ToyMinorDeviceClass toy_minor_device_class
-
- if major_device_class == MajorDeviceClass.HEALTH:
- 2 [+6] HealthMinorDeviceClass health_minor_device_class
-
- 8 [+5] MajorDeviceClass major_device_class
- $next [+11] MajorServiceClasses major_service_classes
-
-
-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 LEAddressType:
- -- Possible values that can be reported for various |*_address_type| parameters in various LE packets.
- [maximum_bits: 8]
- PUBLIC = 0x00
- -- Public Device Address (default)
-
- RANDOM = 0x01
- -- Random Device Address
-
- PUBLIC_IDENTITY = 0x02
- -- Public Identity Address (corresponds to Resolved Private Address)
-
- RANDOM_IDENTITY = 0x03
- -- Random (static) Identity Address (corresponds to Resolved Private Address)
-
- ANONYMOUS = 0xFF
- -- No address provided (anonymous advertisement)
- -- This is a special value that is only used in LE Advertising Report events.
-
-
-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 LEDirectAddressType:
- -- Possible values that can be reported for the |direct_address_type| parameter in LE Advertising Report events.
- [maximum_bits: 8]
- PUBLIC = 0x00
- -- Public Device Address
-
- PRIVATE = 0x01
- -- Non-resolvable Private Address or Static Device Address
-
- RESOLVABLE_PRIVATE_OWN_ADDRESS_PUBLIC = 0x02
- -- Resolvable Private Address (resolved by Controller; Own_Address_Type was 0x00 or 0x02)
-
- RESOLVABLE_PRIVATE_OWN_ADDRESS_RANDOM = 0x03
- -- Resolvable Private Address (resolved by Controller; Own_Address_Type was 0x01 or 0x03)
-
- RESOLVABLE_PRIVATE = 0xFE
- -- Resolvable Private Address (Controller unable to resolve)
-
-
-enum LEPeerAddressType:
- -- Possible values that can be used for the address_type parameters in various
- -- HCI commands
- [maximum_bits: 8]
- PUBLIC = 0x00
- RANDOM = 0x01
- ANONYMOUS = 0xFF
-
-
-enum LEPeerAddressTypeNoAnon:
- -- Possible values that can be used for the address_type parameters in various
- -- HCI commands
- [maximum_bits: 8]
- PUBLIC = 0x00
- RANDOM = 0x01
- ANONYMOUS = 0xFF
-
-
-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 LEPrimaryAdvertisingPHY:
- [maximum_bits: 8]
- LE_1M = 0x01
- LE_CODED = 0x03
- LE_CODED_S2 = 0x04
-
-
-enum LESecondaryAdvertisingPHY:
- [maximum_bits: 8]
- NONE = 0x00
- LE_1M = 0x01
- LE_2M = 0x02
- LE_CODED = 0x03
- LE_CODED_S2 = 0x04
-
-
-enum LEAdvertisingDataStatus:
- [maximum_bits: 2]
- COMPLETE = 0b00
- INCOMPLETE = 0b01
- INCOMPLETE_TRUNCATED = 0b10
-
-
-bits LEExtendedAdvertisingEventType:
- 0 [+1] Flag connectable
- $next [+1] Flag scannable
- $next [+1] Flag directed
- $next [+1] Flag scan_response
- $next [+1] Flag legacy
- $next [+2] LEAdvertisingDataStatus data_status
-
-
-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
-
-
-enum LinkType:
- [maximum_bits: 8]
- SCO = 0x00
- ACL = 0x01
- ESCO = 0x02
-
-
-enum EncryptionStatus:
- OFF = 0x00
- ON_WITH_E0_FOR_BREDR_OR_AES_FOR_LE = 0x01
- ON_WITH_AES_FOR_BREDR = 0x02
-
-
-bits LmpFeatures(page: UInt:8):
- -- Bit mask of Link Manager Protocol features.
- [requires: page <= 2]
- if page == 0:
- 0 [+1] Flag three_slot_packets
- 1 [+1] Flag five_slot_packets
- 2 [+1] Flag encryption
- 3 [+1] Flag slot_offset
- 4 [+1] Flag timing_accuracy
- 5 [+1] Flag role_switch
- 6 [+1] Flag hold_mode
- 7 [+1] Flag sniff_mode
- # 8: previously used
- 9 [+1] Flag power_control_requests
- 10 [+1] Flag channel_quality_driven_data_rate
- 11 [+1] Flag sco_link
- 12 [+1] Flag hv2_packets
- 13 [+1] Flag hv3_packets
- 14 [+1] Flag mu_law_log_synchronous_data
- 15 [+1] Flag a_law_log_synchronous_data
- 16 [+1] Flag cvsd_synchronous_data
- 17 [+1] Flag paging_parameter_negotiation
- 18 [+1] Flag power_control
- 19 [+1] Flag transparent_synchronous_data
- 20 [+3] UInt flow_control_lag
- 23 [+1] Flag broadcast_encryption
- # 24: reserved for future use
- 25 [+1] Flag enhanced_data_rate_acl_2_mbs_mode
- 26 [+1] Flag enhanced_data_rate_acl_3_mbs_mode
- 27 [+1] Flag enhanced_inquiry_scan
- 28 [+1] Flag interlaced_inquiry_scan
- 29 [+1] Flag interlaced_page_scan
- 30 [+1] Flag rssi_with_inquiry_results
- 31 [+1] Flag extended_sco_link_ev3_packets
- 32 [+1] Flag ev4_packets
- 33 [+1] Flag ev5_packets
- # 34: reserved for future use
- 35 [+1] Flag afh_capable_peripheral
- 36 [+1] Flag afh_classification_peripheral
- 37 [+1] Flag bredr_not_supported
- 38 [+1] Flag le_supported_controller
- 39 [+1] Flag three_slot_enhanced_data_rate_acl_packets
- 40 [+1] Flag five_slot_enhanced_data_rate_acl_packets
- 41 [+1] Flag sniff_subrating
- 42 [+1] Flag pause_encryption
- 43 [+1] Flag afh_capable_central
- 44 [+1] Flag afh_classification_central
- 45 [+1] Flag enhanced_data_rate_esco_2_mbs_mode
- 46 [+1] Flag enhanced_data_rate_esco_3_mbs_mode
- 47 [+1] Flag three_slot_enhanced_data_rate_esco_packets
- 48 [+1] Flag extended_inquiry_response
- 49 [+1] Flag simultaneous_le_and_bredr_to_same_device_capable_controller
- # 50: reserved for future use
- 51 [+1] Flag secure_simple_pairing_controller_support
- 52 [+1] Flag encapsulated_pdu
- 53 [+1] Flag erroneous_data_reporting
- 54 [+1] Flag non_flushable_packet_boundary_flag
- # 55: reserved for future use
- 56 [+1] Flag hci_link_supervision_timeout_changed_event
- 57 [+1] Flag variable_inquiry_tx_power_level
- 58 [+1] Flag enhanced_power_control
- # 59-62: reserved for future use
- 63 [+1] Flag extended_features
-
- if page == 1:
- 0 [+1] Flag secure_simple_pairing_host_support
- 1 [+1] Flag le_supported_host
- # 2: previously used
- 3 [+1] Flag secure_connection_host_support
-
- if page == 2:
- 0 [+1] Flag connectionless_peripheral_broadcast_transmitter_operation
- 1 [+1] Flag connectionless_peripheral_broadcast_receiver_operation
- 2 [+1] Flag synchronization_train
- 3 [+1] Flag synchronization_scan
- 4 [+1] Flag hci_inquiry_response_notification_event
- 5 [+1] Flag generalized_interlaced_scan
- 6 [+1] Flag coarse_clock_adjustment
- # 7: reserved for future use
- 8 [+1] Flag secure_connections_controller_support
- 9 [+1] Flag ping
- 10 [+1] Flag slot_availability_mask
- 11 [+1] Flag train_nudging
-
-
-bits LEFeatureSet:
- 0 [+1] Flag le_encryption
- $next [+1] Flag connection_parameters_request_procedure
- $next [+1] Flag extended_reject_indication
- $next [+1] Flag peripheral_initiated_features_exchange
- $next [+1] Flag le_ping
- $next [+1] Flag le_data_packet_length_extension
- $next [+1] Flag ll_privacy
- $next [+1] Flag extended_scanning_filter_policies
- $next [+1] Flag le_2m_phy
- $next [+1] Flag stable_modulation_index_transmitter
- $next [+1] Flag stable_modulation_index_receiver
- $next [+1] Flag le_coded_phy
- $next [+1] Flag le_extended_advertising
- $next [+1] Flag le_periodic_advertising
- $next [+1] Flag channel_selection_algorithm_2
- $next [+1] Flag le_power_class_1
- $next [+1] Flag minimum_number_of_used_channels_procedure
- $next [+1] Flag connection_cte_request
- $next [+1] Flag connection_cte_response
- $next [+1] Flag connectionless_cte_transmitter
- $next [+1] Flag connectionless_cte_receiver
- $next [+1] Flag antenna_switching_during_cte_transmission
- $next [+1] Flag antenna_switching_during_cte_reception
- $next [+1] Flag receiving_constant_tone_extensions
- $next [+1] Flag periodic_advertising_sync_transfer_sender
- $next [+1] Flag periodic_advertising_sync_transfer_recipient
- $next [+1] Flag sleep_clock_accuracy_updates
- $next [+1] Flag remote_public_key_validation
- $next [+1] Flag connected_isochronous_stream_central
- $next [+1] Flag connected_isochronous_stream_peripheral
- $next [+1] Flag isochronous_broadcaster
- $next [+1] Flag synchronized_receiver
- $next [+1] Flag connected_isochronous_stream_host_support
- $next [+1] Flag le_power_control_request_1
- $next [+1] Flag le_power_control_request_2
- -- Previous two bits shall always have the same value.
-
- $next [+1] Flag le_path_loss_monitoring
- $next [+1] Flag periodic_advertising_adi_support
- $next [+1] Flag connection_subrating
- $next [+1] Flag connection_subrating_host_support
- $next [+1] Flag channel_classification
- $next [+1] Flag advertising_coding_selection
- $next [+1] Flag advertising_coding_selection_host_support
- $next [+1] Flag reserved # Bit 42 is skipped
- $next [+1] Flag periodic_advertising_with_responses_advertiser
- $next [+1] Flag periodic_advertising_with_responses_scanner
-
-
-enum LEClockAccuracy:
- -- Possible values that can be reported for the |central_clock_accuracy| and
- -- |advertiser_clock_accuracy| parameters.
- [maximum_bits: 8]
- PPM_500 = 0x00
- PPM_250 = 0x01
- PPM_150 = 0x02
- PPM_100 = 0x03
- PPM_75 = 0x04
- PPM_50 = 0x05
- PPM_30 = 0x06
- PPM_20 = 0x07
-
-
-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 packet headers ==========================
-
-
-bits OpCodeBits:
- # Emboss currently lacks support for default field values and cross-type integral equality.
- # (https://github.com/google/emboss/issues/21)
- # (https://github.com/google/emboss/issues/23)
- # Upon the addition of these features, we will transition OpCodeBits to be a parameterized
- # field which defaults for each HCI packet type to its corresponding OpCode.
- 0 [+10] UInt ocf
- $next [+6] UInt ogf
-
-
-struct CommandHeader:
- -- HCI Command packet header.
- 0 [+2] OpCodeBits opcode
- $next [+1] UInt parameter_total_size
-
-
-struct EventHeader:
- -- HCI Event packet header.
- 0 [+1] UInt event_code
- $next [+1] UInt parameter_total_size
-
-# ========================= 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- BD_ADDR of the device to be connected
-
- $next [+2] PacketType packet_type
- -- Mask of allowable packet types.
-
- $next [+1] 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] 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] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+2] UInt connection_handle
- -- Connection_Handle (only the lower 12-bits are meaningful).
- -- Range: 0x0000 to 0x0EFF
-
- $next [+1] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- The 48-bit BD_ADDR of the remote device requesting the connection.
-
- $next [+1] ConnectionRole role
-
-
-struct RejectConnectionRequestCommand:
- -- 7.1.9 Reject Connection Request command (v1.1) (BR/EDR)
- -- HCI_Reject_Connection_Request
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- The 48-bit BD_ADDR of the remote device requesting the connection.
-
- $next [+1] StatusCode reason
- -- Must be one of CONNECTION_REJECTED* from StatusCode in this file
-
-
-struct LinkKey:
- 0 [+16] UInt:8[16] value
-
-
-struct LinkKeyRequestReplyCommand:
- -- 7.1.10 Link Key Request Reply command (v1.1) (BR/EDR)
- -- HCI_Link_Key_Request_Reply
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- The 48-bit BD_ADDR of the remote device requesting the connection.
-
- let bredr_link_key_size = LinkKey.$size_in_bytes
- $next [+bredr_link_key_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- Address of the device whose name is to be requested.
-
- $next [+1] PageScanRepetitionMode page_scan_repetition_mode
- -- Page Scan Repetition Mode of the device, obtained by Inquiry.
-
- $next [+1] UInt reserved
- [requires: this == 0]
-
- $next [+2] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- Address of the remote device that sent the request.
-
- $next [+1] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- The BD_ADDR of the remote device involved in simple pairing process
-
- $next [+1] 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] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- The BD_ADDR of the remote device involved in the simple pairing process.
-
- $next [+1] StatusCode reason
- -- Reason that Simple Pairing was rejected. See 7.1.36 for valid error codes.
-
-
-struct CodecId:
- 0 [+1] 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] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct WriteScanEnableCommand:
- -- 7.3.18 Write Scan Enable command (v1.1) (BR/EDR)
- -- HCI_Write_Scan_Enable
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct WritePageScanActivityCommand:
- -- 7.3.20 Write Page Scan Activity command (v1.1) (BR/EDR)
- -- HCI_Write_Page_Scan_Activity
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct WriteInquiryScanActivityCommand:
- -- 7.3.22 Write Inquiry Scan Activity command (v1.1) (BR/EDR)
- -- HCI_Write_Inquiry_Scan_Activity
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct WriteClassOfDeviceCommand:
- -- 7.3.26 Write Class Of Device command (v1.1) (BR/EDR)
- -- HCI_Write_Class_Of_Device
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+3] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct WriteInquiryModeCommand:
- -- 7.3.50 Write Inquiry Mode (v1.2) (BR/EDR)
- -- HCI_Write_Inquiry_Mode
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct WritePageScanTypeCommand:
- -- 7.3.52 Write Page Scan Type (v1.2) (BR/EDR)
- -- HCI_Write_Page_Scan_Type
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct WriteSimplePairingModeCommand:
- -- 7.3.59 Write Simple Pairing Mode (v2.1 + EDR) (BR/EDR)
- -- HCI_Write_Simple_Pairing_Mode
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] 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 [+CommandHeader.$size_in_bytes] 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 [+CommandHeader.$size_in_bytes] CommandHeader header
-
-
-struct WriteFlowControlModeCommand:
- -- 7.3.73 Write Flow Control Mode command (v3.0 + HS) (BR/EDR)
- -- HCI_Write_Flow_Control_Mode
- 0 [+CommandHeader.$size_in_bytes] 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 [+CommandHeader.$size_in_bytes] CommandHeader header
-
-
-struct WriteLEHostSupportCommand:
- -- 7.3.79 Write LE Host Support command (v4.0) (BR/EDR)
- -- HCI_Write_LE_Host_Support
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] 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 [+CommandHeader.$size_in_bytes] 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 [+CommandHeader.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct ReadLocalSupportedCommandsCommand:
- -- 7.4.2 Read Local Supported Commands command (v1.2)
- -- HCI_Read_Local_Supported_Commands
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct ReadLocalSupportedFeaturesCommand:
- -- 7.4.3 Read Local Supported Features command (v1.1)
- -- HCI_Read_Local_Supported_Features
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct ReadLocalExtendedFeaturesCommand:
- -- 7.4.4 Read Local Extended Features command (v1.2) (BR/EDR)
- -- HCI_Read_Local_Extended_Features
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct ReadBdAddrCommand:
- -- 7.4.6 Read BD_ADDR command (v1.1) (BR/EDR, LE)
- -- HCI_Read_BD_ADDR
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct LESetRandomAddressCommand:
- -- 7.8.4 LE Set Random Address command (v4.0) (LE)
- -- HCI_LE_Set_Random_Address
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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] LEPeerAddressType peer_address_type
- -- ANONYMOUS address type not allowed.
-
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct LESetAdvertisingDataCommand:
- -- 7.8.7 LE Set Advertising Data command (v4.0) (LE)
- -- HCI_LE_Set_Advertising_Data
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] GenericEnableParam le_scan_enable
- $next [+1] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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] GenericEnableParam initiator_filter_policy
-
- $next [+1] LEAddressType peer_address_type
-
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] LEPeerAddressType address_type
- -- The address type of the peer.
-
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] LEPeerAddressType address_type
- -- The address type of the peer.
-
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+8] UInt random_number
- $next [+2] UInt encrypted_diversifier
- $next [+LinkKey.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+LinkKey.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] UInt advertising_handle
- -- Handle used to identify an advertising set.
-
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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] LEPeerAddressTypeNoAnon peer_address_type
-
- $next [+BdAddr.$size_in_bytes] 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] 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] 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] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
-
-
-struct LERemoveAdvertisingSetCommand:
- -- 7.8.59 LE Remove Advertising Set command (v5.0) (LE)
- -- HCI_LE_Remove_Advertising_Set
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] CommandHeader header
-
- $next [+1] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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 [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] LEAddressType advertiser_address_type
- -- Address type of the advertiser. The LEAddressType::kPublicIdentity and
- -- LEAddressType::kRandomIdentity values are excluded for this command.
-
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] LEPeerAddressTypeNoAnon peer_identity_address_type
- -- The peer identity address type (either Public Identity or Private
- -- Identity).
-
- $next [+BdAddr.$size_in_bytes] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
-
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+2] UInt connection_handle
- -- Connection handle of the CIS
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+1] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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 = CommandHeader.$size_in_bytes
- 0 [+hdr_size] 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
-
-
-# ========================= HCI Event packets ===========================
-# Core Spec v5.3 Vol 4, Part E, Section 7.7
-
-
-struct VendorDebugEvent:
- -- This opcode is reserved for vendor-specific debugging events.
- -- See Core Spec v5.3 Vol 4, Part E, Section 5.4.4.
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] UInt subevent_code
- -- The event code for the vendor subevent.
-
-
-struct InquiryCompleteEvent:
- -- Inquiry Complete Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
-
-
-struct InquiryResult:
- 0 [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- BD_ADDR for a device which responded.
-
- $next [+1] PageScanRepetitionMode page_scan_repetition_mode
- $next [+2] UInt reserved
- -- Reserved for future use.
-
- $next [+3] ClassOfDevice class_of_device
- -- Class of Device for the device.
-
- $next [+2] ClockOffset clock_offset
- -- The lower 15 bits represent bits 16-2 of CLKNPeripheral-CLK.
-
-
-struct InquiryResultEvent:
- -- Inquiry Result Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] UInt num_responses
- -- Number of responses from the Inquiry.
-
- let response_size = InquiryResult.$size_in_bytes
- $next [+num_responses*response_size] InquiryResult[] responses
-
-
-struct CommandCompleteEvent:
- -- Core Spec v5.3 Vol 4, Part E, Section 7.7.14
- -- EventHeader.opcode == 0xe
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] UInt num_hci_command_packets
- $next [+2] OpCodeBits command_opcode
- let event_fixed_size = $size_in_bytes-hdr_size
- let return_parameters_size = header.parameter_total_size-event_fixed_size
-
-
-struct SimpleCommandCompleteEvent:
- -- A Command Complete event where a StatusCode is the only return parameter.
- -- Also useful for generically getting to status of a larger command complete
- -- event.
- let hdr_size = CommandCompleteEvent.$size_in_bytes
- 0 [+hdr_size] CommandCompleteEvent command_complete
- $next [+1] StatusCode status
-
-
-struct CommandStatusEvent:
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+1] UInt num_hci_command_packets
- $next [+2] OpCodeBits command_opcode
-
-
-struct ConnectionCompleteEvent:
- -- Connection Complete Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- The address of the connected device
-
- $next [+1] LinkType link_type
- $next [+1] GenericEnableParam encryption_enabled
-
-
-struct ConnectionRequestEvent:
- -- Connection Request Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- -- The address of the device that's requesting the connection.
-
- $next [+3] ClassOfDevice class_of_device
- -- The Class of Device of the device which requests the connection.
-
- $next [+1] LinkType link_type
-
-
-struct DisconnectionCompleteEvent:
- -- Disconnection Complete Event (v1.1) (BR/EDR & LE)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+1] StatusCode reason
-
-
-struct AuthenticationCompleteEvent:
- -- Authentication Complete Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
-
-struct RemoteNameRequestCompleteEvent:
- -- Remote Name Request Complete Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+BdAddr.$size_in_bytes] BdAddr bd_addr
- $next [+248] UInt:8[248] remote_name
- -- UTF-8 encoded friendly name. If the name is less than 248 characters, it
- -- is null terminated and the remaining bytes are not valid.
-
-
-struct EncryptionChangeEventV1:
- -- Encryption Change Event (v1.1) (BR/EDR & LE)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+1] EncryptionStatus encryption_enabled
-
-
-struct ChangeConnectionLinkKeyCompleteEvent:
- -- Change Connection Link Key Complete Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
-
-struct ReadRemoteSupportedFeaturesCompleteEvent:
- -- Read Remote Supported Features Complete Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+8] LmpFeatures(0) lmp_features
- -- Page 0 of the LMP features.
-
-
-struct ReadRemoteVersionInfoCompleteEvent:
- -- Read Remote Version Information Complete Event (v1.1) (BR/EDR & LE)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+1] CoreSpecificationVersion version
- -- Version of the Current LMP or Link Layer supported by the remote Controller.
-
- $next [+2] UInt company_identifier
- -- Company identifier for the manufacturer of the remote Controller. Assigned by Bluetooth SIG.
-
- $next [+2] UInt subversion
- -- Revision of the LMP or Link Layer implementation in the remote Controller. This value is vendor-specific.
-
-
-struct ReadRemoteExtendedFeaturesCompleteEvent:
- -- Read Remote Extended Features Complete Event (v1.1) (BR/EDR)
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- -- Only the lower 12-bits are meaningful.
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+1] UInt page_number
- -- 0x00: The normal LMP features as returned by HCI_Read_Remote_Supported_Features command.
- -- 0x01 to 0xFF: The page number of the features returned.
-
- $next [+1] UInt max_page_number
- -- The highest features page number which contains non-zero bits for the remote device.
-
- $next [+8] LmpFeatures(page_number) lmp_features
- -- Bit map of requested page of LMP features.
-
-
-struct LEMetaEvent:
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] UInt subevent_code
- -- The event code for the LE subevent.
-
-
-struct LEConnectionCompleteSubevent:
- 0 [+LEMetaEvent.$size_in_bytes] LEMetaEvent le_meta_event
-
- $next [+1] StatusCode status
-
- $next [+2] UInt connection_handle
- -- Only the lower 12-bits are meaningful.
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+1] ConnectionRole role
-
- $next [+1] LEPeerAddressType peer_address_type
-
- $next [+BdAddr.$size_in_bytes] BdAddr peer_address
- -- Public Device Address or Random Device Address of the peer device.
-
- $next [+2] UInt connection_interval
- -- Time: N * 1.25 ms
- -- Range: 7.5 ms to 4 s
- [requires: 0x0006 <= this <= 0x0C80]
-
- $next [+2] UInt peripheral_latency
- [requires: 0x0000 <= this <= 0x01F3]
-
- $next [+2] UInt supervision_timeout
- -- Time: N * 10 ms
- -- Range: 100 ms to 32 s
- [requires: 0x000A <= this <= 0x0C80]
-
- $next [+1] LEClockAccuracy central_clock_accuracy
- -- Only valid for a peripheral. On a central, this parameter shall be set to 0x00.
-
-
-struct LEConnectionUpdateCompleteSubevent:
- 0 [+LEMetaEvent.$size_in_bytes] LEMetaEvent le_meta_event
-
- $next [+1] StatusCode status
-
- $next [+2] UInt connection_handle
- -- Only the lower 12-bits are meaningful.
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+2] UInt connection_interval
- -- Time: N * 1.25 ms
- -- Range: 7.5 ms to 4 s
- [requires: 0x0006 <= this <= 0x0C80]
-
- $next [+2] UInt peripheral_latency
- [requires: 0x0000 <= this <= 0x01F3]
-
- $next [+2] UInt supervision_timeout
- -- Time: N * 10 ms
- -- Range: 100 ms to 32 s
- [requires: 0x000A <= this <= 0x0C80]
-
-
-struct LEReadRemoteFeaturesCompleteSubevent:
- 0 [+LEMetaEvent.$size_in_bytes] LEMetaEvent le_meta_event
- $next [+1] StatusCode status
- $next [+2] UInt connection_handle
- -- Only the lower 12-bits are meaningful.
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+8] bits:
- 0 [+LEFeatureSet.$size_in_bits] LEFeatureSet le_features
-
-
-struct LEExtendedAdvertisingReportData:
- 0 [+2] bits:
-
- 0 [+7] LEExtendedAdvertisingEventType event_type
-
- $next [+1] LEAddressType address_type
- -- Address type of the advertiser.
-
- $next [+BdAddr.$size_in_bytes] BdAddr address
- -- Public Device Address, Random Device Address, Public Identity Address or
- -- Random (static) Identity Address of the advertising device.
-
- $next [+1] LEPrimaryAdvertisingPHY primary_phy
- -- Indicates the PHY used to send the advertising PDU on the primary advertising
- -- channel. Legacy PDUs always use LE_1M. NONE, LE_2M, and LE_CODED_S2 are excluded.
-
- $next [+1] LESecondaryAdvertisingPHY secondary_phy
- -- Indicates the PHY used to send the advertising PDU(s), if any, on the secondary
- -- advertising channel. A value of NONE means that no packets were received on the
- -- secondary advertising channel.
-
- $next [+1] UInt advertising_sid
- -- Value of the Advertising SID subfield in the ADI field of the PDU. A value of
- -- 0xFF means no ADI field provided.
- [requires: 0x00 <= this <= 0x0F || this == 0xFF]
-
- $next [+1] UInt tx_power
- -- Units: dBm. A value of 0x7F means Tx Power information is not available.
- [requires: -127 <= this <= 20 || this == 0x7F]
-
- $next [+1] UInt rssi
- -- Units: dBm. A value of 0x7F means RSSI is not available.
- [requires: -127 <= this <= 20 || this == 0x7F]
-
- $next [+2] UInt periodic_advertising_interval
- -- 0x0000: No periodic advertising.
- -- 0xXXXX:
- -- Time = N * 1.25 ms
- -- Time Range: 7.5 ms to 81,918.75 s
- [requires: 0x0006 <= this <= 0xFFFF || this == 0x0000]
-
- $next [+1] LEDirectAddressType direct_address_type
-
- $next [+BdAddr.$size_in_bytes] BdAddr direct_address
- -- TargetA field in the advertisement or either Public Identity Address or Random (static)
- -- Identity Address of the target device.
-
- $next [+1] UInt data_length
- -- Length of the |data| field.
-
- $next [+data_length] UInt:8[data_length] data
- -- |data_length| octets of advertising or scan response data formatted as defined in
- -- [Vol 3] Part C, Section 11. Note: Each element of this array has a variable length.
-
-
-struct LEExtendedAdvertisingReportSubevent(reports_size: UInt:8):
- -- LE Extended Advertising Report Event (v5.0) (LE)
- 0 [+LEMetaEvent.$size_in_bytes] LEMetaEvent le_meta_event
- $next [+1] UInt num_reports
- -- Number of separate reports in the event.
- [requires: 0x01 <= this <= 0x0A]
-
- $next [+reports_size] UInt:8[reports_size] reports
- -- Since each report has a variable length, they are stored in a UInt:8 array.
-
-# ============================ Test packets =============================
-
-
-struct TestCommandPacket:
- -- Test HCI Command packet with single byte payload.
- let hdr_size = CommandHeader.$size_in_bytes
- 0 [+hdr_size] CommandHeader header
- $next [+1] UInt payload
-
-
-struct TestEventPacket:
- -- Test HCI Event packet with single byte payload.
- let hdr_size = EventHeader.$size_in_bytes
- 0 [+hdr_size] EventHeader header
- $next [+1] UInt payload
diff --git a/pw_bluetooth/public/pw_bluetooth/vendor.emb b/pw_bluetooth/public/pw_bluetooth/vendor.emb
deleted file mode 100644
index 6f306d5..0000000
--- a/pw_bluetooth/public/pw_bluetooth/vendor.emb
+++ /dev/null
@@ -1,287 +0,0 @@
-# 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 packet definitions for extensions to the Bluetooth
-# Host-Controller interface. These extensions are not standardized through the
-# Bluetooth SIG.
-#
-# NOTE: The definitions below are incomplete. They get added as needed.
-# This list will grow as we support more vendor features.
-
-import "hci.emb" as hci
-
-[$default byte_order: "LittleEndian"]
-[(cpp) namespace: "pw::bluetooth::vendor::android_hci"]
-# ========================= HCI packet headers ==========================
-
-
-struct AndroidCommandHeader:
- -- HCI Vendor Command packet header.
- let hdr_size = hci.CommandHeader.$size_in_bytes
- 0 [+hdr_size] hci.CommandHeader header
- $next [+1] UInt sub_opcode
-
-
-# ======================= Android HCI extensions ========================
-# Documentation: https://source.android.com/devices/bluetooth/hci_requirements
-
-enum Capability:
- [maximum_bits: 8]
- NOT_CAPABLE = 0x00
- CAPABLE = 0x01
-
-bits AudioCodecSupportMask:
- 0 [+1] Flag sbc
- 1 [+1] Flag aac
- 2 [+1] Flag aptx
- 3 [+1] Flag aptx_hd
- 4 [+1] Flag ldac
-
-enum A2dpCodecType:
- [maximum_bits: 8]
- SBC = 0x01
- AAC = 0x02
- APTX = 0x04
- APTX_HD = 0x08
- LDAC = 0x10
-
-struct A2dpScmsTEnable:
- 0 [+1] hci.GenericEnableParam enabled
- $next [+1] UInt header
-
-enum A2dpSamplingFrequency:
- [maximum_bits: 8]
- HZ_44100 = 0x01
- HZ_48000 = 0x02
- HZ_88200 = 0x04
- HZ_96000 = 0x08
-
-enum A2dpBitsPerSample:
- [maximum_bits: 8]
- BITS_PER_SAMPLE_16 = 0x01
- BITS_PER_SAMPLE_24 = 0x02
- BITS_PER_SAMPLE_32 = 0x04
-
-enum A2dpChannelMode:
- [maximum_bits: 8]
- MONO = 0x01
- STEREO = 0x02
-
-enum SbcSamplingFrequency:
- [maximum_bits: 4]
- HZ_48000 = 0x01
- HZ_44100 = 0x02
- HZ_32000 = 0x04
- HZ_16000 = 0x08
-
-enum SbcChannelMode:
- [maximum_bits: 4]
- JOINT_STEREO = 0x01
- STEREO = 0x02
- DUAL_CHANNEL = 0x04
- MONO = 0x08
-
-enum SbcBlockLen:
- [maximum_bits: 4]
- BLOCK_LEN_16 = 0x01
- BLOCK_LEN_12 = 0x02
- BLOCK_LEN_8 = 0x04
- BLOCK_LEN_4 = 0x08
-
-enum SbcSubBands:
- [maximum_bits: 2]
- SUBBANDS_8 = 0x01
- SUBBANDS_4 = 0x02
-
-enum SbcAllocationMethod:
- [maximum_bits: 2]
- LOUNDNESS = 0x01
- SNR = 0x02
-
-enum AacEnableVariableBitRate:
- -- 1-octet boolean "enable"/"disable" parameter for AAC variable bitrate
- [maximum_bits: 8]
- DISABLE = 0x00
- ENABLE = 0x80
-
-enum LdacBitrateIndex:
- -- Values 0x03 - 0x7E are reserved
- -- Values 0x80 - 0xFF are reserved
- [maximum_bits: 8]
- HIGH = 0x00
- MID = 0x01
- LOW = 0x02
- ADAPTIVE_BITRATE = 0x7F
-
-bits LdacChannelMode:
- -- Bitmask values for LDAC Channel Mode
- 0 [+1] Flag stereo
- 1 [+1] Flag dual
- 2 [+1] Flag mono
-
-struct SbcCodecInformation:
- 0 [+1] bits:
- 0 [+2] SbcAllocationMethod allocation_method
- $next [+2] SbcSubBands subbands
- $next [+4] SbcBlockLen block_length
- $next [+1] UInt min_bitpool_value
- $next [+1] UInt max_bitpool_value
- $next [+1] bits:
- 0 [+4] SbcChannelMode channel_mode
- $next [+4] SbcSamplingFrequency sampling_frequency
- $next [+28] UInt:8[28] reserved
-
-struct AacCodecInformation:
- 0 [+1] UInt object_type
- $next [+1] AacEnableVariableBitRate variable_bit_rate
- $next [+30] UInt:8[30] reserved
-
-struct LdacCodecInformation:
- 0 [+4] UInt vendor_id
- -- Must always be set to kLdacVendorId
- $next [+2] UInt codec_id
- -- Must always be set to kLdacCodecId
- -- All other values are reserved
- $next [+1] LdacBitrateIndex bitrate_index
- -- See enum class LdacBitrateIndex in this file for possible values
- $next [+1] bits:
- 0 [+3] LdacChannelMode ldac_channel_mode
- -- Bitmask: LDAC channel mode (see LdacChannelMode for bitmask values)
- $next [+24] UInt:8[24] reserved
-
-
-# ============ Commands ============
-
-
-struct StartA2dpOffloadCommand:
- let vendor_size = AndroidCommandHeader.$size_in_bytes
- 0 [+vendor_size] AndroidCommandHeader vendor_command
-
- $next [+4] bits:
- 0 [+8] A2dpCodecType codec_type
- -- See enum class A2dpCodecType in this file for possible values
-
- $next [+2] UInt max_latency
- -- Max latency allowed in ms. A value of zero disables flush.
-
- $next [+2] A2dpScmsTEnable scms_t_enable
-
- $next [+4] bits:
- 0 [+8] A2dpSamplingFrequency sampling_frequency
- -- See enum class A2dpSamplingFrequency in this file for possible values
-
- $next [+1] A2dpBitsPerSample bits_per_sample
- -- See enum class A2dpBitsPerSample in this file for possible values
-
- $next [+1] A2dpChannelMode channel_mode
- -- See enum class A2dpChannelMode in this file for possible values
-
- $next [+4] UInt encoded_audio_bitrate
- -- The encoded audio bitrate in bits per second
- -- 0x00000000 - The audio bitrate is not specified / unused
- -- 0x00000001 - 0x00FFFFFF - Encoded audio bitrate in bits per second
- -- 0x01000000 - 0xFFFFFFFF - Reserved
- [requires: 0x00000000 <= this <= 0x00FFFFFF]
-
- $next [+2] UInt connection_handle
- -- Connection handle of A2DP connection being configured (only the lower 12-bits are meaningful)
- -- Range: 0x0000 to 0x0EFF
- [requires: 0x0000 <= this <= 0x0EFF]
-
- $next [+2] UInt l2cap_channel_id
- -- L2CAP channel ID to be used for this A2DP connection
-
- $next [+2] UInt l2cap_mtu_size
- -- Maximum size of L2CAP MTU containing encoded audio packets
-
- if codec_type == A2dpCodecType.SBC:
- 28 [+32] SbcCodecInformation sbc_codec_information
- if codec_type == A2dpCodecType.AAC:
- 28 [+32] AacCodecInformation aac_codec_information
- if codec_type == A2dpCodecType.LDAC:
- 28 [+32] LdacCodecInformation ldac_codec_information
- if codec_type == A2dpCodecType.APTX || codec_type == A2dpCodecType.APTX_HD:
- 28 [+32] UInt:8[32] reserved
-
-struct StopA2dpOffloadCommand:
- let vendor_size = AndroidCommandHeader.$size_in_bytes
- 0 [+vendor_size] AndroidCommandHeader vendor_command
-
-struct LEMultiAdvtEnableCommand:
- -- LE multi-advertising enable command.
- let vendor_size = AndroidCommandHeader.$size_in_bytes
- 0 [+vendor_size] AndroidCommandHeader vendor_command
- $next [+1] hci.GenericEnableParam enable
- $next [+1] UInt advertising_handle
-
-struct LEGetVendorCapabilitiesCommand:
- let hdr_size = hci.CommandHeader.$size_in_bytes
- 0 [+hdr_size] hci.CommandHeader header
-
-
-# ============ Events ============
-
-
-struct LEMultiAdvtStateChangeSubevent:
- -- LE multi-advertising state change subevent.
- 0 [+hci.VendorDebugEvent.$size_in_bytes] hci.VendorDebugEvent vendor_event
- $next [+1] UInt advertising_handle
- -- Handle used to identify an advertising set.
-
- $next [+1] hci.StatusCode status
- -- Reason for state change. Currently will always be 0x00.
- -- 0x00: Connection received.
-
- $next [+2] UInt connection_handle
- -- Handle used to identify the connection that caused the state change (i.e.
- -- advertising instance to be disabled). Value will be 0xFFFF if invalid.
-
-struct LEGetVendorCapabilitiesCommandCompleteEvent:
- let hdr_size = hci.CommandCompleteEvent.$size_in_bytes
- 0 [+hdr_size] hci.CommandCompleteEvent command_complete
- $next [+1] hci.StatusCode status
- $next [+1] UInt max_advt_instances
- -- Number of advertisement instances supported
- -- Deprecated in Google feature spec v0.98 and higher
- $next [+1] Capability offloaded_resolution_of_private_address
- -- BT chip capability of RPA
- -- Deprecated in Google feature spec v0.98 and higher
- $next [+2] UInt total_scan_results_storage
- -- Storage for scan results in bytes
- $next [+1] UInt max_irk_list_sz
- -- Number of IRK entries supported in the firmware
- $next [+1] Capability filtering_support
- -- Support for filtering in the controller
- $next [+1] UInt max_filter
- -- Number of filters supported
- $next [+1] Capability activity_energy_info_support
- -- Supports reporting of activity and energy information
- $next [+2] bits version_supported:
- -- Specifies the version of the Google feature spec supported
- 0 [+8] UInt major_number
- $next [+8] UInt minor_number
- $next [+2] UInt total_num_of_advt_tracked
- -- Total number of advertisers tracked for OnLost/OnFound purposes
- $next [+1] Capability extended_scan_support
- -- Supports extended scan window and interval
- $next [+1] Capability debug_logging_supported
- -- Supports logging of binary debug information from controller
- $next [+1] Capability le_address_generation_offloading_support
- -- Deprecated in Google feature spec v0.98 and higher
- $next [+4] bits:
- 0 [+5] AudioCodecSupportMask a2dp_source_offload_capability_mask
- $next [+1] Capability bluetooth_quality_report_support
- -- Supports reporting of Bluetooth Quality events
- $next [+4] bits:
- 0 [+5] AudioCodecSupportMask dynamic_audio_buffer_support
diff --git a/pw_bluetooth/size_report/BUILD.gn b/pw_bluetooth/size_report/BUILD.gn
index 37ad18b..1492456 100644
--- a/pw_bluetooth/size_report/BUILD.gn
+++ b/pw_bluetooth/size_report/BUILD.gn
@@ -22,7 +22,7 @@
sources = [ "make_view_and_write.cc" ]
deps = [
"$dir_pw_bloat:bloat_this_binary",
- "$dir_pw_bluetooth:emboss_hci",
+ "$dir_pw_bluetooth:emboss_hci_group",
]
}
@@ -30,7 +30,7 @@
sources = [ "make_2_views_and_write.cc" ]
deps = [
"$dir_pw_bloat:bloat_this_binary",
- "$dir_pw_bluetooth:emboss_hci",
+ "$dir_pw_bluetooth:emboss_hci_group",
]
}
}