Diff between e91b7b57f49773c3324cf1dd89b31a5b59eeea47 and 60ae31087231f87937f9ea61bd17cfe3ae9cad7c

Changed Files

File Additions Deletions Status
monitor/bt.h +11 -0 modified
monitor/packet.c +19 -1 modified

Full Patch

diff --git a/monitor/bt.h b/monitor/bt.h
index 74b758d..aed8a55 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2403,6 +2403,17 @@ struct bt_hci_evt_le_conn_param_request {
 	uint16_t supv_timeout;
 } __attribute__ ((packed));
 
+#define BT_HCI_EVT_LE_DIRECT_ADV_REPORT		0x0b
+struct bt_hci_evt_le_direct_adv_report {
+	uint8_t  num_reports;
+	uint8_t  event_type;
+	uint8_t  addr_type;
+	uint8_t  addr[6];
+	uint8_t  direct_addr_type;
+	uint8_t  direct_addr[6];
+	int8_t   rssi;
+} __attribute__ ((packed));
+
 #define BT_HCI_ERR_SUCCESS			0x00
 #define BT_HCI_ERR_UNKNOWN_COMMAND		0x01
 #define BT_HCI_ERR_UNKNOWN_CONN_ID		0x02
diff --git a/monitor/packet.c b/monitor/packet.c
index 734f13b..0894ddb 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -7533,6 +7533,23 @@ static void le_conn_param_request_evt(const void *data, uint8_t size)
 					le16_to_cpu(evt->supv_timeout));
 }
 
+static void le_direct_adv_report_evt(const void *data, uint8_t size)
+{
+	const struct bt_hci_evt_le_direct_adv_report *evt = data;
+
+	print_num_reports(evt->num_reports);
+
+	print_adv_event_type(evt->event_type);
+	print_addr_type("Address type", evt->addr_type);
+	print_addr("Address", evt->addr, evt->addr_type);
+	print_addr_type("Direct address type", evt->direct_addr_type);
+	print_addr("Direct address", evt->direct_addr, evt->direct_addr_type);
+	print_rssi(evt->rssi);
+
+	if (size > sizeof(*evt))
+		packet_hexdump(data + sizeof(*evt), size - sizeof(*evt));
+}
+
 struct subevent_data {
 	uint8_t subevent;
 	const char *str;
@@ -7558,7 +7575,8 @@ static const struct subevent_data subevent_table[] = {
 	{ 0x08, "LE Read Local P-256 Public Key Complete" },
 	{ 0x09, "LE Generate DHKey Complete" },
 	{ 0x0a, "LE Enhanced Connection Complete" },
-	{ 0x0b, "LE Direct Advertising Report" },
+	{ 0x0b, "LE Direct Advertising Report",
+				le_direct_adv_report_evt, 1, false },
 	{ }
 };