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 |
Context | Check | Description |
---|---|---|
tedd_an/pre-ci_am | success | Success |
tedd_an/checkpatch | success | Checkpatch PASS |
tedd_an/gitlint | success | Gitlint PASS |
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 --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;