From patchwork Wed Mar 15 17:53:51 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pauli Virtanen X-Patchwork-Id: 663551 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 8F6F8C74A5B for ; Wed, 15 Mar 2023 17:54:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232588AbjCORyI (ORCPT ); Wed, 15 Mar 2023 13:54:08 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44546 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232341AbjCORyC (ORCPT ); Wed, 15 Mar 2023 13:54:02 -0400 Received: from mout02.posteo.de (mout02.posteo.de [185.67.36.142]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 2D55420040 for ; Wed, 15 Mar 2023 10:53:57 -0700 (PDT) Received: from submission (posteo.de [185.67.36.169]) by mout02.posteo.de (Postfix) with ESMTPS id 532A2240710 for ; Wed, 15 Mar 2023 18:53:55 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4PcJ0y4HY3z6tnF; Wed, 15 Mar 2023 18:53:54 +0100 (CET) From: Pauli Virtanen To: linux-bluetooth@vger.kernel.org Cc: Pauli Virtanen Subject: [PATCH BlueZ 1/2] transport: add CIG/CIS/PHY properties, don't show unset QoS properties Date: Wed, 15 Mar 2023 17:53:51 +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. --- 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 17:53:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pauli Virtanen X-Patchwork-Id: 665035 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 91783C61DA4 for ; Wed, 15 Mar 2023 17:54:08 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232602AbjCORyH (ORCPT ); Wed, 15 Mar 2023 13:54:07 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44548 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232056AbjCORyC (ORCPT ); Wed, 15 Mar 2023 13:54:02 -0400 Received: from mout01.posteo.de (mout01.posteo.de [185.67.36.141]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4930A23678 for ; Wed, 15 Mar 2023 10:53:57 -0700 (PDT) Received: from submission (posteo.de [185.67.36.169]) by mout01.posteo.de (Postfix) with ESMTPS id 89A9524003C for ; Wed, 15 Mar 2023 18:53:55 +0100 (CET) Received: from customer (localhost [127.0.0.1]) by submission (posteo.de) with ESMTPSA id 4PcJ0z0Bnpz6tql; Wed, 15 Mar 2023 18:53:54 +0100 (CET) From: Pauli Virtanen To: linux-bluetooth@vger.kernel.org Cc: Pauli Virtanen Subject: [PATCH BlueZ 2/2] doc: update ISO Transport properties to match implementation Date: Wed, 15 Mar 2023 17:53:52 +0000 Message-Id: In-Reply-To: References: MIME-Version: 1.0 Precedence: bulk List-ID: X-Mailing-List: linux-bluetooth@vger.kernel.org Document the transport QoS properties. Fix documentation of Delay, it's microseconds for ISO. --- doc/media-api.txt | 44 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 42 insertions(+), 2 deletions(-) diff --git a/doc/media-api.txt b/doc/media-api.txt index 281f72c1e..eac7f081c 100644 --- a/doc/media-api.txt +++ b/doc/media-api.txt @@ -773,12 +773,17 @@ Properties object Device [readonly] "pending": streaming but not acquired "active": streaming and acquired - uint16 Delay [readwrite] + uint16 Delay [A2DP only, readwrite, optional] - Optional. Transport delay in 1/10 of millisecond, this + For A2DP: transport delay in 1/10 of millisecond. This property is only writeable when the transport was acquired by the sender. + uint32 Delay [ISO only, optional] + + For ISO, presentation delay in microseconds. + Note the value type is different for ISO and A2DP. + uint16 Volume [readwrite] Optional. Indicates volume level of the transport, @@ -804,3 +809,38 @@ 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. + + byte Interval [ISO only, optional, experimental] + + Indicates configured QoS interval. + Only present when QoS is configured. + + byte 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. + + uint32 Retransmissions [ISO only, optional, experimental] + + Indicates configured QoS retransmissions. + Only present when QoS is configured. + + uint32 Latency [ISO only, optional, experimental] + + Indicates configured QoS latency. + Only present when QoS is configured.