diff --git a/monitor/bt.h b/monitor/bt.h
index 0d2a15a..5040411 100644
--- a/monitor/bt.h
+++ b/monitor/bt.h
} __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
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)