diff --git a/monitor/l2cap.c b/monitor/l2cap.c
index a09bbbc..c0bc9a8 100644
--- a/monitor/l2cap.c
+++ b/monitor/l2cap.c
uint16_t psm;
uint8_t ctrlid;
uint8_t mode;
+ uint8_t ext_ctrl;
};
static struct chan_data chan_list[MAX_CHAN];
return 0;
}
+static void assign_ext_ctrl(const struct l2cap_frame *frame,
+ uint8_t ext_ctrl, uint16_t dcid)
+{
+ int i;
+
+ for (i = 0; i < MAX_CHAN; i++) {
+ if (chan_list[i].index != frame->index)
+ continue;
+
+ if (chan_list[i].handle != frame->handle)
+ continue;
+
+ if (frame->in) {
+ if (chan_list[i].scid == dcid) {
+ chan_list[i].ext_ctrl = ext_ctrl;
+ break;
+ }
+ } else {
+ if (chan_list[i].dcid == dcid) {
+ chan_list[i].ext_ctrl = ext_ctrl;
+ break;
+ }
+ }
+ }
+}
+
#define MAX_INDEX 16
struct index_data {
get_le32(data + consumed + 14));
break;
case 0x07:
- print_field(" Max window size: %d",
+ print_field(" Extended window size: %d",
get_le16(data + consumed + 2));
+ assign_ext_ctrl(frame, 1, cid);
break;
default:
packet_hexdump(data + consumed + 2, len);