LE Audio CAP Commander - BAP Broadcast Assistant design #822
Replies: 2 comments 5 replies
-
@iulia-tanasescu we should probably think about the use cases first, for instance is that really useful the use a BASS Client in BlueZ, or that targeting only headless (no UI) devices which cannot start scan procedure by itself? BASS server in the other hand is probably what I would imagine to be more important for BlueZ to support and I would imagine we would like bluetoothctl to help the client with the interface of selecting broadcasters, actually to avoid having rogue BASS client just using the interface to make the radio busy we probably first need to implement some authorization mechanism for BASS operations, perhaps something like org.bluez.MediaAgent which application like bluetoothctl could implement to start scanning and then do the enumeration of the MediaTransport objects it had found. |
Beta Was this translation helpful? Give feedback.
-
Some updated ideas: |
Beta Was this translation helpful? Give feedback.
-
Topics about designing the BAP Broadcast Assistant role (CAP Commander role) in BlueZ:
General ideas:
Design/implementation ideas on how to handle connections with Scan Delegators:
Each time a new session is added with a Scan Delegator (BASS Server), the BASS plugin should register a DBus interface containing properties about the peer.
After connection, the Broadcast Assistant (BASS Client) performs service discovery with the Scan Delegator (BASS Server) and it populates its BASS rdb with Broadcast Sources discovered on the peer (information contained in Broadcast Receive State characteristics).
After service discovery has completed, having the DBus interface registered for the connected Scan Delegator, the Broadcast Assistant should iterate through its rdb and emit property changed with information about the Broadcast Sources discovered on the peer.
For each discovered source, the Source ID (Broadcast Source identifier on the BASS Server), the Broadcast ID (global identifier advertised by the Broadcast Source) and the encryption field of the Broadcast Receive State characteristic should be notified via property changed on the Scan Delegator DBus interface.
Each time a Broadcast Receive State notification is received from a Scan Delegator (meaning that parameters of a Broadcast Source stored on the BASS Server have changed, or that a Broadcast Source was added or deleted), the Broadcast Assistant updates its BASS rdb and should emit property changed on the Scan Delegator DBus interface.
A Delegator interface needs to implement methods for the BASS Remote Scan Started and Remote Scan Stopped control point operations.
A Delegator interface needs to implement methods for BASS control point operations related to updating Broadcast Sources already stored on the Scan Delegator: Modify Source and Set Broadcast_Code, Remove Source.
A new menu can be added in bluetoothctl, to detect Scan Delegator proxies, to print the properties as they are updated and to send commands.
Design/implementation ideas on how to handle available Broadcast Sources:
Beta Was this translation helpful? Give feedback.
All reactions