diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-06-12 23:07:35 +0000 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-06-12 23:07:35 +0000 |
commit | f981c2aef1a76718cec35e7f439939af59dc6a00 (patch) | |
tree | 4e49ee3910d518ffb3215b2cc74c47407523c4b3 | |
parent | 6d012a81f80dadc7394c92a4de994b88545cb95e (diff) | |
download | bluez-hcidump-f981c2aef1a76718cec35e7f439939af59dc6a00.tar.gz |
Decode Default Link Policy Settings commands
-rw-r--r-- | parser/hci.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/parser/hci.c b/parser/hci.c index 5e05730..c0ca27e 100644 --- a/parser/hci.c +++ b/parser/hci.c @@ -976,6 +976,22 @@ static inline void write_link_policy_dump(int level, struct frame *frm) } } +static inline void write_default_link_policy_dump(int level, struct frame *frm) +{ + uint16_t policy = btohs(htons(get_u16(frm))); + char *str; + + p_indent(level, frm); + printf("policy 0x%2.2x\n", policy); + + str = hci_lptostr(policy); + if (str) { + p_indent(level, frm); + printf("Link policy: %s\n", str); + free(str); + } +} + static inline void sniff_subrating_dump(int level, struct frame *frm) { sniff_subrating_cp *cp = frm->ptr; @@ -1447,6 +1463,8 @@ static inline void command_dump(int level, struct frame *frm) case OCF_READ_LINK_POLICY: generic_command_dump(level + 1, frm); return; + case OCF_READ_DEFAULT_LINK_POLICY: + return; case OCF_SWITCH_ROLE: accept_conn_req_dump(level + 1, frm); return; @@ -1456,6 +1474,9 @@ static inline void command_dump(int level, struct frame *frm) case OCF_WRITE_LINK_POLICY: write_link_policy_dump(level + 1, frm); return; + case OCF_WRITE_DEFAULT_LINK_POLICY: + write_default_link_policy_dump(level + 1, frm); + return; case OCF_SNIFF_SUBRATING: sniff_subrating_dump(level + 1, frm); return; @@ -1690,6 +1711,28 @@ static inline void read_link_policy_dump(int level, struct frame *frm) } } +static inline void read_default_link_policy_dump(int level, struct frame *frm) +{ + uint8_t status = get_u8(frm); + uint16_t policy = btohs(htons(get_u16(frm))); + char *str; + + p_indent(level, frm); + printf("status 0x%2.2x policy 0x%2.2x\n", status, policy); + + if (status > 0) { + p_indent(level, frm); + printf("Error: %s\n", status2str(status)); + } else { + str = hci_lptostr(policy); + if (str) { + p_indent(level, frm); + printf("Link policy: %s\n", str); + free(str); + } + } +} + static inline void read_pin_type_dump(int level, struct frame *frm) { read_pin_type_rp *rp = frm->ptr; @@ -2218,6 +2261,12 @@ static inline void cmd_complete_dump(int level, struct frame *frm) case OCF_SNIFF_SUBRATING: generic_response_dump(level, frm); return; + case OCF_READ_DEFAULT_LINK_POLICY: + read_default_link_policy_dump(level, frm); + return; + case OCF_WRITE_DEFAULT_LINK_POLICY: + status_response_dump(level, frm); + return; } break; |