monitor: Fix not calculating latency for ISO/SCO packets
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Fri, 28 Jul 2023 21:26:13 +0000 (14:26 -0700)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 5 Jan 2024 13:34:03 +0000 (19:04 +0530)
ISO/SCO packets latency was not being calculated because no connection
was assigned to them.

monitor/packet.c

index fed51ea..b975512 100755 (executable)
@@ -10613,6 +10613,10 @@ static void sync_conn_complete_evt(struct timeval *tv, uint16_t index,
        print_field("RX packet length: %d", le16_to_cpu(evt->rx_pkt_len));
        print_field("TX packet length: %d", le16_to_cpu(evt->tx_pkt_len));
        print_air_mode(evt->air_mode);
+
+       if (evt->status == 0x00)
+               assign_handle(index, le16_to_cpu(evt->handle), evt->link_type,
+                                       (void *)evt->bdaddr, BDADDR_BREDR);
 }
 
 static void sync_conn_changed_evt(struct timeval *tv, uint16_t index,
@@ -11572,6 +11576,10 @@ static void le_cis_established_evt(struct timeval *tv, uint16_t index,
        print_field("Central to Peripheral MTU: %u", le16_to_cpu(evt->c_mtu));
        print_field("Peripheral to Central MTU: %u", le16_to_cpu(evt->p_mtu));
        print_slot_125("ISO Interval", evt->interval);
+
+       if (!evt->status)
+               assign_handle(index, le16_to_cpu(evt->conn_handle), 0x05,
+                                       NULL, BDADDR_LE_PUBLIC);
 }
 
 static void le_req_cis_evt(struct timeval *tv, uint16_t index,
@@ -11610,6 +11618,14 @@ static void le_big_complete_evt(struct timeval *tv, uint16_t index,
        print_slot_125("ISO Interval", evt->interval);
        print_list(evt->bis_handle, size, evt->num_bis,
                        sizeof(*evt->bis_handle), print_bis_handle);
+
+       if (!evt->status) {
+               int i;
+
+               for (i = 0; i < evt->num_bis; i++)
+                       assign_handle(index, le16_to_cpu(evt->bis_handle[i]),
+                                       0x05, NULL, BDADDR_LE_PUBLIC);
+       }
 }
 
 static void le_big_terminate_evt(struct timeval *tv, uint16_t index,
@@ -11637,6 +11653,14 @@ static void le_big_sync_estabilished_evt(struct timeval *tv, uint16_t index,
        print_slot_125("ISO Interval", evt->interval);
        print_list(evt->bis, size, evt->num_bis, sizeof(*evt->bis),
                                                print_bis_handle);
+
+       if (!evt->status) {
+               int i;
+
+               for (i = 0; i < evt->num_bis; i++)
+                       assign_handle(index, le16_to_cpu(evt->bis[i]),
+                                       0x05, NULL, BDADDR_LE_PUBLIC);
+       }
 }
 
 static void le_big_sync_lost_evt(struct timeval *tv, uint16_t index,