From patchwork Wed Mar 15 22:16:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pauli Virtanen X-Patchwork-Id: 665034 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E5B82C6FD1D for ; Wed, 15 Mar 2023 22:17:00 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232468AbjCOWQ7 (ORCPT ); Wed, 15 Mar 2023 18:16:59 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57366 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232223AbjCOWQv (ORCPT ); Wed, 15 Mar 2023 18:16:51 -0400 Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 22BCA2CFD2 for ; Wed, 15 Mar 2023 15:16:42 -0700 (PDT) Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id E17CA240487 for ; Wed, 15 Mar 2023 23:16:40 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4PcPr830mBz6tnL; Wed, 15 Mar 2023 23:16:40 +0100 (CET) From: Pauli Virtanen To: linux-bluetooth@vger.kernel.org Cc: Pauli Virtanen Subject: [PATCH BlueZ v2 1/2] transport: add CIG/CIS/PHY properties, don't show unset QoS properties Date: Wed, 15 Mar 2023 22:16:38 +0000 Message-Id: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Add CIG, CIS, and PHY properties to BAP transport. The other QoS properties are there, and these may also be useful to clients, e.g. to manage CIG/CIS allocation as client. Hide transport QoS properties when they are not configured. --- Notes: v2: no change profiles/audio/transport.c | 67 ++++++++++++++++++++++++++++++++++---- 1 file changed, 61 insertions(+), 6 deletions(-) diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c index 457590746..53bf13175 100644 --- a/profiles/audio/transport.c +++ b/profiles/audio/transport.c @@ -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"); From patchwork Wed Mar 15 22:16:39 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pauli Virtanen X-Patchwork-Id: 663550 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B1450C6FD1D for ; Wed, 15 Mar 2023 22:16:49 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232116AbjCOWQs (ORCPT ); Wed, 15 Mar 2023 18:16:48 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:57318 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232383AbjCOWQs (ORCPT ); Wed, 15 Mar 2023 18:16:48 -0400 Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1A877166FF for ; Wed, 15 Mar 2023 15:16:42 -0700 (PDT) Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 2AFD724064F for ; Wed, 15 Mar 2023 23:16:41 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4PcPr858qlz6tp6; Wed, 15 Mar 2023 23:16:40 +0100 (CET) From: Pauli Virtanen To: linux-bluetooth@vger.kernel.org Cc: Pauli Virtanen Subject: [PATCH BlueZ v2 2/2] doc: describe new ISO Transport properties Date: Wed, 15 Mar 2023 22:16:39 +0000 Message-Id: <6a9a8ad4f432b2c5e1d9e290e8eba6ebfd7985f4.1678918574.git.pav@iki.fi> In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Document the currently undocumented transport QoS properties. --- Notes: v2: Fix errors in v1. Don't update Delay, implementation may change. doc/media-api.txt | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/doc/media-api.txt b/doc/media-api.txt index 281f72c1e..3746ccd55 100644 --- a/doc/media-api.txt +++ b/doc/media-api.txt @@ -804,3 +804,43 @@ Properties object Device [readonly] Linked transport objects which the transport is associated with. + + byte CIG [ISO only, optional, experimental] + + Indicates configured QoS CIG. + Only present when QoS is configured. + + byte CIS [ISO only, optional, experimental] + + Indicates configured QoS CIS. + Only present when QoS is configured. + + uint32 Interval [ISO only, optional, experimental] + + Indicates configured QoS interval. + Only present when QoS is configured. + + boolean Framing [ISO only, optional, experimental] + + Indicates configured QoS framing. + Only present when QoS is configured. + + byte PHY [ISO only, optional, experimental] + + Indicates configured QoS PHY. + Only present when QoS is configured. + + uint16 SDU [ISO only, optional, experimental] + + Indicates configured QoS SDU. + Only present when QoS is configured. + + byte Retransmissions [ISO only, optional, experimental] + + Indicates configured QoS retransmissions. + Only present when QoS is configured. + + uint16 Latency [ISO only, optional, experimental] + + Indicates configured QoS latency. + Only present when QoS is configured.