AVRCP GetElementAttributes formatting issue for AttributeValue fixed.
AVCTP Control: Response: type 0x00 label 4 PID 0x110e
AV/C: Stable: address 0x48 opcode 0x00
Subunit: Panel
Opcode: Vendor Dependent
Company ID: 0x001958
AVRCP: GetElementAttributes pt Single len 0x0040
AttributeCount: 0x04
Attribute: 0x00000001 (Title)
CharsetID: 0x006a (UTF-8)
AttributeValueLength: 0x0008
AttributeValue: fernando
Attribute: 0x00000002 (Artist)
CharsetID: 0x006a (UTF-8)
AttributeValueLength: 0x0004
AttributeValue: abba
Attribute: 0x00000003 (Album)
CharsetID: 0x006a (UTF-8)
AttributeValueLength: 0x000d
AttributeValue: Greatest Hits
Attribute: 0x00000007 (Track duration)
CharsetID: 0x006a (UTF-8)
AttributeValueLength: 0x0006
AttributeValue: 150000
---
monitor/avctp.c | 20 +++++++++++++-------
1 file changed, 13 insertions(+), 7 deletions(-)
diff --git a/monitor/avctp.c b/monitor/avctp.c
index 4abd18f..11dc9b2 100644
--- a/monitor/avctp.c
+++ b/monitor/avctp.c
@@ -1122,7 +1122,9 @@ response:
num = avrcp_continuing.num;
if (avrcp_continuing.size > 0) {
+ char attrval[UINT8_MAX];
uint16_t size;
+ uint8_t idx;
if (avrcp_continuing.size > len) {
size = len;
@@ -1132,16 +1134,17 @@ response:
avrcp_continuing.size = 0;
}
- printf("ContinuingAttributeValue: ");
- for (; size > 0; size--) {
+ for (idx = 0; size > 0; idx++, size--) {
uint8_t c;
if (!l2cap_frame_get_u8(frame, &c))
goto failed;
- printf("%1c", isprint(c) ? c : '.');
+ sprintf(&attrval[idx], "%1c",
+ isprint(c) ? c : '.');
}
- printf("\n");
+ print_field("%*cContinuingAttributeValue: %s",
+ (indent - 8), ' ', attrval);
len -= size;
}
@@ -1153,6 +1156,8 @@ response:
while (num > 0 && len > 0) {
uint32_t attr;
uint16_t charset, attrlen;
+ uint8_t idx;
+ char attrval[UINT8_MAX];
if (!l2cap_frame_get_be32(frame, &attr))
goto failed;
@@ -1175,15 +1180,16 @@ response:
len -= sizeof(attr) + sizeof(charset) + sizeof(attrlen);
num--;
- print_field("%*cAttributeValue: ", (indent - 8), ' ');
- for (; attrlen > 0 && len > 0; attrlen--, len--) {
+ for (idx = 0; attrlen > 0 && len > 0; idx++, attrlen--, len--) {
uint8_t c;
if (!l2cap_frame_get_u8(frame, &c))
goto failed;
- printf("%1c", isprint(c) ? c : '.');
+ sprintf(&attrval[idx], "%1c", isprint(c) ? c : '.');
}
+ print_field("%*cAttributeValue: %s", (indent - 8),
+ ' ', attrval);
if (attrlen > 0)
avrcp_continuing.size = attrlen;
--
1.9.1
Hi Vikram,
On Tue, Nov 11, 2014 at 1:54 PM, Vikrampal Yadav <[email protected]> wrote:
> AVRCP GetElementAttributes formatting issue for AttributeValue fixed.
>
> AVCTP Control: Response: type 0x00 label 4 PID 0x110e
> AV/C: Stable: address 0x48 opcode 0x00
> Subunit: Panel
> Opcode: Vendor Dependent
> Company ID: 0x001958
> AVRCP: GetElementAttributes pt Single len 0x0040
> AttributeCount: 0x04
> Attribute: 0x00000001 (Title)
> CharsetID: 0x006a (UTF-8)
> AttributeValueLength: 0x0008
> AttributeValue: fernando
> Attribute: 0x00000002 (Artist)
> CharsetID: 0x006a (UTF-8)
> AttributeValueLength: 0x0004
> AttributeValue: abba
> Attribute: 0x00000003 (Album)
> CharsetID: 0x006a (UTF-8)
> AttributeValueLength: 0x000d
> AttributeValue: Greatest Hits
> Attribute: 0x00000007 (Track duration)
> CharsetID: 0x006a (UTF-8)
> AttributeValueLength: 0x0006
> AttributeValue: 150000
> ---
> monitor/avctp.c | 20 +++++++++++++-------
> 1 file changed, 13 insertions(+), 7 deletions(-)
>
> diff --git a/monitor/avctp.c b/monitor/avctp.c
> index 4abd18f..11dc9b2 100644
> --- a/monitor/avctp.c
> +++ b/monitor/avctp.c
> @@ -1122,7 +1122,9 @@ response:
> num = avrcp_continuing.num;
>
> if (avrcp_continuing.size > 0) {
> + char attrval[UINT8_MAX];
> uint16_t size;
> + uint8_t idx;
>
> if (avrcp_continuing.size > len) {
> size = len;
> @@ -1132,16 +1134,17 @@ response:
> avrcp_continuing.size = 0;
> }
>
> - printf("ContinuingAttributeValue: ");
> - for (; size > 0; size--) {
> + for (idx = 0; size > 0; idx++, size--) {
> uint8_t c;
>
> if (!l2cap_frame_get_u8(frame, &c))
> goto failed;
>
> - printf("%1c", isprint(c) ? c : '.');
> + sprintf(&attrval[idx], "%1c",
> + isprint(c) ? c : '.');
> }
> - printf("\n");
> + print_field("%*cContinuingAttributeValue: %s",
> + (indent - 8), ' ', attrval);
>
> len -= size;
> }
> @@ -1153,6 +1156,8 @@ response:
> while (num > 0 && len > 0) {
> uint32_t attr;
> uint16_t charset, attrlen;
> + uint8_t idx;
> + char attrval[UINT8_MAX];
>
> if (!l2cap_frame_get_be32(frame, &attr))
> goto failed;
> @@ -1175,15 +1180,16 @@ response:
> len -= sizeof(attr) + sizeof(charset) + sizeof(attrlen);
> num--;
>
> - print_field("%*cAttributeValue: ", (indent - 8), ' ');
> - for (; attrlen > 0 && len > 0; attrlen--, len--) {
> + for (idx = 0; attrlen > 0 && len > 0; idx++, attrlen--, len--) {
> uint8_t c;
>
> if (!l2cap_frame_get_u8(frame, &c))
> goto failed;
>
> - printf("%1c", isprint(c) ? c : '.');
> + sprintf(&attrval[idx], "%1c", isprint(c) ? c : '.');
> }
> + print_field("%*cAttributeValue: %s", (indent - 8),
> + ' ', attrval);
>
> if (attrlen > 0)
> avrcp_continuing.size = attrlen;
> --
> 1.9.1
Applied, thanks.
--
Luiz Augusto von Dentz