Diff between 0d9afd0f25d4fefa5f246fb9c095f116b008fd97 and 7d103ce152956481dc68b5d35f1fef3b83305a64

Changed Files

File Additions Deletions Status
monitor/bt.h +4 -0 modified
monitor/packet.c +7 -3 modified

Full Patch

diff --git a/monitor/bt.h b/monitor/bt.h
index 0d2a15a..5040411 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
@@ -2224,6 +2224,10 @@ struct bt_hci_evt_mode_change {
 } __attribute__ ((packed));
 
 #define BT_HCI_EVT_RETURN_LINK_KEYS		0x15
+struct bt_hci_evt_return_link_keys {
+	uint8_t  num_keys;
+	uint8_t  keys[0];
+} __attribute__ ((packed));
 
 #define BT_HCI_EVT_PIN_CODE_REQUEST		0x16
 struct bt_hci_evt_pin_code_request {
diff --git a/monitor/packet.c b/monitor/packet.c
index b2267a6..a2beaac 100644
--- a/monitor/packet.c
+++ b/monitor/packet.c
@@ -7443,11 +7443,15 @@ static void mode_change_evt(const void *data, uint8_t size)
 
 static void return_link_keys_evt(const void *data, uint8_t size)
 {
-	uint8_t num_keys = *((uint8_t *) data);
+	const struct bt_hci_evt_return_link_keys *evt = data;
+	uint8_t i;
 
-	print_field("Num keys: %d", num_keys);
+	print_field("Num keys: %d", evt->num_keys);
 
-	packet_hexdump(data + 1, size - 1);
+	for (i = 0; i < evt->num_keys; i++) {
+		print_bdaddr(evt->keys + (i * 22));
+		print_link_key(evt->keys + (i * 22) + 6);
+	}
 }
 
 static void pin_code_request_evt(const void *data, uint8_t size)