RE: [PATCH 4/7] monitor: Add AVRCP GetPlayerApplicationSettingAttributeText support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Luiz,

> -----Original Message-----
> From: Vikrampal Yadav [mailto:vikram.pal@xxxxxxxxxxx]
> Sent: Wednesday, August 20, 2014 2:54 PM
> To: linux-bluetooth@xxxxxxxxxxxxxxx
> Cc: luiz.dentz@xxxxxxxxx; d.kasatkin@xxxxxxxxxxx;
> vikram.pal@xxxxxxxxxxx; cpgs@xxxxxxxxxxx
> Subject: [PATCH 4/7] monitor: Add AVRCP
> GetPlayerApplicationSettingAttributeText support
> 
> Support for decoding AVRCP GetPlayerApplicationSettingAttributeText
> added in Bluetooth monitor.
> ---
>  monitor/avctp.c | 82
> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 82 insertions(+)
> 
> diff --git a/monitor/avctp.c b/monitor/avctp.c index a0a3a4c..a3a2d84
> 100644
> --- a/monitor/avctp.c
> +++ b/monitor/avctp.c
> @@ -28,6 +28,7 @@
> 
>  #include <stdio.h>
>  #include <stdlib.h>
> +#include <ctype.h>
>  #include <string.h>
>  #include <inttypes.h>
> 
> @@ -483,6 +484,39 @@ static const char *value2str(uint8_t attr, uint8_t
> value)
>  	}
>  }
> 
> +static const char *charset2str(uint16_t charset) {
> +	switch (charset) {
> +	case 1:
> +	case 2:
> +		return "Reserved";
> +	case 3:
> +		return "ASCII";
> +	case 4:
> +		return "ISO_8859-1";
> +	case 5:
> +		return "ISO_8859-2";
> +	case 6:
> +		return "ISO_8859-3";
> +	case 7:
> +		return "ISO_8859-4";
> +	case 8:
> +		return "ISO_8859-5";
> +	case 9:
> +		return "ISO_8859-6";
> +	case 10:
> +		return "ISO_8859-7";
> +	case 11:
> +		return "ISO_8859-8";
> +	case 12:
> +		return "ISO_8859-9";
> +	case 106:
> +		return "UTF-8";
> +	default:
> +		return "Unknown";
> +	}
> +}
> +
>  static void avrcp_passthrough_packet(const struct l2cap_frame *frame)  {
}
> @@ -662,6 +696,54 @@ static void avrcp_get_player_attribute_text(const
> struct l2cap_frame *frame,
>  						uint8_t ctype, uint8_t len,
>  						uint8_t indent)
>  {
> +	uint8_t num, i, j;
> +
> +	if (len < 1) {
> +		print_text(COLOR_ERROR, "PDU malformed");
> +		packet_hexdump(frame->data, frame->size);
> +		return;
> +	}
> +
> +	num = *((uint8_t *) frame->data);
> +	print_field("%*cAttributeCount: 0x%02x", (indent - 8), ' ', num);
> +
> +	if (ctype > AVC_CTYPE_GENERAL_INQUIRY) {
> +		for (i = 0; num > 0; num--, i++) {
> +			uint8_t attr, len;
> +			uint8_t totallen = 0;
> +			uint16_t charset;
> +
> +			attr = *((uint8_t *) (frame->data + 1 + 4 * i +
> totallen));
> +			print_field("%*cAttributeID: 0x%02x (%s)",
> +				(indent - 8), ' ', attr, attr2str(attr));
> +
> +			charset = get_be16(frame->data + 2 + 4 * i +
totallen);
> +			print_field("%*cCharsetID: 0x%04x (%s)",
> +					(indent - 8), ' ', charset,
> +					charset2str(charset));
> +
> +			len = *((uint8_t *) (frame->data + 4 + 4 * i +
totallen));
> +			print_field("%*cStringLength: 0x%02x",
> +					(indent - 8), ' ', len);
> +
> +			totallen =+ len;
> +
> +			printf("String: ");
> +			for (j = 0; len > 0; len--, j++) {
> +				uint8_t c = *((uint8_t *) (frame->data + 5 +
4
> * i + totallen + j));
> +				printf("%1c", isprint(c) ? c : '.');
> +			}
> +			printf("\n");
> +		}
> +	} else {
> +		for (i = 0; num > 0; num--, i++) {
> +			uint8_t attr;
> +
> +			attr = *((uint8_t *) (frame->data + 1 + i));
> +			print_field("%*cAttributeID: 0x%02x (%s)",
> +				(indent - 8), ' ', attr, attr2str(attr));
> +		}
> +	}
>  }
> 
>  static void avrcp_get_player_value_text(const struct l2cap_frame *frame,
> --
> 1.9.1

Even after using goto, one particular line uint8_t c = *((uint8_t *)
(frame->data + 5 + 4 * i + totallen + j));
Is going upto 85 characters. Is it acceptable?
If not how to break this particular line meaningfully?

Regards,
Vikram

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux