Those patches add DBus session and an audio card so it should be possible
to start an audio daemon like PipeWire in the VM.
Frédéric Danis (3):
test-runner: Add DBus session support
test-runner: Add audio card support
test-runner: Add udevd and trigger events
doc/test-runner.txt | 5 ++
tools/test-runner.c | 197 +++++++++++++++++++++++++++++++++++++++++---
2 files changed, 189 insertions(+), 13 deletions(-)
Since v1:
- Fix checkpatch errors
--
2.25.1
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
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
Hi Frédéric,
On Fri, Jun 10, 2022 at 12:30 AM Frédéric Danis
<[email protected]> 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
>
--
Luiz Augusto von Dentz