Another round of repeated words cleanup. This commit tries to keep the diff minimal and line wrapping was mostly left intact in the touched files, as having them consistent across the documentation is probably the topic of a future tree-wide cleanup (or not) Signed-off-by: Benjamin Cabé <benjamin@zephyrproject.org>
140 lines
5.0 KiB
ReStructuredText
140 lines
5.0 KiB
ReStructuredText
Bluetooth: Common Audio Profile Shell
|
|
#####################################
|
|
|
|
This document describes how to run the Common Audio Profile functionality.
|
|
|
|
CAP Acceptor
|
|
************
|
|
|
|
The Acceptor will typically be a resource-constrained device, such as a headset, earbud or hearing
|
|
aid. The Acceptor can initialize a Coordinated Set Identification Service instance, if it is in
|
|
a pair with one or more other CAP Acceptors.
|
|
|
|
Using the CAP Acceptor
|
|
======================
|
|
|
|
When the Bluetooth stack has been initialized (:code:`bt init`), the Acceptor can be registered by
|
|
calling :code:`cap_acceptor init`, which will register the CAS and CSIS services, as well as
|
|
register callbacks.
|
|
|
|
.. code-block:: console
|
|
|
|
|
|
cap_acceptor --help
|
|
cap_acceptor - Bluetooth CAP acceptor shell commands
|
|
Subcommands:
|
|
init :Initialize the service and register callbacks [size <int>]
|
|
[rank <int>] [not-lockable] [sirk <data>]
|
|
lock :Lock the set
|
|
release :Release the set [force]
|
|
print_sirk :Print the currently used SIRK
|
|
set_sirk_rsp :Set the response used in SIRK requests <accept, accept_enc,
|
|
reject, oob>
|
|
|
|
Besides initializing the CAS and the CSIS, there are also commands to lock and release the CSIS
|
|
instance, as well as printing and modifying access to the SIRK of the CSIS.
|
|
|
|
|
|
CAP Initiator
|
|
*************
|
|
|
|
The Initiator will typically be a resource-rich device, such as a phone or PC. The Initiator can
|
|
discover CAP Acceptors's CAS and optional CSIS services. The CSIS service can be read to provide
|
|
information about other CAP Acceptors in the same Coordinated Set. The Initiator can execute
|
|
stream control procedures on sets of devices, either ad-hoc or Coordinated, and thus provides an
|
|
easy way to setup multiple streams on multiple devices at once.
|
|
|
|
Using the CAP Initiator
|
|
=======================
|
|
|
|
When the Bluetooth stack has been initialized (:code:`bt init`), the Initiator can discover CAS and
|
|
the optionally included CSIS instance by calling (:code:`cap_initiator discover`).
|
|
|
|
.. code-block:: console
|
|
|
|
cap_initiator --help
|
|
cap_initiator - Bluetooth CAP initiator shell commands
|
|
Subcommands:
|
|
discover :Discover CAS
|
|
unicast-start :Unicast Start [csip] [sinks <cnt> (default 1)] [sources <cnt>
|
|
(default 1)] [conns (<cnt> | all) (default 1)]
|
|
unicast-list :Unicast list streams
|
|
unicast-update :Unicast Update <all | stream [stream [stream...]]>
|
|
unicast-stop :Unicast stop all streams
|
|
|
|
Before being able to perform any stream operation, the device must also perform the
|
|
:code:`bap discover` operation to discover the ASEs and PAC records. The :code:`bap init`
|
|
command also needs to be called.
|
|
|
|
When connected
|
|
--------------
|
|
|
|
Discovering CAS and CSIS on a device:
|
|
|
|
.. code-block:: console
|
|
|
|
uart:~$ cap_initiator discover
|
|
discovery completed with CSIS
|
|
|
|
|
|
Discovering ASEs and PAC records on a device:
|
|
|
|
.. code-block:: console
|
|
|
|
uart:~$ bap discover
|
|
conn 0x81cc260: #0: codec 0x81d5b28 dir 0x01
|
|
codec 0x06 cid 0x0000 vid 0x0000 count 5
|
|
data #0: type 0x01 len 2
|
|
00000000: f5 |. |
|
|
data #1: type 0x02 len 1
|
|
data #2: type 0x03 len 1
|
|
data #3: type 0x04 len 4
|
|
00000000: 1e 00 f0 |... |
|
|
data #4: type 0x05 len 1
|
|
meta #0: type 0x01 len 2
|
|
00000000: 06 |. |
|
|
dir 1 loc 1
|
|
snk ctx 6 src ctx 6
|
|
Conn: 0x81cc260, Sink #0: ep 0x81e4248
|
|
Conn: 0x81cc260, Sink #1: ep 0x81e46a8
|
|
conn 0x81cc260: #0: codec 0x81d5f00 dir 0x02
|
|
codec 0x06 cid 0x0000 vid 0x0000 count 5
|
|
data #0: type 0x01 len 2
|
|
00000000: f5 |. |
|
|
data #1: type 0x02 len 1
|
|
data #2: type 0x03 len 1
|
|
data #3: type 0x04 len 4
|
|
00000000: 1e 00 f0 |... |
|
|
data #4: type 0x05 len 1
|
|
meta #0: type 0x01 len 2
|
|
00000000: 06 |. |
|
|
dir 2 loc 1
|
|
snk ctx 6 src ctx 6
|
|
Conn: 0x81cc260, Source #0: ep 0x81e5c88
|
|
Conn: 0x81cc260, Source #1: ep 0x81e60e8
|
|
Discover complete: err 0
|
|
|
|
Both of the above commands should be done for each device that you want to use in the set.
|
|
To use multiple devices, simply connect to more and then use :code:`bt select` the device to execute
|
|
the commands on.
|
|
|
|
Once all devices have been connected and the respective discovery commands have been called, the
|
|
:code:`cap_initiator unicast-start` command can be used to put one or more streams into the
|
|
streaming state.
|
|
|
|
.. code-block:: console
|
|
|
|
uart:~$ cap_initiator unicast-start sinks 1 sources 0 conns all
|
|
Setting up 1 sinks and 0 sources on each (2) conn
|
|
Starting 1 streams
|
|
Unicast start completed
|
|
|
|
To stop all the streams that has been started, the :code:`cap_initiator unicast-stop` command can be
|
|
used.
|
|
|
|
|
|
.. code-block:: console
|
|
|
|
uart:~$ cap_initiator unicast-stop
|
|
Unicast stopped for group 0x81e41c0 completed
|