diff mbox series

[BlueZ,v2,2/3] test-runner: Add audio card support

Message ID 20220610072850.16593-3-frederic.danis@collabora.com (mailing list archive)
State Superseded
Headers show
Series test-runner: Add support for audio daemons | expand

Checks

Context Check Description
tedd_an/pre-ci_am success Success
tedd_an/checkpatch success Checkpatch PASS
tedd_an/gitlint success Gitlint PASS

Commit Message

Frédéric Danis June 10, 2022, 7:28 a.m. UTC
With this commit audio daemons can detect an audio card with output and
input, allowing to test interaction between BlueZ and the audio daemon.
---
 doc/test-runner.txt |  5 +++++
 tools/test-runner.c | 23 ++++++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

Comments

Luiz Augusto von Dentz June 10, 2022, 3:48 p.m. UTC | #1
Hi Frédéric,

On Fri, Jun 10, 2022 at 12:30 AM Frédéric Danis
<frederic.danis@collabora.com> wrote:
>
> With this commit audio daemons can detect an audio card with output and
> input, allowing to test interaction between BlueZ and the audio daemon.
> ---
>  doc/test-runner.txt |  5 +++++
>  tools/test-runner.c | 23 ++++++++++++++++++++++-
>  2 files changed, 27 insertions(+), 1 deletion(-)
>
> diff --git a/doc/test-runner.txt b/doc/test-runner.txt
> index 683c622a2..019c23188 100644
> --- a/doc/test-runner.txt
> +++ b/doc/test-runner.txt
> @@ -54,6 +54,11 @@ For Bluetooth functionality:
>
>         CONFIG_UHID=y
>
> +For Audio functionality:
> +       CONFIG_SYSVIPC=y
> +       CONFIG_SOUND=y
> +       CONFIG_SND=y
> +       CONFIG_SND_INTEL8X0=y

Lets have this as a separate patch.

