.. _bluetooth_shell_audio:

Bluetooth: Basic Audio Profile
##############################

This document describes how to run basic audio profile functionality which
includes:

  - Capabilities and Endpoint discovery
  - Audio Stream Endpoint procedures

Commands
********

.. code-block:: console

   audio --help
   Subcommands:
      init
      select_broadcast     :<stream>
      create_broadcast     :[codec] [preset]
      start_broadcast      :
      stop_broadcast       :
      delete_broadcast     :
      broadcast_scan       :<on, off>
      accept_broadcast     :0x<broadcast_id>
      sync_broadcast       :0x<bis_bitfield>
      stop_broadcast_sink  :Stops broadcast sink
      term_broadcast_sink  :
      discover             :[type: sink, source]
      preset               :[preset]
      config               :<direction: sink, source> <index> [codec] [preset]
      qos                  :[preset] [interval] [framing] [latency] [pd] [sdu] [phy]
                            [rtn]
      enable
      metadata             :[context]
      start
      disable
      stop
      release
      list
      connect              :<direction: sink, source> <index>  [codec] [preset]
      select_unicast       :<stream>
      send                 :Send to Audio Stream [data]

.. csv-table:: State Machine Transitions
   :header: "Command", "Depends", "Allowed States", "Next States"
   :widths: auto

   "init","none","any","none"
   "discover","init","any","any"
   "config","discover","idle/codec-configured/qos-configured","codec-configured"
   "qos","config","codec-configured/qos-configured","qos-configured"
   "enable","qos","qos-configured","enabling"
   "[start]","enable","enabling","streaming"
   "disable","enable", "enabling/streaming","disabling"
   "[stop]","disable","disabling","qos-configure/idle"
   "release","config","any","releasing/codec-configure/idle"
   "list","none","any","none"
   "select_unicast","none","any","none"
   "connect","discover","idle/codec-configured/qos-configured","codec-configured"
   "send","enable","streaming","none"

Example Central
***************

Connect and establish a stream:

.. code-block:: console

   uart:~$ bt init
   uart:~$ audio init
   uart:~$ bt connect <address>
   uart:~$ gatt exchange-mtu
   uart:~$ audio discover sink
   uart:~$ audio config sink 0
   uart:~$ audio qos
   uart:~$ audio enable

Or using connect command:

.. code-block:: console

   uart:~$ bt init
   uart:~$ audio init
   uart:~$ bt connect <address>
   uart:~$ gatt exchange-mtu
   uart:~$ audio discover sink
   uart:~$ audio connect sink 0

Disconnect and release:

.. code-block:: console

   uart:~$ audio disable
   uart:~$ audio release

Example Peripheral
******************

Listen:

.. code-block:: console

   uart:~$ bt init
   uart:~$ audio init
   uart:~$ bt advertise on

Server initiated disable and release:

.. code-block:: console

   uart:~$ audio disable
   uart:~$ audio release

Example Broadcast Source
************************

Create and establish a broadcast source stream:

.. code-block:: console

   uart:~$ audio init
   uart:~$ audio create_broadcast
   uart:~$ audio start_broadcast

Stop and release a broadcast source stream:

.. code-block:: console

   uart:~$ audio stop_broadcast
   uart:~$ audio delete_broadcast


Example Broadcast Sink
************************

Scan for and establish a broadcast sink stream:

.. code-block:: console

   uart:~$ audio init
   uart:~$ audio broadcast_scan on
   Found broadcaster with ID 0xB91CD4
   uart:~$ audio accept_broadcast 0xB91CD4
   PA syncing to broadcaster
   Broadcast scan was terminated: 0
   PA synced to broadcaster with ID 0xB91CD4 as sink 0x2000d09c
   Sink 0x2000d09c is set as default
   Sink 0x2000d09c is ready to sync without encryption
   Received BASE from sink 0x2000d09c:
   Subgroup[0]:
   codec 0x06 cid 0x0000 vid 0x0000 count 4
   data #0: type 0x01 len 1
   data #1: type 0x02 len 1
   data #2: type 0x03 len 4
   00000000: 00 00 00                                         |...              |
   data #3: type 0x04 len 2
   00000000: 28                                               |(                |
   meta #0: type 0x02 len 2
   BIS[0] index 0x01
   [0]: 0x01
   Possible indexes: 0x01
   audio sync_broadcast 0x01

Stop and release a broadcast sink stream:

.. code-block:: console

   uart:~$ audio stop_broadcast_sink
   uart:~$ audio term_broadcast_sink

Init
****

The :code:`init` command register local PAC records which are necessary to be
able to configure stream and properly manage capabilities in use.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "none","any","none"

.. code-block:: console

   uart:~$ audio init

Discover PAC(s) and ASE(s)
**************************

Once connected the :code:`discover` command discover PAC records and ASE
characteristics representing remote endpoints.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "init","any","any"

.. note::

   Use command :code:`gatt exchange-mtu` to make sure the MTU is configured
   properly.

.. code-block:: console

   uart:~$ gatt exchange-mtu
   Exchange pending
   Exchange successful
   uart:~$ audio discover [type: sink, source]
   uart:~$ audio discover sink
   cap 0x8175940 type 0x01
   codec 0x06 cid 0x0000 vid 0x0000 count 4
   data #0: type 0x01 len 1
   00000000: 3f                                             |?                |
   data #1: type 0x02 len 1
   00000000: 03                                             |.                |
   data #2: type 0x03 len 1
   00000000: 03                                             |.                |
   data #3: type 0x04 len 4
   00000000: 1e 00 f0 00                                    |....             |
   meta #0: type 0x01 len 2
   00000000: 06 00                                          |..               |
   meta #1: type 0x02 len 2
   00000000: ff 03                                          |..               |
   ep 0x81754e0
   ep 0x81755d4
   Discover complete: err 0

Select preset
*************

The :code:`preset` command can be used to either print the default preset
configuration or set a different one, it is worth noting that it doesn't change
any stream previously configured.

.. code-block:: console

   uart:~$ audio preset [preset]
   uart:~$ audio preset
   16_2_1
   codec 0x06 cid 0x0000 vid 0x0000 count 3
   data #0: type 0x01 len 1
   00000000: 02                                             |.                |
   data #1: type 0x02 len 1
   00000000: 01                                             |.                |
   data #2: type 0x04 len 2
   00000000: 28 00                                          |(.               |
   meta #0: type 0x02 len 2
   00000000: 02 00                                          |..               |
   QoS: dir 0x02 interval 10000 framing 0x00 phy 0x02 sdu 40 rtn 2 latency 10 pd 40000

Configure Codec
***************

The :code:`config` command attempts to configure a stream for the given
direction using a preset codec configuration which can either be passed directly
or in case it is omitted the default preset is used.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "discover","idle/codec-configured/qos-configured","codec-configured"

.. code-block:: console

   uart:~$ audio config <direction: sink, source> <index> [codec] [preset]
   uart:~$ audio config sink 0
   ASE Codec Config: conn 0x8173800 ep 0x81754e0 cap 0x816a360
   codec 0x06 cid 0x0000 vid 0x0000 count 3
   data #0: type 0x01 len 1
   00000000: 02                                             |.                |
   data #1: type 0x02 len 1
   00000000: 01                                             |.                |
   data #2: type 0x04 len 2
   00000000: 28 00                                          |(.               |
   meta #0: type 0x02 len 2
   00000000: 02 00                                          |..               |
   ASE Codec Config stream 0x8179e60
   Default ase: 1
   ASE config: preset 16_2_1

Configure QoS
*************

The :code:`qos` command attempts to configure the stream QoS using the preset
configuration, each individual QoS parameter can be set with use optional
parameters.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "config","qos-configured/codec-configured","qos-configured"

.. code-block:: console

   uart:~$ audio qos [preset] [interval] [framing] [latency] [pd] [sdu] [phy] [rtn]
   uart:~$ audio qos
   ASE config: preset 16_2_1

Enable
******

The :code:`enable` command attempts to enable the stream previously configured,
if the remote peer accepts then the ISO connection procedure is also initiated.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "qos","qos-configured","enabling"

.. code-block:: console

   uart:~$ audio enable

Start [sink only]
*****************

The :code:`start` command is only necessary when acting as a sink as it
indicates to the source the stack is ready to start receiving data.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "enable","enabling","streaming"

.. code-block:: console

   uart:~$ audio start

Disable
*******

The :code:`disable` command attempts to disable the stream previously enabled,
if the remote peer accepts then the ISO disconnection procedure is also
initiated.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "enable","enabling/streaming","disabling"

.. code-block:: console

   uart:~$ audio disable

Stop [sink only]
****************

The :code:`stop` command is only necessary when acting as a sink as it indicates
to the source the stack is ready to stop receiving data.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "disable","disabling","qos-configure/idle"

.. code-block:: console

   uart:~$ audio stop

Release
*******

The :code:`release` command releases the current stream and its configuration.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "config","any","releasing/codec-configure/idle"

.. code-block:: console

   uart:~$ audio release

List
****

The :code:`list` command list the available streams.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "none","any","none"

.. code-block:: console

   uart:~$ audio list
   *0: ase 0x01 dir 0x01 state 0x01

Select Unicast
**************

The :code:`select_unicast` command set a unicast stream as default.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "none","any","none"

.. code-block:: console

   uart:~$ audio select <ase>
   uart:~$ audio select 0x01
   Default stream: 1

To select a broadcast stream:

.. code-block:: console

   uart:~$ audio select 0x01 broadcast
   Default stream: 1 (broadcast)

Connect
*******

The :code:`connect` command combines config, qos and enable commands in one so
it can be used to quickly configure and enable a stream.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "discover","idle/codec-configured/qos-configured","streaming"

.. code-block:: console

   uart:~$ audio connect <direction: sink, source> <index> [codec] [preset]
   uart:~$ audio connect sink 0
   ASE Codec Config: conn 0x17ca40 ep 0x17f860 cap 0x19f6a0
   codec 0x06 cid 0x0000 vid 0x0000 count 3
   data #0: type 0x01 len 1
   00000000: 02                                               |.                |
   data #1: type 0x02 len 1
   00000000: 01                                               |.                |
   data #2: type 0x04 len 2
   00000000: 28 00                                            |(.               |
   meta #0: type 0x02 len 2
   00000000: 02 00                                            |..               |
   ASE Codec Config stream 0x1851c0
   Default ase: 1
   ASE config: preset 16_2_1
   ASE Codec Reconfig: stream 0x1851c0 cap 0x19f6a0
   codec 0x06 cid 0x0000 vid 0x0000 count 3
   data #0: type 0x01 len 1
   00000000: 02                                               |.                |
   data #1: type 0x02 len 1
   00000000: 01                                               |.                |
   data #2: type 0x04 len 2
   00000000: 28 00                                            |(.               |
   meta #0: type 0x02 len 2
   00000000: 02 00                                            |..               |
   QoS: stream 0x1851c0
   QoS: dir 0x02 interval 10000 framing 0x00 phy 0x02 sdu 40 rtn 2 latency 10 pd 40000
   Start: stream 0x1851c0

Send
****

The :code:`send` command sends data over Audio Stream.

.. csv-table:: State Machine Transitions
   :header: "Depends", "Allowed States", "Next States"
   :widths: auto

   "enable","streaming","none"

.. code-block:: console

   uart:~$ audio send [count]
   uart:~$ audio send
   Audio sending...
