zephyr/samples/bluetooth/iso_central
Emil Gydesen 065dca7e92 Bluetooth: ISO: Make setting ISO data explicit
The stack will no longer implicitly set the data path
for ISO channel, and the responsibility for doing that is
now for the upper layers/applications.

This provides additional flexibility for the higher layers
as they can better control the values and timing of the data
path, as well as support removing and even reconfiguring the
data path at will.
This also removes some complexity from the stack.

This commit also fixed a inconsistency in the disconnected
handler. CIS for centrals as well as BIS were still valid
bt_iso_chan channels in the disconnected callback,
but CIS for peripherals were completely cleaned up at this
point. This issue is fixed by moving the disconnected callback
handling to before the code to cleanup the channel for
peripherals.

Since there is a difference in how you remove data paths
depending on the GAP role (central/peripheral), the
iso_info struct type has been expanded to be more
concise of which type of CIS it is.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
2025-03-19 10:56:57 +01:00
..
src Bluetooth: ISO: Make setting ISO data explicit 2025-03-19 10:56:57 +01:00
CMakeLists.txt
overlay-bt_ll_sw_split.conf Bluetooth: Controller: Fix ISO Tx PDU buffer counts for fragmentation 2025-02-24 20:18:37 +00:00
prj.conf Bluetooth: Audio: Update SCAN_DELEGATOR dependency to GATT_DYNAMIC_DB 2024-10-23 16:53:37 +02:00
README.rst doc: samples: Adopt code-sample-category across tree 2024-09-23 12:00:00 +02:00
sample.yaml samples: sample.yaml: replace deprecated OVERLAY_CONFIG w\ EXTRA_CONF_FILE 2024-10-24 14:06:54 +02:00

.. zephyr:code-sample:: ble_central_iso
   :name: ISO (Central)
   :relevant-api: bt_iso bluetooth

   Transfer isochronous data to a peer device using an isochronous channel as a central.

Overview
********

This sample demonstrates how to use an isochronous channel as a central.
The sample scans for a peripheral, establishes a connection, and sets up a connected isochronous channel to it.
Once the isochronous channel is connected, isochronous data is transferred to the peer device every 10 milliseconds.
It is recommended to run this sample together with the :zephyr:code-sample:`ble_peripheral_iso` sample.

To run the sample with an encrypted isochronous channel, enable :kconfig:option:`CONFIG_BT_SMP`.

Requirements
************

* BlueZ running on the host, or
* A board with Bluetooth Low Energy 5.2 support
* A Bluetooth Controller and board that supports setting
  :kconfig:option:`CONFIG_BT_CTLR_CENTRAL_ISO`.

Building and Running
********************
This sample can be found under :zephyr_file:`samples/bluetooth/iso_central` in
the Zephyr tree.

1. Start the application.
   In the terminal window, check that it is scanning for other devices.

      Bluetooth initialized
      Scanning successfully started
      Device found: D3:3A:5D:F5:73:33 (random) (RSSI -78)
      Device found: 70:7B:F4:2B:76:AD (random) (RSSI -68)
      Device found: 65:CF:20:0D:CB:9D (random) (RSSI -82)

2. Observe that the device connects.

      Connected: 65:CF:20:0D:CB:9D (random)

3. Observe that the ISO channel is connected

      ISO Channel 0x200048f8 connected

See :zephyr:code-sample-category:`bluetooth` samples for more details.