mirror of
https://git.kernel.org/pub/scm/bluetooth/bluez.git
synced 2024-12-12 13:34:41 +08:00
hcidump: Parse Command Complete events corresponding to AMP related HCI commands
This commit is contained in:
parent
acd533232a
commit
0c5c007c58
@ -2360,6 +2360,71 @@ static inline void read_clock_dump(int level, struct frame *frm)
|
||||
}
|
||||
}
|
||||
|
||||
static inline void read_local_amp_info_dump(int level, struct frame *frm)
|
||||
{
|
||||
read_local_amp_info_rp *rp = frm->ptr;
|
||||
|
||||
p_indent(level, frm);
|
||||
printf("status 0x%2.2x amp status 0x%2.2x\n",
|
||||
rp->status, rp->amp_status);
|
||||
if (rp->status > 0) {
|
||||
p_indent(level, frm);
|
||||
printf("Error: %s\n", status2str(rp->status));
|
||||
} else {
|
||||
p_indent(level, frm);
|
||||
printf("total bandwidth %d, max guaranteed bandwidth %d\n",
|
||||
btohl(rp->total_bandwidth),
|
||||
btohl(rp->max_guaranteed_bandwidth));
|
||||
p_indent(level, frm);
|
||||
printf("min latency %d, max PDU %d, controller type 0x%2.2x\n",
|
||||
btohl(rp->min_latency), btohl(rp->max_pdu_size),
|
||||
rp->controller_type);
|
||||
p_indent(level, frm);
|
||||
printf("pal caps 0x%4.4x, max assoc len %d\n",
|
||||
btohs(rp->pal_caps), btohs(rp->max_amp_assoc_length));
|
||||
p_indent(level, frm);
|
||||
printf("max flush timeout %d, best effort flush timeout %d\n",
|
||||
btohl(rp->max_flush_timeout),
|
||||
btohl(rp->best_effort_flush_timeout));
|
||||
}
|
||||
}
|
||||
|
||||
static inline void read_local_amp_assoc_dump(int level, struct frame *frm)
|
||||
{
|
||||
read_local_amp_assoc_rp *rp = frm->ptr;
|
||||
uint16_t len = btohs(rp->length);
|
||||
int i;
|
||||
|
||||
p_indent(level, frm);
|
||||
printf("status 0x%2.2x handle 0x%2.2x length %d\n",
|
||||
rp->status, rp->handle, len);
|
||||
if (rp->status > 0) {
|
||||
p_indent(level, frm);
|
||||
printf("Error: %s\n", status2str(rp->status));
|
||||
} else {
|
||||
for (i = 0; i < len; i++) {
|
||||
if (!(i % 16)) {
|
||||
printf("\n");
|
||||
p_indent(level, frm);
|
||||
}
|
||||
printf("%2.2x ", rp->fragment[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
}
|
||||
|
||||
static inline void write_remote_amp_assoc_dump(int level, struct frame *frm)
|
||||
{
|
||||
write_remote_amp_assoc_rp *rp = frm->ptr;
|
||||
|
||||
p_indent(level, frm);
|
||||
printf("status 0x%2.2x handle 0x%2.2x\n", rp->status, rp->handle);
|
||||
if (rp->status > 0) {
|
||||
p_indent(level, frm);
|
||||
printf("Error: %s\n", status2str(rp->status));
|
||||
}
|
||||
}
|
||||
|
||||
static inline void cmd_complete_dump(int level, struct frame *frm)
|
||||
{
|
||||
evt_cmd_complete *evt = frm->ptr;
|
||||
@ -2460,6 +2525,7 @@ static inline void cmd_complete_dump(int level, struct frame *frm)
|
||||
return;
|
||||
case OCF_READ_CONN_ACCEPT_TIMEOUT:
|
||||
case OCF_READ_PAGE_TIMEOUT:
|
||||
case OCF_READ_LOGICAL_LINK_ACCEPT_TIMEOUT:
|
||||
read_page_timeout_dump(level, frm);
|
||||
return;
|
||||
case OCF_READ_PAGE_ACTIVITY:
|
||||
@ -2528,7 +2594,12 @@ static inline void cmd_complete_dump(int level, struct frame *frm)
|
||||
case OCF_HOST_BUFFER_SIZE:
|
||||
case OCF_REFRESH_ENCRYPTION_KEY:
|
||||
case OCF_SEND_KEYPRESS_NOTIFY:
|
||||
case OCF_WRITE_LOGICAL_LINK_ACCEPT_TIMEOUT:
|
||||
case OCF_SET_EVENT_MASK_PAGE_2:
|
||||
case OCF_WRITE_LOCATION_DATA:
|
||||
case OCF_WRITE_FLOW_CONTROL_MODE:
|
||||
case OCF_READ_BEST_EFFORT_FLUSH_TIMEOUT:
|
||||
case OCF_WRITE_BEST_EFFORT_FLUSH_TIMEOUT:
|
||||
status_response_dump(level, frm);
|
||||
return;
|
||||
}
|
||||
@ -2575,6 +2646,15 @@ static inline void cmd_complete_dump(int level, struct frame *frm)
|
||||
case OCF_READ_CLOCK:
|
||||
read_clock_dump(level, frm);
|
||||
return;
|
||||
case OCF_READ_LOCAL_AMP_INFO:
|
||||
read_local_amp_info_dump(level, frm);
|
||||
return;
|
||||
case OCF_READ_LOCAL_AMP_ASSOC:
|
||||
read_local_amp_assoc_dump(level, frm);
|
||||
return;
|
||||
case OCF_WRITE_REMOTE_AMP_ASSOC:
|
||||
write_remote_amp_assoc_dump(level, frm);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user