Re: [PATCH hcidump 01/13] Don't parse response AVRCP pdu if ctype is NOT_IMPLETED
From: Lucas De Marchi <hidden>
Date: 2011-08-01 15:44:25
On Mon, Aug 1, 2011 at 12:25 PM, Luiz Augusto von Dentz [off-list ref] wrote:
Hi Lucas, On Mon, Aug 1, 2011 at 5:11 PM, Lucas De Marchi [off-list ref] wrote:quoted
On Mon, Aug 1, 2011 at 5:42 AM, Luiz Augusto von Dentz [off-list ref] wrote:quoted
From: Luiz Augusto von Dentz <redacted> --- parser/avrcp.c | 3 +++ 1 files changed, 3 insertions(+), 0 deletions(-)diff --git a/parser/avrcp.c b/parser/avrcp.c index ff6862d..a1768e3 100644 --- a/parser/avrcp.c +++ b/parser/avrcp.c@@ -347,6 +347,9 @@ static void avrcp_pdu_dump(int level, struct frame *frm, uint8_t ctype)return; } + if (ctype == AVC_CTYPE_NOT_IMPLEMENTED) + return; +From my reading of the spec, this check should be in avrcp_dump() function -- like you did for skipping non-panel subunit packets. This is because in the not-implemented case, only the avctp + avrcp headers are sent, with no operands inside. In AVRCP 1.3, section 4.3.4: "All of the operands are optional and are defined based on the values of ctype, subunit_type, and opcode." In case ctype == NOT_IMPLEMENTED, there isn't any operand.But apparently the avrcp header indicates it length wrong (!= 0), also
You should not be reading this field because:
avrcp_pdu_dump is called to print the avrcp header but perhaps the header itself is already considered an operand and in that should not even that should be present in the response.
And it's not in the response as far as I could check. Lucas De Marchi