@@ -2531,6 +2531,69 @@ class HCI_LE_Meta_Long_Term_Key_Request(Packet):
25312531 XLEShortField ("ediv" , 0 ), ]
25322532
25332533
2534+ class HCI_LE_Meta_Extended_Advertising_Report (Packet ):
2535+ name = "Extended Advertising Report"
2536+ fields_desc = [
2537+ BitField ("reserved0" , 0 , 1 ),
2538+ BitEnumField ("data_status" , 0 , 2 , {
2539+ 0b00 : "complete" ,
2540+ 0b01 : "incomplete" ,
2541+ 0b10 : "incomplete_truncated" ,
2542+ 0b11 : "reserved"
2543+ }),
2544+ BitField ("legacy" , 0 , 1 ),
2545+ BitField ("scan_response" , 0 , 1 ),
2546+ BitField ("directed" , 0 , 1 ),
2547+ BitField ("scannable" , 0 , 1 ),
2548+ BitField ("connectable" , 0 , 1 ),
2549+ ByteField ("reserved" , 0 ),
2550+ ByteEnumField ("address_type" , 0 , {
2551+ 0x00 : "public_device_address" ,
2552+ 0x01 : "random_device_address" ,
2553+ 0x02 : "public_identity_address" ,
2554+ 0x03 : "random_identity_address" ,
2555+ 0xff : "anonymous"
2556+ }),
2557+ LEMACField ('address' , None ),
2558+ ByteEnumField ("primary_phy" , 0 , {
2559+ 0x01 : "le_1m" ,
2560+ 0x03 : "le_coded_s8" ,
2561+ 0x04 : "le_coded_s2"
2562+ }),
2563+ ByteEnumField ("secondary_phy" , 0 , {
2564+ 0x01 : "le_1m" ,
2565+ 0x02 : "le_2m" ,
2566+ 0x03 : "le_coded_s8" ,
2567+ 0x04 : "le_coded_s2"
2568+ }),
2569+ ByteField ("advertising_sid" , 0xff ),
2570+ ByteField ("tx_power" , 0x7f ),
2571+ SignedByteField ("rssi" , 0x00 ),
2572+ LEShortField ("periodic_advertising_interval" , 0x0000 ),
2573+ ByteEnumField ("direct_address_type" , 0 , {
2574+ 0x00 : "public_device_address" ,
2575+ 0x01 : "non_resolvable_private_address" ,
2576+ 0x02 : "resolvable_private_address_resolved_0" ,
2577+ 0x03 : "resolvable_private_address_resolved_1" ,
2578+ 0xfe : "resolvable_private_address_unable_resolve" }),
2579+ LEMACField ("direct_address" , None ),
2580+ FieldLenField ("data_length" , None , length_of = "data" , fmt = "B" ),
2581+ PacketListField ("data" , [], EIR_Hdr ,
2582+ length_from = lambda pkt : pkt .data_length ),
2583+ ]
2584+
2585+ def extract_padding (self , s ):
2586+ return '' , s
2587+
2588+
2589+ class HCI_LE_Meta_Extended_Advertising_Reports (Packet ):
2590+ name = "Extended Advertising Reports"
2591+ fields_desc = [FieldLenField ("num_reports" , None , count_of = "reports" , fmt = "B" ),
2592+ PacketListField ("reports" , None ,
2593+ HCI_LE_Meta_Extended_Advertising_Report ,
2594+ count_from = lambda pkt : pkt .num_reports )]
2595+
2596+
25342597bind_layers (HCI_PHDR_Hdr , HCI_Hdr )
25352598
25362599bind_layers (HCI_Hdr , HCI_Command_Hdr , type = 1 )
@@ -2661,6 +2724,7 @@ class HCI_LE_Meta_Long_Term_Key_Request(Packet):
26612724bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Advertising_Reports , event = 0x02 )
26622725bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Connection_Update_Complete , event = 0x03 )
26632726bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Long_Term_Key_Request , event = 0x05 )
2727+ bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Extended_Advertising_Reports , event = 0x0d )
26642728
26652729bind_layers (EIR_Hdr , EIR_Flags , type = 0x01 )
26662730bind_layers (EIR_Hdr , EIR_IncompleteList16BitServiceUUIDs , type = 0x02 )
0 commit comments