diff --git a/tools/hcidump.c b/tools/hcidump.c
index b7f3e10..f966c36 100644
--- a/tools/hcidump.c
+++ b/tools/hcidump.c
exit(1);
}
- if (device == HCI_DEV_NONE)
+ if (dev == HCI_DEV_NONE)
printf("system: ");
else
printf("device: hci%d ", dev);
/* Process control message */
frm.data_len = len;
+ frm.dev_id = dev;
frm.in = 0;
+
cmsg = CMSG_FIRSTHDR(&msg);
while (cmsg) {
switch (cmsg->cmsg_type) {
diff --git a/tools/parser/hci.c b/tools/parser/hci.c
index dfcd973..c41dec2 100644
--- a/tools/parser/hci.c
+++ b/tools/parser/hci.c
if (p_filter(FILT_HCI))
return;
+ if (frm->dev_id == HCI_DEV_NONE) {
+ uint16_t type = btohs(htons(get_u16(frm)));
+ uint16_t plen = btohs(htons(get_u16(frm)));
+
+ p_indent(level, frm);
+
+ printf("System %s: type 0x%2.2x plen %d\n",
+ frm->in ? "event" : "command", type, plen);
+
+ raw_dump(level, frm);
+ return;
+ }
+
if (get_manufacturer() == 12) {
bpa_dump(level, frm);
return;
diff --git a/tools/parser/l2cap.c b/tools/parser/l2cap.c
index 7332967..168ad6f 100644
--- a/tools/parser/l2cap.c
+++ b/tools/parser/l2cap.c
}
memcpy(fr->data, frm->ptr, frm->len);
fr->data_len = dlen + L2CAP_HDR_SIZE;
- fr->len = frm->len;
- fr->ptr = fr->data;
- fr->in = frm->in;
- fr->ts = frm->ts;
- fr->handle = frm->handle;
- fr->cid = frm->cid;
- fr->num = frm->num;
- fr->dlci = frm->dlci;
- fr->channel = frm->channel;
+ fr->len = frm->len;
+ fr->ptr = fr->data;
+ fr->dev_id = frm->dev_id;
+ fr->in = frm->in;
+ fr->ts = frm->ts;
+ fr->handle = frm->handle;
+ fr->cid = frm->cid;
+ fr->num = frm->num;
+ fr->dlci = frm->dlci;
+ fr->channel = frm->channel;
} else {
if (!(fr = get_frame(frm->handle))) {
fprintf(stderr, "Not enough connection handles\n");
diff --git a/tools/parser/obex.c b/tools/parser/obex.c
index 65baf4a..9e5a509 100644
--- a/tools/parser/obex.c
+++ b/tools/parser/obex.c
fr->data_len = fr->len + frm->len;
fr->len = fr->data_len;
fr->ptr = fr->data;
+ fr->dev_id = frm->dev_id;
fr->in = frm->in;
fr->ts = frm->ts;
fr->handle = frm->handle;
diff --git a/tools/parser/parser.h b/tools/parser/parser.h
index d807a94..d515ddd 100644
--- a/tools/parser/parser.h
+++ b/tools/parser/parser.h
uint32_t data_len;
void *ptr;
uint32_t len;
+ uint16_t dev_id;
uint8_t in;
uint8_t master;
uint16_t handle;
diff --git a/tools/parser/sdp.c b/tools/parser/sdp.c
index 3f0f5c5..034e496 100644
--- a/tools/parser/sdp.c
+++ b/tools/parser/sdp.c
if (fr->data)
free(fr->data);
- fr->data = data;
+ fr->data = data;
fr->data_len = len + count;
- fr->len = fr->data_len;
- fr->ptr = fr->data;
- fr->in = frm->in;
- fr->ts = frm->ts;
- fr->handle = frm->handle;
- fr->cid = frm->cid;
- fr->num = frm->num;
- fr->channel = frm->channel;
+ fr->len = fr->data_len;
+ fr->ptr = fr->data;
+ fr->dev_id = frm->dev_id;
+ fr->in = frm->in;
+ fr->ts = frm->ts;
+ fr->handle = frm->handle;
+ fr->cid = frm->cid;
+ fr->num = frm->num;
+ fr->channel = frm->channel;
return pos;
}