linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Paul Menzel <pmenzel@molgen.mpg.de>
To: "Frédéric Danis" <frederic.danis@collabora.com>
Cc: linux-bluetooth@vger.kernel.org
Subject: Re: [PATCH BlueZ v2] tools: avtest: Add reject-code option
Date: Fri, 8 Dec 2023 11:07:58 +0100	[thread overview]
Message-ID: <b6f9ca9a-24f7-45cf-b50d-edd16fbf453c@molgen.mpg.de> (raw)
In-Reply-To: <20231208090013.620051-1-frederic.danis@collabora.com>

Dear Frédéric,


Thank you for your patch.

Am 08.12.23 um 10:00 schrieb Frédéric Danis:
> Some PTS tests like A2DP/SNK/AVP/BI-03-C, A2DP/SNK/AVP/BI-08-C , …
> request some specific rejection code to pass.
> This commit add an option to specify the rejection code during

add*s*

> AVDTP_SET_CONFIGURATION rejection.

It’d be great if you gave one example using that new option.

> ---
>   tools/avtest.c | 23 ++++++++++++++++-------
>   1 file changed, 16 insertions(+), 7 deletions(-)
> 
> diff --git a/tools/avtest.c b/tools/avtest.c
> index ca37b3b46..5ac3418aa 100644
> --- a/tools/avtest.c
> +++ b/tools/avtest.c
> @@ -188,7 +188,8 @@ static void dump_buffer(const unsigned char *buf, int len)
>   }
>   
>   static void process_avdtp(int srv_sk, int sk, unsigned char reject,
> -								int fragment)
> +								int fragment,
> +								int reject_code)
>   {
>   	unsigned char buf[672];
>   	ssize_t len;
> @@ -284,7 +285,8 @@ static void process_avdtp(int srv_sk, int sk, unsigned char reject,
>   			if (reject == AVDTP_SET_CONFIGURATION) {
>   				hdr->message_type = AVDTP_MSG_TYPE_REJECT;
>   				buf[2] = buf[4];
> -				buf[3] = 0x13; /* SEP In Use */
> +				buf[3] = reject_code ? reject_code :
> +							0x13; /* SEP In Use */
>   				printf("Rejecting set configuration command\n");
>   				len = write(sk, buf, 4);
>   			} else {
> @@ -443,7 +445,8 @@ static int set_minimum_mtu(int sk)
>   	return 0;
>   }
>   
> -static void do_listen(const bdaddr_t *src, unsigned char reject, int fragment)
> +static void do_listen(const bdaddr_t *src, unsigned char reject, int fragment,
> +							int reject_code)
>   {
>   	struct sockaddr_l2 addr;
>   	socklen_t optlen;
> @@ -483,7 +486,7 @@ static void do_listen(const bdaddr_t *src, unsigned char reject, int fragment)
>   			continue;
>   		}
>   
> -		process_avdtp(sk, nsk, reject, fragment);
> +		process_avdtp(sk, nsk, reject, fragment, reject_code);
>   
>   		if (media_sock >= 0) {
>   			close(media_sock);
> @@ -709,6 +712,7 @@ static void usage(void)
>   	printf("Options:\n"
>   		"\t--device <hcidev>    HCI device\n"
>   		"\t--reject <command>   Reject command\n"
> +		"\t--reject-code <code> Reject code to use\n"
>   		"\t--send <command>     Send command\n"
>   		"\t--preconf            Configure stream before actual command\n"
>   		"\t--wait <N>           Wait N seconds before exiting\n"
> @@ -720,6 +724,7 @@ static struct option main_options[] = {
>   	{ "help",	0, 0, 'h' },
>   	{ "device",	1, 0, 'i' },
>   	{ "reject",	1, 0, 'r' },
> +	{ "reject-code",	1, 0, 'R' },
>   	{ "send",	1, 0, 's' },
>   	{ "invalid",	1, 0, 'f' },
>   	{ "preconf",	0, 0, 'c' },
> @@ -764,12 +769,12 @@ int main(int argc, char *argv[])
>   	unsigned char cmd = 0x00;
>   	bdaddr_t src, dst;
>   	int opt, mode = MODE_NONE, sk, invalid = 0, preconf = 0, fragment = 0;
> -	int avctp = 0, wait_before_exit = 0;
> +	int avctp = 0, wait_before_exit = 0, reject_code = 0;
>   
>   	bacpy(&src, BDADDR_ANY);
>   	bacpy(&dst, BDADDR_ANY);
>   
> -	while ((opt = getopt_long(argc, argv, "+i:r:s:f:hcFCw:",
> +	while ((opt = getopt_long(argc, argv, "+i:r:s:f:hcFCw:R:",
>   						main_options, NULL)) != EOF) {
>   		switch (opt) {
>   		case 'i':
> @@ -809,6 +814,10 @@ int main(int argc, char *argv[])
>   			wait_before_exit = atoi(optarg);
>   			break;
>   
> +		case 'R':
> +			reject_code = atoi(optarg);
> +			break;
> +
>   		case 'h':
>   		default:
>   			usage();
> @@ -826,7 +835,7 @@ int main(int argc, char *argv[])
>   
>   	switch (mode) {
>   	case MODE_REJECT:
> -		do_listen(&src, cmd, fragment);
> +		do_listen(&src, cmd, fragment, reject_code);
>   		break;
>   	case MODE_SEND:
>   		sk = do_connect(&src, &dst, avctp, fragment);

Reviewed-by: Paul Menzel <pmenzel@molgen.mpg.de>


Kind regards,

Paul

  parent reply	other threads:[~2023-12-08 10:08 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-12-08  9:00 [PATCH BlueZ v2] tools: avtest: Add reject-code option Frédéric Danis
2023-12-08 10:05 ` [BlueZ,v2] " bluez.test.bot
2023-12-08 10:07 ` Paul Menzel [this message]
2023-12-08 10:17 ` [PATCH BlueZ v3] " Frédéric Danis
2023-12-08 11:32   ` [BlueZ,v3] " bluez.test.bot
2023-12-11 18:40   ` [PATCH BlueZ v3] " patchwork-bot+bluetooth

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=b6f9ca9a-24f7-45cf-b50d-edd16fbf453c@molgen.mpg.de \
    --to=pmenzel@molgen.mpg.de \
    --cc=frederic.danis@collabora.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;
as well as URLs for NNTP newsgroup(s).