From 1b89af163bd10ebdf07ba0ab9917a54060457e66 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 21 Jun 2007 21:44:55 +0000 Subject: [PATCH] hcidump: Add decoding for extended inquiry flags, UUID-16 lists and TX power --- tools/parser/hci.c | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tools/parser/hci.c b/tools/parser/hci.c index a0e13cca7..7787dd022 100644 --- a/tools/parser/hci.c +++ b/tools/parser/hci.c @@ -521,14 +521,34 @@ static inline void ext_inquiry_response_dump(int level, struct frame *frm) length--; switch (type) { + case 0x01: + p_indent(level, frm); + printf("Flags:"); + for (i = 0; i < length; i++) + printf(" 0x%2.2x", *((uint8_t *) (frm->ptr + i))); + printf("\n"); + break; + + case 0x02: + case 0x03: + p_indent(level, frm); + printf("%s service classes:", + type == 0x02 ? "Shortened" : "Complete"); + for (i = 0; i < length / 2; i++) { + uint16_t val = btohs(bt_get_unaligned((uint16_t *) (frm->ptr + (i * 2)))); + printf(" 0x%4.4x", val); + } + printf("\n"); + break; + case 0x08: case 0x09: str = malloc(length + 1); if (str) { snprintf(str, length + 1, "%s", (char *) frm->ptr); for (i = 0; i < length; i++) - if (!isprint(str[i])) - str[i] = '.'; + if (!isprint(str[i])) + str[i] = '.'; p_indent(level, frm); printf("%s local name: \'%s\'\n", type == 0x08 ? "Shortened" : "Complete", str); @@ -536,6 +556,11 @@ static inline void ext_inquiry_response_dump(int level, struct frame *frm) } break; + case 0x0a: + p_indent(level, frm); + printf("TX power level: %d\n", *((uint8_t *) frm->ptr)); + break; + default: p_indent(level, frm); printf("Unknown type 0x%02x with %d bytes data\n", -- 2.47.3