Hi Pauli, On Sat, Mar 1, 2025 at 10:58 AM Pauli Virtanen <pav@xxxxxx> wrote: > > Add a simple way for the sound server to reconfigure a BAP unicast > endpoint, by calling org.bluez.MediaEndpoint.SelectProperties(). > > This shall destroy all streams of the endpoint, and restart the > SelectProperties() configuration flow from the beginning. > > Since it may be necessary to reconfigure multiple endpoints at once to > correctly make bidirectional CIS, add Defer argument to just mark eps > for configuration. > > In future, org.bluez.MediaEndpoint.SetConfiguration() could be changed > to handle unicast in the same way as broadcast: only create streams. > This allows sound server to have full control over stream configuration > itself, and not rely on bt_bap_select(). This one Im not too sure, perhaps it would be better to add something like org.bluez.MediaTransport.Reconfigure to avoid having to add role dependent documentation like bellow > --- > doc/org.bluez.MediaEndpoint.rst | 21 +++++++++++++++++++++ > 1 file changed, 21 insertions(+) > > diff --git a/doc/org.bluez.MediaEndpoint.rst b/doc/org.bluez.MediaEndpoint.rst > index b81106f0b..5c42b878c 100644 > --- a/doc/org.bluez.MediaEndpoint.rst > +++ b/doc/org.bluez.MediaEndpoint.rst > @@ -69,6 +69,8 @@ array{byte} SelectConfiguration(array{byte} capabilities) > dict SelectProperties(dict capabilities) > ```````````````````````````````````````` > > + **Server Role** > + > Select BAP unicast configuration from the supported capabilities: > > :object Endpoint: > @@ -104,6 +106,25 @@ dict SelectProperties(dict capabilities) > Note: There is no need to cache the selected properties since on > success the configuration is send back as parameter of SetConfiguration. > > + **Client Role** > + > + Reconfigure a BAP unicast endpoint. This closes all existing > + streams of the endpoint, and restarts the configuration > + selection flow which e.g. triggers calls to *SelectProperties* > + allowing the sound server to modify the configuration. > + > + The following arguments are taken in *capabilities*: > + > + :boolean Defer [optional]: > + > + If True, mark endpoint for reconfiguration, but > + postpone it until a non-deferred *SelectProperties()* > + operation is made on an endpoint of the same device. > + > + This is necessary to use when reconfiguring source and > + sink streams with the intention that they be combined > + into the same CIG, possibly forming bidirectional CIS. We could perhaps adds Defer option to MediaTransport.Reconfigure and then use MediaTransport.Select to clear it, that said for broadcast we did set a dedicated state when it is not active so perhaps we should do something similar here. > void ClearConfiguration(object transport) > ````````````````````````````````````````` > > -- > 2.48.1 > > -- Luiz Augusto von Dentz