monitor: Decode LE Periodic Advertising Sync Transfer Received Event
authorSzymon Czapracki <szymon.czapracki@codecoup.pl>
Wed, 8 Jan 2020 11:47:46 +0000 (12:47 +0100)
committerAyush Garg <ayush.garg@samsung.com>
Mon, 12 Apr 2021 09:00:48 +0000 (14:30 +0530)
Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
monitor/bt.h
monitor/packet.c

index ecf3782..e14c177 100755 (executable)
@@ -3140,6 +3140,20 @@ struct bt_hci_evt_le_chan_select_alg {
        uint8_t  algorithm;
 } __attribute__ ((packed));
 
+#define BT_HCI_EVT_LE_PER_ADV_SYNC_TRANS_REC           0x18
+struct bt_hci_evt_le_per_adv_sync_trans_rec {
+       uint8_t  status;
+       uint16_t handle;
+       uint16_t service_data;
+       uint16_t sync_handle;
+       uint8_t  sid;
+       uint8_t  addr_type;
+       uint8_t  addr[6];
+       uint8_t  phy;
+       uint16_t interval;
+       uint8_t  clock_accuracy;
+} __attribute__ ((packed));
+
 #define BT_HCI_ERR_SUCCESS                     0x00
 #define BT_HCI_ERR_UNKNOWN_COMMAND             0x01
 #define BT_HCI_ERR_UNKNOWN_CONN_ID             0x02
index 312b4df..c78d258 100755 (executable)
@@ -9794,6 +9794,24 @@ static void le_chan_select_alg_evt(const void *data, uint8_t size)
        print_field("Algorithm: %s (0x%2.2x)", str, evt->algorithm);
 }
 
+static void le_per_adv_sync_trans_rec_evt(const void *data, uint8_t size)
+{
+       const struct bt_hci_evt_le_per_adv_sync_trans_rec *evt = data;
+
+       print_status(evt->status);
+       print_field("Handle: %d", evt->handle);
+       print_field("Connection handle: %d", evt->handle);
+       print_field("Service data: 0x%4.4x", evt->service_data);
+       print_field("Sync handle: %d", evt->sync_handle);
+       print_field("SID: 0x%2.2x", evt->sid);
+       print_peer_addr_type("Address type:", evt->addr_type);
+       print_addr("Address:", evt->addr, evt->addr_type);
+       print_le_phy("PHY:", evt->phy);
+       print_field("Periodic advertising Interval: %.3f",
+                                                       1.25 * evt->interval);
+       print_clock_accuracy(evt->clock_accuracy);
+}
+
 struct subevent_data {
        uint8_t subevent;
        const char *str;
@@ -9877,6 +9895,9 @@ static const struct subevent_data le_meta_event_table[] = {
                                le_scan_req_received_evt, 8, true},
        { 0x14, "LE Channel Selection Algorithm",
                                le_chan_select_alg_evt, 3, true},
+       { 0x18, "LE Periodic Advertising Sync Transfer Received",
+                                       le_per_adv_sync_trans_rec_evt, 19,
+                                       true},
        { }
 };