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
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;
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},
{ }
};