From 00c99efd84fa3ee6a0fd3b745d53e70606340679 Mon Sep 17 00:00:00 2001 From: Andrei Emeltchenko Date: Thu, 30 Aug 2012 16:06:19 +0300 Subject: [PATCH] hcidump: Decode Read Data Block Size HCI cmd Decode Read Data Block Size HCI command and command status. < HCI Command: Read Data Block Size (0x04|0x000a) plen 0 > HCI Event: Command Complete (0x0e) plen 10 Read Data Block Size (0x04|0x000a) ncmd 1 status 0x00 Max ACL 1492 Block len 1492 Num blocks 4 --- tools/parser/hci.c | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/tools/parser/hci.c b/tools/parser/hci.c index 9a4d15fb8..c43e21f23 100644 --- a/tools/parser/hci.c +++ b/tools/parser/hci.c @@ -338,7 +338,7 @@ static char *cmd_hostctl_str[CMD_HOSTCTL_NUM + 1] = { "Write LE Host Supported", }; -#define CMD_INFO_NUM 9 +#define CMD_INFO_NUM 10 static char *cmd_info_str[CMD_INFO_NUM + 1] = { "Unknown", "Read Local Version Information", @@ -350,6 +350,7 @@ static char *cmd_info_str[CMD_INFO_NUM + 1] = { "Read Country Code", "Unknown", "Read BD ADDR", + "Read Data Block Size", }; #define CMD_STATUS_NUM 11 @@ -2041,6 +2042,24 @@ static inline void bdaddr_response_dump(int level, struct frame *frm) raw_dump(level, frm); } +static inline void read_data_block_size_dump(int level, struct frame *frm) +{ + read_data_block_size_rp *rp = frm->ptr; + + p_indent(level, frm); + printf("status 0x%2.2x\n", rp->status); + + if (rp->status > 0) { + p_indent(level, frm); + printf("Error: %s\n", status2str(rp->status)); + } else { + p_indent(level, frm); + printf("Max ACL %d Block len %d Num blocks %d\n", + btohs(rp->max_acl_len), btohs(rp->data_block_len), + btohs(rp->num_blocks)); + } +} + static inline void generic_response_dump(int level, struct frame *frm) { uint8_t status = get_u8(frm); @@ -2886,6 +2905,9 @@ static inline void cmd_complete_dump(int level, struct frame *frm) case OCF_READ_BD_ADDR: bdaddr_response_dump(level, frm); return; + case OCF_READ_DATA_BLOCK_SIZE: + read_data_block_size_dump(level, frm); + return; } break; -- 2.47.3