From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> This adds transport.metadata command which can be used to update the MediaTransport.Metadata property: > transport.metadata <transport> "0x03 0x02 0x02 0x00" [CHG] Transport <transport> Metadata: 03 02 02 00 > transport.show <transport> ... Metadata.#0: len 0x03 type 0x02 Metadata.Context: 0x0002 Metadata.Context Conversational (0x0002) --- client/player.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/client/player.c b/client/player.c index e4c2d451acca..b8d7b68753b6 100644 --- a/client/player.c +++ b/client/player.c @@ -5855,6 +5855,51 @@ static void cmd_volume_transport(int argc, char *argv[]) } } +static void set_metadata_cb(const DBusError *error, void *user_data) +{ + if (dbus_error_is_set(error)) { + bt_shell_printf("Failed to set Metadata: %s\n", error->name); + return bt_shell_noninteractive_quit(EXIT_FAILURE); + } + + bt_shell_printf("Changing Metadata succeeded\n"); + + return bt_shell_noninteractive_quit(EXIT_SUCCESS); +} + +static void cmd_metadata_transport(int argc, char *argv[]) +{ + GDBusProxy *proxy; + struct iovec iov; + + proxy = g_dbus_proxy_lookup(transports, NULL, argv[1], + BLUEZ_MEDIA_TRANSPORT_INTERFACE); + if (!proxy) { + bt_shell_printf("Transport %s not found\n", argv[1]); + return bt_shell_noninteractive_quit(EXIT_FAILURE); + } + + + if (argc == 2) { + print_property(proxy, "Metadata"); + return bt_shell_noninteractive_quit(EXIT_FAILURE); + } + + iov.iov_base = str2bytearray((char *) argv[2], &iov.iov_len); + if (!iov.iov_base) { + bt_shell_printf("Invalid argument: %s\n", argv[2]); + return bt_shell_noninteractive_quit(EXIT_FAILURE); + } + + if (!g_dbus_proxy_set_property_array(proxy, "Metadata", DBUS_TYPE_BYTE, + iov.iov_base, iov.iov_len, + set_metadata_cb, + NULL, NULL)) { + bt_shell_printf("Failed release transport\n"); + return bt_shell_noninteractive_quit(EXIT_FAILURE); + } +} + static const struct bt_shell_menu transport_menu = { .name = "transport", .desc = "Media Transport Submenu", @@ -5887,6 +5932,9 @@ static const struct bt_shell_menu transport_menu = { { "unselect", "<transport> [transport1...]", cmd_unselect_transport, "Unselect Transport", transport_generator }, + { "metadata", "<transport> [value...]", cmd_metadata_transport, + "Get/Set Transport Metadata", + transport_generator }, {} }, }; -- 2.50.1