From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: linux-bluetooth@vger.kernel.org
Subject: [RFC hcidump 1/8] AVRCP: Add initial support for browsing channel
Date: Wed, 15 Aug 2012 16:32:02 +0300 [thread overview]
Message-ID: <1345037529-1828-1-git-send-email-luiz.dentz@gmail.com> (raw)
From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
---
parser/avctp.c | 4 ++--
parser/avrcp.c | 43 ++++++++++++++++++++++++++++++++++++++++---
parser/l2cap.c | 3 ++-
parser/parser.h | 4 ++--
4 files changed, 46 insertions(+), 8 deletions(-)
diff --git a/parser/avctp.c b/parser/avctp.c
index cf015d4..5d913cf 100644
--- a/parser/avctp.c
+++ b/parser/avctp.c
@@ -50,7 +50,7 @@ static char *pt2str(uint8_t hdr)
}
}
-void avctp_dump(int level, struct frame *frm)
+void avctp_dump(int level, struct frame *frm, uint16_t psm)
{
uint8_t hdr;
uint16_t pid;
@@ -65,7 +65,7 @@ void avctp_dump(int level, struct frame *frm)
pt2str(hdr), hdr & 0x0c, hdr >> 4, pid);
if (pid == SDP_UUID_AV_REMOTE || pid == SDP_UUID_AV_REMOTE_TARGET)
- avrcp_dump(level + 1, frm);
+ avrcp_dump(level + 1, frm, psm);
else
raw_dump(level + 1, frm);
}
diff --git a/parser/avrcp.c b/parser/avrcp.c
index f25dc34..46efec9 100644
--- a/parser/avrcp.c
+++ b/parser/avrcp.c
@@ -1502,13 +1502,34 @@ static const char *subunit2str(uint8_t subunit)
}
}
-void avrcp_dump(int level, struct frame *frm)
+static void avrcp_browsing_dump(int level, struct frame *frm)
+{
+ uint8_t pduid;
+ uint16_t len;
+
+ pduid = get_u8(frm);
+ len = get_u16(frm);
+
+ printf("AVRCP: %s: len 0x%04x\n", pdu2str(pduid), len);
+
+ if (len != frm->len) {
+ p_indent(level, frm);
+ printf("PDU Malformed\n");
+ raw_dump(level, frm);
+ return;
+ }
+
+ switch (pduid) {
+ default:
+ raw_dump(level, frm);
+ }
+}
+
+static void avrcp_control_dump(int level, struct frame *frm)
{
uint8_t ctype, address, subunit, opcode, company[3];
int i;
- p_indent(level, frm);
-
ctype = get_u8(frm);
address = get_u8(frm);
opcode = get_u8(frm);
@@ -1557,3 +1578,19 @@ void avrcp_dump(int level, struct frame *frm)
raw_dump(level, frm);
}
}
+
+void avrcp_dump(int level, struct frame *frm, uint16_t psm)
+{
+ p_indent(level, frm);
+
+ switch (psm) {
+ case 0x17:
+ avrcp_control_dump(level, frm);
+ break;
+ case 0x1B:
+ avrcp_browsing_dump(level, frm);
+ break;
+ default:
+ raw_dump(level, frm);
+ }
+}
diff --git a/parser/l2cap.c b/parser/l2cap.c
index 8dc825b..a6162d7 100644
--- a/parser/l2cap.c
+++ b/parser/l2cap.c
@@ -1487,8 +1487,9 @@ static void l2cap_parse(int level, struct frame *frm)
break;
case 0x17:
+ case 0x1B:
if (!p_filter(FILT_AVCTP))
- avctp_dump(level, frm);
+ avctp_dump(level, frm, psm);
else
raw_dump(level + 1, frm);
break;
diff --git a/parser/parser.h b/parser/parser.h
index 1130a5f..c712d42 100644
--- a/parser/parser.h
+++ b/parser/parser.h
@@ -233,8 +233,8 @@ void cmtp_dump(int level, struct frame *frm);
void hidp_dump(int level, struct frame *frm);
void hcrp_dump(int level, struct frame *frm);
void avdtp_dump(int level, struct frame *frm);
-void avctp_dump(int level, struct frame *frm);
-void avrcp_dump(int level, struct frame *frm);
+void avctp_dump(int level, struct frame *frm, uint16_t psm);
+void avrcp_dump(int level, struct frame *frm, uint16_t psm);
void att_dump(int level, struct frame *frm);
void smp_dump(int level, struct frame *frm);
void sap_dump(int level, struct frame *frm);
--
1.7.11.2
next reply other threads:[~2012-08-15 13:32 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-15 13:32 Luiz Augusto von Dentz [this message]
2012-08-15 13:32 ` [RFC hcidump 2/8] AVRCP: Fix parsing SetBrowsedPlayer as AV/C pdu Luiz Augusto von Dentz
2012-08-15 13:32 ` [RFC hcidump 3/8] AVRCP: Add parsing for GetFolderItems PDU Luiz Augusto von Dentz
2012-08-15 13:32 ` [RFC hcidump 4/8] AVRCP: Add parsing for ChangePath PDU Luiz Augusto von Dentz
2012-08-15 13:32 ` [RFC hcidump 5/8] AVRCP: Add parsing for GetItemAttributes PDU Luiz Augusto von Dentz
2012-08-15 13:32 ` [RFC hcidump 6/8] AVRCP: Add parsing for PlayItem PDU Luiz Augusto von Dentz
2012-08-15 13:32 ` [RFC hcidump 7/8] AVRCP: Add parsing for Search PDU Luiz Augusto von Dentz
2012-08-15 13:32 ` [RFC hcidump 8/8] AVRCP: Add parsing for AddToNowPlaying PDU Luiz Augusto von Dentz
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1345037529-1828-1-git-send-email-luiz.dentz@gmail.com \
--to=luiz.dentz@gmail.com \
--cc=linux-bluetooth@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox