From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> When adding a custom preset prompt the user to enter metadata for it e.g.: [bluetoothctl]> endpoint.presets 00002bcb-0000-1000-8000-00805f9b34fb 0x06 custom [Codec] Enter frequency (Khz): ** [Codec] Enter frame duration (ms): * [Codec] Enter channel allocation: * [Codec] Enter frame length: ** [Metadata] Enter Metadata (value/no): <len> <type> <value...> --- client/player.c | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/client/player.c b/client/player.c index 0314cd303e79..2702ea54247b 100644 --- a/client/player.c +++ b/client/player.c @@ -3900,6 +3900,24 @@ fail: return bt_shell_noninteractive_quit(EXIT_FAILURE); } +static void custom_metadata(const char *input, void *user_data) +{ + struct codec_preset *p = user_data; + struct iovec *meta = (void *)&p->meta; + + if (!strcasecmp(input, "n") || !strcasecmp(input, "no")) + goto done; + + meta->iov_base = str2bytearray((void *)input, &meta->iov_len); + if (!meta->iov_base) { + bt_shell_printf("Invalid metadata %s\n", input); + return bt_shell_noninteractive_quit(EXIT_FAILURE); + } + +done: + return bt_shell_noninteractive_quit(EXIT_SUCCESS); +} + static void custom_delay(const char *input, void *user_data) { struct codec_preset *p = user_data; @@ -3916,7 +3934,8 @@ static void custom_delay(const char *input, void *user_data) return bt_shell_noninteractive_quit(EXIT_FAILURE); } - return bt_shell_noninteractive_quit(EXIT_SUCCESS); + bt_shell_prompt_input("Metadata", "Enter Metadata (value/no):", + custom_metadata, user_data); } static void custom_latency(const char *input, void *user_data) -- 2.49.0