>  These options should be installed as .config in the kernel source directory
>  followed by this command.
> diff --git a/tools/test-runner.c b/tools/test-runner.c
> index 9fc8e7b33..bbbca5b5d 100644
> --- a/tools/test-runner.c
> +++ b/tools/test-runner.c
> @@ -54,6 +54,7 @@ static bool start_monitor = false;
>  static int num_devs = 0;
>  static const char *qemu_binary = NULL;
>  static const char *kernel_image = NULL;
> +static bool audio_support;
>
>  static const char *qemu_table[] = {
>         "qemu-system-x86_64",
> @@ -261,6 +262,7 @@ static void start_qemu(void)
>                                 run_auto, testargs);
>
>         argv = alloca(sizeof(qemu_argv) +
> +                               (audio_support ? 4 : 0) +
>                                 (sizeof(char *) * (4 + (num_devs * 4))));
>         memcpy(argv, qemu_argv, sizeof(qemu_argv));
>
> @@ -268,6 +270,20 @@ static void start_qemu(void)
>
>         argv[0] = (char *) qemu_binary;
>
> +       if (audio_support) {
> +               char *xdg_runtime_dir, *audiodev;
> +
> +               xdg_runtime_dir = getenv("XDG_RUNTIME_DIR");
> +               audiodev = alloca(40 + strlen(xdg_runtime_dir));
> +               sprintf(audiodev, "id=audio,driver=pa,server=%s/pulse/native",
> +                               xdg_runtime_dir);
> +
> +               argv[pos++] = "-audiodev";
> +               argv[pos++] = audiodev;
> +               argv[pos++] = "-device";
> +               argv[pos++] = "AC97,audiodev=audio";
> +       }
> +
>         argv[pos++] = "-kernel";
>         argv[pos++] = (char *) kernel_image;
>         argv[pos++] = "-append";
> @@ -990,6 +1006,7 @@ static void usage(void)
>                 "\t-u, --unix [path]      Provide serial device\n"
>                 "\t-q, --qemu <path>      QEMU binary\n"
>                 "\t-k, --kernel <image>   Kernel image (bzImage)\n"
> +               "\t-A, --audio            Add audio support\n"
>                 "\t-h, --help             Show help options\n");
>  }
>
> @@ -1004,6 +1021,7 @@ static const struct option main_options[] = {
>         { "monitor", no_argument,       NULL, 'm' },
>         { "qemu",    required_argument, NULL, 'q' },
>         { "kernel",  required_argument, NULL, 'k' },
> +       { "audio",   no_argument,       NULL, 'A' },
>         { "version", no_argument,       NULL, 'v' },
>         { "help",    no_argument,       NULL, 'h' },
>         { }
> @@ -1023,7 +1041,7 @@ int main(int argc, char *argv[])
>         for (;;) {
>                 int opt;
>
> -               opt = getopt_long(argc, argv, "aubdslmq:k:vh", main_options,
> +               opt = getopt_long(argc, argv, "aubdslmq:k:Avh", main_options,
>                                                                 NULL);
>                 if (opt < 0)
>                         break;
> @@ -1057,6 +1075,9 @@ int main(int argc, char *argv[])
>                 case 'k':
>                         kernel_image = optarg;
>                         break;
> +               case 'A':
> +                       audio_support = true;
> +                       break;
>                 case 'v':
>                         printf("%s\n", VERSION);
>                         return EXIT_SUCCESS;
> --
> 2.25.1
>
diff mbox series

Patch

diff --git a/doc/test-runner.txt b/doc/test-runner.txt
index 683c622a2..019c23188 100644
--- a/doc/test-runner.txt
+++ b/doc/test-runner.txt
@@ -54,6 +54,11 @@  For Bluetooth functionality:
 
 	CONFIG_UHID=y
 
+For Audio functionality:
+	CONFIG_SYSVIPC=y
+	CONFIG_SOUND=y
+	CONFIG_SND=y
+	CONFIG_SND_INTEL8X0=y
 
 These options should be installed as .config in the kernel source directory
 followed by this command.
diff --git a/tools/test-runner.c b/tools/test-runner.c
index 9fc8e7b33..bbbca5b5d 100644
--- a/tools/test-runner.c
+++ b/tools/test-runner.c
@@ -54,6 +54,7 @@  static bool start_monitor = false;
 static int num_devs = 0;
 static const char *qemu_binary = NULL;
 static const char *kernel_image = NULL;
+static bool audio_support;
 
 static const char *qemu_table[] = {
 	"qemu-system-x86_64",
@@ -261,6 +262,7 @@  static void start_qemu(void)
 				run_auto, testargs);
 
 	argv = alloca(sizeof(qemu_argv) +
+				(audio_support ? 4 : 0) +
 				(sizeof(char *) * (4 + (num_devs * 4))));
 	memcpy(argv, qemu_argv, sizeof(qemu_argv));
 
@@ -268,6 +270,20 @@  static void start_qemu(void)
 
 	argv[0] = (char *) qemu_binary;
 
+	if (audio_support) {
+		char *xdg_runtime_dir, *audiodev;
+
+		xdg_runtime_dir = getenv("XDG_RUNTIME_DIR");
+		audiodev = alloca(40 + strlen(xdg_runtime_dir));
+		sprintf(audiodev, "id=audio,driver=pa,server=%s/pulse/native",
+				xdg_runtime_dir);
+
+		argv[pos++] = "-audiodev";
+		argv[pos++] = audiodev;
+		argv[pos++] = "-device";
+		argv[pos++] = "AC97,audiodev=audio";
+	}
+
 	argv[pos++] = "-kernel";
 	argv[pos++] = (char *) kernel_image;
 	argv[pos++] = "-append";
@@ -990,6 +1006,7 @@  static void usage(void)
 		"\t-u, --unix [path]      Provide serial device\n"
 		"\t-q, --qemu <path>      QEMU binary\n"
 		"\t-k, --kernel <image>   Kernel image (bzImage)\n"
+		"\t-A, --audio            Add audio support\n"
 		"\t-h, --help             Show help options\n");
 }
 
@@ -1004,6 +1021,7 @@  static const struct option main_options[] = {
 	{ "monitor", no_argument,       NULL, 'm' },
 	{ "qemu",    required_argument, NULL, 'q' },
 	{ "kernel",  required_argument, NULL, 'k' },
+	{ "audio",   no_argument,       NULL, 'A' },
 	{ "version", no_argument,       NULL, 'v' },
 	{ "help",    no_argument,       NULL, 'h' },
 	{ }
@@ -1023,7 +1041,7 @@  int main(int argc, char *argv[])
 	for (;;) {
 		int opt;
 
-		opt = getopt_long(argc, argv, "aubdslmq:k:vh", main_options,
+		opt = getopt_long(argc, argv, "aubdslmq:k:Avh", main_options,
 								NULL);
 		if (opt < 0)
 			break;
@@ -1057,6 +1075,9 @@  int main(int argc, char *argv[])
 		case 'k':
 			kernel_image = optarg;
 			break;
+		case 'A':
+			audio_support = true;
+			break;
 		case 'v':
 			printf("%s\n", VERSION);
 			return EXIT_SUCCESS;