aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-06-12 23:07:35 +0000
committerMarcel Holtmann <marcel@holtmann.org>2008-06-12 23:07:35 +0000
commitf981c2aef1a76718cec35e7f439939af59dc6a00 (patch)
tree4e49ee3910d518ffb3215b2cc74c47407523c4b3
parent6d012a81f80dadc7394c92a4de994b88545cb95e (diff)
downloadbluez-hcidump-f981c2aef1a76718cec35e7f439939af59dc6a00.tar.gz
Decode Default Link Policy Settings commands
-rw-r--r--parser/hci.c49
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;