diff --git a/client/player.c b/client/player.c
index e4c2d45..b8d7b68 100644
--- a/client/player.c
+++ b/client/player.c
}
}
+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",
{ "unselect", "<transport> [transport1...]", cmd_unselect_transport,
"Unselect Transport",
transport_generator },
+ { "metadata", "<transport> [value...]", cmd_metadata_transport,
+ "Get/Set Transport Metadata",
+ transport_generator },
{} },
};