@@ -3653,6 +3653,23 @@ struct bt_hci_evt_le_req_peer_sca_complete {
uint8_t sca;
} __attribute__ ((packed));
+#define BT_HCI_EVT_LE_BIG_INFO_ADV_REPORT 0x22
+struct bt_hci_evt_le_big_info_adv_report {
+ uint16_t sync_handle;
+ uint8_t num_bis;
+ uint8_t nse;
+ uint16_t iso_interval;
+ uint8_t bn;
+ uint8_t pto;
+ uint8_t irc;
+ uint16_t max_pdu;
+ uint8_t sdu_interval[3];
+ uint16_t max_sdu;
+ uint8_t phy;
+ uint8_t framing;
+ uint8_t encryption;
+} __attribute__ ((packed));
+
#define BT_HCI_ERR_SUCCESS 0x00
#define BT_HCI_ERR_UNKNOWN_COMMAND 0x01
#define BT_HCI_ERR_UNKNOWN_CONN_ID 0x02
@@ -10886,6 +10886,25 @@ static void le_req_sca_complete_evt(const void *data, uint8_t size)
print_sca(evt->sca);
}
+static void le_big_info_evt(const void *data, uint8_t size)
+{
+ const struct bt_hci_evt_le_big_info_adv_report *evt = data;
+
+ print_field("Sync Handle: 0x%4.4x", evt->sync_handle);
+ print_field("Number BIS: %u", evt->num_bis);
+ print_field("NSE: %u", evt->nse);
+ print_slot_125("ISO Interval", evt->iso_interval);
+ print_field("BN: %u", evt->bn);
+ print_field("PTO: %u", evt->bn);
+ print_field("IRC: %u", evt->irc);
+ print_field("Maximum PDU: %u", evt->max_pdu);
+ print_usec_interval("SDU Interval", evt->sdu_interval);
+ print_field("Maximum SDU: %u", evt->max_sdu);
+ print_le_phy("PHY", evt->phy);
+ print_framing(evt->framing);
+ print_field("Encryption: 0x%02x", evt->encryption);
+}
+
struct subevent_data {
uint8_t subevent;
const char *str;
@@ -11004,6 +11023,10 @@ static const struct subevent_data le_meta_event_table[] = {
le_req_sca_complete_evt,
sizeof(
struct bt_hci_evt_le_req_peer_sca_complete)},
+ { BT_HCI_EVT_LE_BIG_INFO_ADV_REPORT,
+ "LE Broadcast Isochronous Group Info Advertising Report",
+ le_big_info_evt,
+ sizeof(struct bt_hci_evt_le_big_info_adv_report) },
{ }
};
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> This adds support for LE BIG Info Advertising Report. --- monitor/bt.h | 17 +++++++++++++++++ monitor/packet.c | 23 +++++++++++++++++++++++ 2 files changed, 40 insertions(+)