diff --git a/tools/parser/hci.c b/tools/parser/hci.c
index 8b19e0d..964bbd9 100644
--- a/tools/parser/hci.c
+++ b/tools/parser/hci.c
static inline void inq_result_dump(int level, struct frame *frm)
{
uint8_t num = get_u8(frm);
+ char addr[18];
int i;
for (i = 0; i < num; i++) {
inquiry_info *info = frm->ptr;
- char addr[18];
ba2str(&info->bdaddr, addr);
}
}
+static inline void return_link_keys_dump(int level, struct frame *frm)
+{
+ uint8_t num = get_u8(frm);
+ unsigned char key[16];
+ char addr[18];
+ int i, n;
+
+ for (n = 0; n < num; n++) {
+ ba2str(frm->ptr, addr);
+ memcpy(key, frm->ptr + 6, 16);
+
+ p_indent(level, frm);
+ printf("bdaddr %s key ", addr);
+ for (i = 0; i < 16; i++)
+ printf("%2.2x", key[i]);
+ printf("\n");
+
+ frm->ptr += 22;
+ frm->len -= 22;
+ }
+}
+
static inline void pin_code_req_dump(int level, struct frame *frm)
{
evt_pin_code_req *evt = frm->ptr;
static inline void inq_result_with_rssi_dump(int level, struct frame *frm)
{
uint8_t num = get_u8(frm);
+ char addr[18];
int i;
if (!num)
if (frm->len / num == INQUIRY_INFO_WITH_RSSI_AND_PSCAN_MODE_SIZE) {
for (i = 0; i < num; i++) {
inquiry_info_with_rssi_and_pscan_mode *info = frm->ptr;
- char addr[18];
p_indent(level, frm);
} else {
for (i = 0; i < num; i++) {
inquiry_info_with_rssi *info = frm->ptr;
- char addr[18];
p_indent(level, frm);
case EVT_MODE_CHANGE:
mode_change_dump(level + 1, frm);
break;
+ case EVT_RETURN_LINK_KEYS:
+ return_link_keys_dump(level + 1, frm);
+ break;
case EVT_PIN_CODE_REQ:
case EVT_LINK_KEY_REQ:
pin_code_req_dump(level + 1, frm);