Diff between aa54d8ef9ee0fb42ad646636f844e999716af29a and ce49d2b39b51ddb8bc9cb23762fc201b557175fb

Changed Files

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

Full Patch

diff --git a/monitor/bt.h b/monitor/bt.h
index 3b7071a..a1f2ab3 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2496,6 +2496,21 @@ struct bt_hci_evt_le_generate_dhkey_complete {
 	uint8_t  dhkey[32];
 } __attribute__ ((packed));
 
+#define BT_HCI_EVT_LE_ENHANCED_CONN_COMPLETE	0x0a
+struct bt_hci_evt_le_enhanced_conn_complete {
+	uint8_t  status;
+	uint16_t handle;
+	uint8_t  role;
+	uint8_t  peer_addr_type;
+	uint8_t  peer_addr[6];
+	uint8_t  local_rpa[6];
+	uint8_t  peer_rpa[6];
+	uint16_t interval;
+	uint16_t latency;
+	uint16_t supv_timeout;
+	uint8_t  clock_accuracy;
+} __attribute__ ((packed));
+
 #define BT_HCI_EVT_LE_DIRECT_ADV_REPORT		0x0b
 struct bt_hci_evt_le_direct_adv_report {
 	uint8_t  num_reports;
diff --git a/monitor/packet.c b/monitor/packet.c
index b7cf68c..dec8b60 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -7697,6 +7697,28 @@ static void le_generate_dhkey_complete_evt(const void *data, uint8_t size)
 	print_dhkey(evt->dhkey);
 }
 
+static void le_enhanced_conn_complete_evt(const void *data, uint8_t size)
+{
+	const struct bt_hci_evt_le_enhanced_conn_complete *evt = data;
+
+	print_status(evt->status);
+	print_handle(evt->handle);
+	print_role(evt->role);
+	print_addr_type("Peer address type", evt->peer_addr_type);
+	print_addr("Peer address", evt->peer_addr, evt->peer_addr_type);
+	print_addr("Local resolvable private address", evt->local_rpa, 0x01);
+	print_addr("Peer resolvable private address", evt->peer_rpa, 0x01);
+	print_slot_125("Connection interval", evt->interval);
+	print_slot_125("Connection latency", evt->latency);
+	print_field("Supervision timeout: %d msec (0x%4.4x)",
+					le16_to_cpu(evt->supv_timeout) * 10,
+					le16_to_cpu(evt->supv_timeout));
+	print_field("Master clock accuracy: 0x%2.2x", evt->clock_accuracy);
+
+	if (evt->status == 0x00)
+		assign_handle(le16_to_cpu(evt->handle), 0x01);
+}
+
 static void le_direct_adv_report_evt(const void *data, uint8_t size)
 {
 	const struct bt_hci_evt_le_direct_adv_report *evt = data;
@@ -7741,7 +7763,8 @@ static const struct subevent_data subevent_table[] = {
 				le_read_local_pk256_complete_evt, 65, true },
 	{ 0x09, "LE Generate DHKey Complete",
 				le_generate_dhkey_complete_evt, 33, true },
-	{ 0x0a, "LE Enhanced Connection Complete" },
+	{ 0x0a, "LE Enhanced Connection Complete",
+				le_enhanced_conn_complete_evt, 30, true },
 	{ 0x0b, "LE Direct Advertising Report",
 				le_direct_adv_report_evt, 1, false },
 	{ }