@@ -2518,6 +2518,70 @@ class HCI_LE_Meta_Long_Term_Key_Request(Packet):
25182518 XLEShortField ("ediv" , 0 ), ]
25192519
25202520
2521+ class HCI_LE_Meta_Extended_Advertising_Report (Packet ):
2522+ name = "Extended Advertising Report"
2523+ fields_desc = [
2524+ #LEShortField("event_type", 0),
2525+ BitField ("reserved0" , 0 , 1 ),
2526+ BitEnumField ("data_status" , 0 , 2 , {
2527+ 0b00 : "complete" ,
2528+ 0b01 : "incomplete" ,
2529+ 0b10 : "incomplete_truncated" ,
2530+ 0b11 : "reserved"
2531+ }),
2532+ BitField ("legacy" , 0 , 1 ),
2533+ BitField ("scan_response" , 0 , 1 ),
2534+ BitField ("directed" , 0 , 1 ),
2535+ BitField ("scannable" , 0 , 1 ),
2536+ BitField ("connectable" , 0 , 1 ),
2537+ ByteField ("reserved" , 0 ),
2538+ ByteEnumField ("address_type" , 0 , {
2539+ 0x00 : "public_device_address" ,
2540+ 0x01 : "random_device_address" ,
2541+ 0x02 : "public_identity_address" ,
2542+ 0x03 : "random_identity_address" ,
2543+ 0xff : "anonymous"
2544+ }),
2545+ LEMACField ('address' , None ),
2546+ ByteEnumField ("primary_phy" , 0 , {
2547+ 0x01 : "le_1m" ,
2548+ 0x03 : "le_coded_s8" ,
2549+ 0x04 : "le_coded_s2"
2550+ }),
2551+ ByteEnumField ("secondary_phy" , 0 , {
2552+ 0x01 : "le_1m" ,
2553+ 0x02 : "le_2m" ,
2554+ 0x03 : "le_coded_s8" ,
2555+ 0x04 : "le_coded_s2"
2556+ }),
2557+ ByteField ("advertising_sid" , 0xff ),
2558+ ByteField ("tx_power" , 0x7f ),
2559+ SignedByteField ("rssi" , 0x00 ),
2560+ LEShortField ("periodic_advertising_interval" , 0x0000 ),
2561+ ByteEnumField ("direct_address_type" , 0 , {
2562+ 0x00 : "public_device_address" ,
2563+ 0x01 : "non_resolvable_private_address" ,
2564+ 0x02 : "resolvable_private_address_resolved_0" ,
2565+ 0x03 : "resolvable_private_address_resolved_1" ,
2566+ 0xfe : "resolvable_private_address_unable_resolve" }),
2567+ LEMACField ("direct_address" , None ),
2568+ FieldLenField ("data_length" , None , length_of = "data" , fmt = "B" ),
2569+ PacketListField ("data" , [], EIR_Hdr ,
2570+ length_from = lambda pkt : pkt .data_length ),
2571+ ]
2572+
2573+ def extract_padding (self , s ):
2574+ return '' , s
2575+
2576+
2577+ class HCI_LE_Meta_Extended_Advertising_Reports (Packet ):
2578+ name = "Extended Advertising Reports"
2579+ fields_desc = [FieldLenField ("num_reports" , None , count_of = "reports" , fmt = "B" ),
2580+ PacketListField ("reports" , None ,
2581+ HCI_LE_Meta_Extended_Advertising_Report ,
2582+ count_from = lambda pkt : pkt .num_reports )]
2583+
2584+
25212585bind_layers (HCI_PHDR_Hdr , HCI_Hdr )
25222586
25232587bind_layers (HCI_Hdr , HCI_Command_Hdr , type = 1 )
@@ -2648,6 +2712,7 @@ class HCI_LE_Meta_Long_Term_Key_Request(Packet):
26482712bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Advertising_Reports , event = 0x02 )
26492713bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Connection_Update_Complete , event = 0x03 )
26502714bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Long_Term_Key_Request , event = 0x05 )
2715+ bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Extended_Advertising_Reports , event = 0x0d )
26512716
26522717bind_layers (EIR_Hdr , EIR_Flags , type = 0x01 )
26532718bind_layers (EIR_Hdr , EIR_IncompleteList16BitServiceUUIDs , type = 0x02 )
0 commit comments