@@ -5,7 +5,7 @@
*
* Copyright (C) 2006-2007 Nokia Corporation
* Copyright (C) 2004-2009 Marcel Holtmann <marcel@holtmann.org>
- * Copyright 2023 NXP
+ * Copyright 2023-2024 NXP
*
*
*/
@@ -1208,13 +1208,46 @@ static gboolean qos_bcast_exists(const GDBusPropertyTable *property, void *data)
return bap->qos.bcast.io_qos.phy != 0x00;
}
+static void set_bcast_qos(const GDBusPropertyTable *property,
+ DBusMessageIter *dict, GDBusPendingPropertySet id,
+ void *data)
+{
+ DBusMessageIter array, entry, value;
+ struct media_transport *transport = data;
+ struct bap_transport *bap = transport->data;
+ struct bt_bap_qos *bap_qos = bt_bap_stream_get_qos(bap->stream);
+ char *key;
+
+ dbus_message_iter_recurse(dict, &array);
+
+ dbus_message_iter_recurse(&array, &entry);
+ dbus_message_iter_get_basic(&entry, &key);
+
+ dbus_message_iter_next(&entry);
+ dbus_message_iter_recurse(&entry, &value);
+
+ if (!strcasecmp(key, "BCode")) {
+ uint8_t *val;
+ int len;
+ DBusMessageIter array;
+
+ dbus_message_iter_recurse(&value, &array);
+ dbus_message_iter_get_fixed_array(&array, &val, &len);
+
+ bap_qos->bcast.bcode = util_iov_new(val, len);
+ }
+
+ bt_bap_stream_qos(bap->stream, bap_qos, NULL, NULL);
+ g_dbus_pending_property_success(id);
+}
+
static const GDBusPropertyTable transport_bap_bc_properties[] = {
{ "Device", "o", get_device },
{ "UUID", "s", get_uuid },
{ "Codec", "y", get_codec },
{ "Configuration", "ay", get_configuration },
{ "State", "s", get_state },
- { "QoS", "a{sv}", get_bcast_qos, NULL, qos_bcast_exists },
+ { "QoS", "a{sv}", get_bcast_qos, set_bcast_qos, qos_bcast_exists },
{ "Endpoint", "o", get_endpoint, NULL, endpoint_exists },
{ "Location", "u", get_location },
{ "Metadata", "ay", get_metadata },