blob: ccb5c1a5b46d20ba958814d119751b0187f7b7ad [file] [log] [blame]
little_endian_packets
custom_field Address : 48 "hci/"
custom_field ClassOfDevice : 24 "hci/"
enum PacketType : 8 {
UNKNOWN = 0x00,
ACL = 0x01,
DISCONNECT = 0x02,
ENCRYPT_CONNECTION = 0x03,
ENCRYPT_CONNECTION_RESPONSE = 0x04,
EVENT = 0x05,
INQUIRY = 0x06,
INQUIRY_RESPONSE = 0x07,
IO_CAPABILITY_REQUEST = 0x08,
IO_CAPABILITY_RESPONSE = 0x09,
IO_CAPABILITY_NEGATIVE_RESPONSE = 0x0A,
LE_ADVERTISEMENT = 0x0B,
LE_CONNECT = 0x0C,
LE_CONNECT_COMPLETE = 0x0D,
LE_SCAN = 0x0E,
LE_SCAN_RESPONSE = 0x0F,
PAGE = 0x10,
PAGE_RESPONSE = 0x11,
PAGE_REJECT = 0x12,
READ_CLOCK_OFFSET = 0x13,
READ_CLOCK_OFFSET_RESPONSE = 0x14,
READ_REMOTE_SUPPORTED_FEATURES = 0x15,
READ_REMOTE_SUPPORTED_FEATURES_RESPONSE = 0x16,
READ_REMOTE_LMP_FEATURES = 0x17,
READ_REMOTE_LMP_FEATURES_RESPONSE = 0x18,
READ_REMOTE_EXTENDED_FEATURES = 0x19,
READ_REMOTE_EXTENDED_FEATURES_RESPONSE = 0x1A,
READ_REMOTE_VERSION_INFORMATION = 0x1B,
READ_REMOTE_VERSION_INFORMATION_RESPONSE = 0x1C,
REMOTE_NAME_REQUEST = 0x1D,
REMOTE_NAME_REQUEST_RESPONSE = 0x1E,
SCO = 0x1F,
LE_ENCRYPT_CONNECTION = 0x20,
LE_ENCRYPT_CONNECTION_RESPONSE = 0x21,
ISO = 0x22,
}
packet LinkLayerPacket {
type : PacketType,
source_address : Address,
destination_address : Address,
_body_,
}
packet AclPacket : LinkLayerPacket (type = ACL) {
_payload_,
}
packet Disconnect : LinkLayerPacket (type = DISCONNECT) {
reason : 8,
}
packet EncryptConnection : LinkLayerPacket (type = ENCRYPT_CONNECTION) {
key : 8[],
}
packet EncryptConnectionResponse : LinkLayerPacket (type = ENCRYPT_CONNECTION_RESPONSE) {
key : 8[],
}
enum InquiryState : 8 {
STANDBY = 0x00,
INQUIRY = 0x01,
}
enum InquiryType : 8 {
STANDARD = 0x00,
RSSI = 0x01,
EXTENDED = 0x02,
}
packet Inquiry : LinkLayerPacket (type = INQUIRY) {
inquiry_type : InquiryType,
}
packet BasicInquiryResponse : LinkLayerPacket(type = INQUIRY_RESPONSE) {
inquiry_type : InquiryType,
page_scan_repetition_mode : 8,
class_of_device : ClassOfDevice,
clock_offset : 15,
_reserved_ : 1,
_body_,
}
packet InquiryResponse : BasicInquiryResponse (inquiry_type = STANDARD) {
}
packet InquiryResponseWithRssi : BasicInquiryResponse (inquiry_type = RSSI) {
rssi: 8,
}
packet ExtendedInquiryResponse : BasicInquiryResponse (inquiry_type = EXTENDED) {
rssi: 8,
extended_data : 8[],
}
packet IoCapabilityRequest : LinkLayerPacket (type = IO_CAPABILITY_REQUEST) {
io_capability : 8,
oob_data_present : 8,
authentication_requirements : 8,
}
packet IoCapabilityResponse : LinkLayerPacket (type = IO_CAPABILITY_RESPONSE) {
io_capability : 8,
oob_data_present : 8,
authentication_requirements : 8,
}
packet IoCapabilityNegativeResponse : LinkLayerPacket (type = IO_CAPABILITY_NEGATIVE_RESPONSE) {
reason : 8,
}
enum AddressType : 8 {
PUBLIC = 0,
RANDOM = 1,
PUBLIC_IDENTITY = 2,
RANDOM_IDENTITY = 3,
}
enum AdvertisementType : 8 {
ADV_IND = 0, // Connectable and scannable
ADV_DIRECT_IND = 1, // Connectable directed
ADV_SCAN_IND = 2, // Scannable undirected
ADV_NONCONN_IND = 3, // Non connectable undirected
SCAN_RESPONSE = 4,
}
packet LeAdvertisement : LinkLayerPacket (type = LE_ADVERTISEMENT) {
address_type : AddressType,
advertisement_type : AdvertisementType,
data : 8[],
}
packet LeConnect : LinkLayerPacket (type = LE_CONNECT) {
le_connection_interval_min : 16,
le_connection_interval_max : 16,
le_connection_latency : 16,
le_connection_supervision_timeout : 16,
address_type : 8,
}
packet LeConnectComplete : LinkLayerPacket (type = LE_CONNECT_COMPLETE) {
le_connection_interval : 16,
le_connection_latency : 16,
le_connection_supervision_timeout : 16,
address_type : 8,
}
packet LeScan : LinkLayerPacket (type = LE_SCAN) {
}
packet LeScanResponse : LinkLayerPacket (type = LE_SCAN_RESPONSE) {
address_type : AddressType,
advertisement_type : AdvertisementType,
data : 8[],
}
packet Page : LinkLayerPacket (type = PAGE) {
class_of_device : ClassOfDevice,
allow_role_switch : 8,
}
packet PageResponse : LinkLayerPacket (type = PAGE_RESPONSE) {
try_role_switch : 8,
}
packet PageReject : LinkLayerPacket (type = PAGE_REJECT) {
reason : 8,
}
packet ReadClockOffset : LinkLayerPacket (type = READ_CLOCK_OFFSET) {
}
packet ReadClockOffsetResponse : LinkLayerPacket (type = READ_CLOCK_OFFSET_RESPONSE) {
offset : 16,
}
packet ReadRemoteSupportedFeatures : LinkLayerPacket (type = READ_REMOTE_SUPPORTED_FEATURES) {
}
packet ReadRemoteSupportedFeaturesResponse : LinkLayerPacket (type = READ_REMOTE_SUPPORTED_FEATURES_RESPONSE) {
features : 64,
}
packet ReadRemoteLmpFeatures : LinkLayerPacket (type = READ_REMOTE_LMP_FEATURES) {
}
packet ReadRemoteLmpFeaturesResponse : LinkLayerPacket (type = READ_REMOTE_LMP_FEATURES_RESPONSE) {
features : 64,
}
packet ReadRemoteExtendedFeatures : LinkLayerPacket (type = READ_REMOTE_EXTENDED_FEATURES) {
page_number : 8,
}
packet ReadRemoteExtendedFeaturesResponse : LinkLayerPacket (type = READ_REMOTE_EXTENDED_FEATURES_RESPONSE) {
status : 8,
page_number : 8,
max_page_number : 8,
features : 64,
}
packet ReadRemoteVersionInformation : LinkLayerPacket (type = READ_REMOTE_VERSION_INFORMATION) {
}
packet ReadRemoteVersionInformationResponse : LinkLayerPacket (type = READ_REMOTE_VERSION_INFORMATION_RESPONSE) {
lmp_version : 8,
lmp_subversion : 8,
manufacturer_name : 16,
}
packet RemoteNameRequest : LinkLayerPacket (type = REMOTE_NAME_REQUEST) {
}
packet RemoteNameRequestResponse : LinkLayerPacket (type = REMOTE_NAME_REQUEST_RESPONSE) {
name : 8[248],
}
packet ScoPacket : LinkLayerPacket (type = SCO) {
_payload_,
}
packet LeEncryptConnection : LinkLayerPacket (type = LE_ENCRYPT_CONNECTION) {
rand : 8[8],
ediv : 16,
ltk : 8[16],
}
packet LeEncryptConnectionResponse : LinkLayerPacket (type = LE_ENCRYPT_CONNECTION_RESPONSE) {
rand : 8[8],
ediv : 16,
ltk : 8[16],
}
enum StartContinuation : 1 {
START = 0,
CONTINUATION = 1,
}
enum Complete : 1 {
INCOMPLETE = 0,
COMPLETE = 1,
}
packet IsoDataPacket : LinkLayerPacket (type = ISO) {
sc : StartContinuation,
cmplt : Complete,
_reserved_ : 6,
_size_(_payload_) : 8,
_payload_,
}
packet IsoStart : IsoDataPacket (sc = START) {
time_offset : 24,
_payload_,
}
packet IsoContinuation : IsoDataPacket (sc = CONTINUATION) {
_payload_,
}