@@ -2518,6 +2518,70 @@ class HCI_LE_Meta_Long_Term_Key_Request(Packet):
2518
2518
XLEShortField ("ediv" , 0 ), ]
2519
2519
2520
2520
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
+
2521
2585
bind_layers (HCI_PHDR_Hdr , HCI_Hdr )
2522
2586
2523
2587
bind_layers (HCI_Hdr , HCI_Command_Hdr , type = 1 )
@@ -2648,6 +2712,7 @@ class HCI_LE_Meta_Long_Term_Key_Request(Packet):
2648
2712
bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Advertising_Reports , event = 0x02 )
2649
2713
bind_layers (HCI_Event_LE_Meta , HCI_LE_Meta_Connection_Update_Complete , event = 0x03 )
2650
2714
bind_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 )
2651
2716
2652
2717
bind_layers (EIR_Hdr , EIR_Flags , type = 0x01 )
2653
2718
bind_layers (EIR_Hdr , EIR_IncompleteList16BitServiceUUIDs , type = 0x02 )
0 commit comments