@@ -811,6 +811,38 @@ static const GDBusPropertyTable a2dp_properties[] = {
{ }
};
+static gboolean qos_exists(const GDBusPropertyTable *property, void *data)
+{
+ struct media_transport *transport = data;
+ struct bap_transport *bap = transport->data;
+
+ return bap->qos.phy != 0x00;
+}
+
+static gboolean get_cig(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *data)
+{
+ struct media_transport *transport = data;
+ struct bap_transport *bap = transport->data;
+
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_BYTE,
+ &bap->qos.cig_id);
+
+ return TRUE;
+}
+
+static gboolean get_cis(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *data)
+{
+ struct media_transport *transport = data;
+ struct bap_transport *bap = transport->data;
+
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_BYTE,
+ &bap->qos.cis_id);
+
+ return TRUE;
+}
+
static gboolean get_interval(const GDBusPropertyTable *property,
DBusMessageIter *iter, void *data)
{
@@ -835,6 +867,17 @@ static gboolean get_framing(const GDBusPropertyTable *property,
return TRUE;
}
+static gboolean get_phy(const GDBusPropertyTable *property,
+ DBusMessageIter *iter, void *data)
+{
+ struct media_transport *transport = data;
+ struct bap_transport *bap = transport->data;
+
+ dbus_message_iter_append_basic(iter, DBUS_TYPE_BYTE, &bap->qos.phy);
+
+ return TRUE;
+}
+
static gboolean get_sdu(const GDBusPropertyTable *property,
DBusMessageIter *iter, void *data)
{
@@ -962,12 +1005,15 @@ static const GDBusPropertyTable bap_properties[] = {
{ "Codec", "y", get_codec },
{ "Configuration", "ay", get_configuration },
{ "State", "s", get_state },
- { "Interval", "u", get_interval },
- { "Framing", "b", get_framing },
- { "SDU", "q", get_sdu },
- { "Retransmissions", "y", get_retransmissions },
- { "Latency", "q", get_latency },
- { "Delay", "u", get_delay },
+ { "CIG", "y", get_cig, NULL, qos_exists },
+ { "CIS", "y", get_cis, NULL, qos_exists },
+ { "Interval", "u", get_interval, NULL, qos_exists },
+ { "Framing", "b", get_framing, NULL, qos_exists },
+ { "PHY", "y", get_phy, NULL, qos_exists },
+ { "SDU", "q", get_sdu, NULL, qos_exists },
+ { "Retransmissions", "y", get_retransmissions, NULL, qos_exists },
+ { "Latency", "q", get_latency, NULL, qos_exists },
+ { "Delay", "u", get_delay, NULL, qos_exists },
{ "Endpoint", "o", get_endpoint, NULL, endpoint_exists },
{ "Location", "u", get_location },
{ "Metadata", "ay", get_metadata },
@@ -1191,12 +1237,21 @@ static void bap_update_qos(const struct media_transport *transport)
bap->qos = *qos;
+ g_dbus_emit_property_changed(btd_get_dbus_connection(),
+ transport->path, MEDIA_TRANSPORT_INTERFACE,
+ "CIG");
+ g_dbus_emit_property_changed(btd_get_dbus_connection(),
+ transport->path, MEDIA_TRANSPORT_INTERFACE,
+ "CIS");
g_dbus_emit_property_changed(btd_get_dbus_connection(),
transport->path, MEDIA_TRANSPORT_INTERFACE,
"Interval");
g_dbus_emit_property_changed(btd_get_dbus_connection(),
transport->path, MEDIA_TRANSPORT_INTERFACE,
"Framing");
+ g_dbus_emit_property_changed(btd_get_dbus_connection(),
+ transport->path, MEDIA_TRANSPORT_INTERFACE,
+ "PHY");
g_dbus_emit_property_changed(btd_get_dbus_connection(),
transport->path, MEDIA_TRANSPORT_INTERFACE,
"SDU");