Zephyr Project API 4.0.0
A Scalable Open Source RTOS
|
Bluetooth ISO handling. More...
#include <stdint.h>
#include <zephyr/bluetooth/addr.h>
#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/bluetooth/buf.h>
#include <zephyr/bluetooth/conn.h>
#include <zephyr/bluetooth/hci.h>
#include <zephyr/net_buf.h>
#include <zephyr/sys/atomic.h>
#include <zephyr/sys/slist.h>
#include <zephyr/sys/util_macro.h>
Go to the source code of this file.
Data Structures | |
struct | bt_iso_chan |
ISO Channel structure. More... | |
struct | bt_iso_chan_io_qos |
ISO Channel IO QoS structure. More... | |
struct | bt_iso_chan_qos |
ISO Channel QoS structure. More... | |
struct | bt_iso_chan_path |
ISO Channel Data Path structure. More... | |
struct | bt_iso_recv_info |
ISO Meta Data structure for received ISO packets. More... | |
struct | bt_iso_tx_info |
ISO Meta Data structure for transmitted ISO packets. More... | |
struct | bt_iso_cig_param |
Connected Isochronous Group (CIG) parameters. More... | |
struct | bt_iso_connect_param |
ISO connection parameters structure. More... | |
struct | bt_iso_big_create_param |
Broadcast Isochronous Group (BIG) creation parameters. More... | |
struct | bt_iso_big_sync_param |
Broadcast Isochronous Group (BIG) Sync Parameters. More... | |
struct | bt_iso_biginfo |
Broadcast Isochronous Group (BIG) information. More... | |
struct | bt_iso_chan_ops |
ISO Channel operations structure. More... | |
struct | bt_iso_accept_info |
ISO Accept Info Structure. More... | |
struct | bt_iso_server |
ISO Server structure. More... | |
struct | bt_iso_unicast_tx_info |
ISO Unicast TX Info Structure. More... | |
struct | bt_iso_unicast_info |
ISO Unicast Info Structure. More... | |
struct | bt_iso_broadcaster_info |
ISO Broadcaster Info Structure. More... | |
struct | bt_iso_sync_receiver_info |
ISO Synchronized Receiver Info Structure. More... | |
struct | bt_iso_info |
ISO channel Info Structure. More... | |
Macros | |
#define | BT_ISO_CHAN_SEND_RESERVE BT_BUF_ISO_SIZE(0) |
Headroom needed for outgoing ISO SDUs. | |
#define | BT_ISO_SDU_BUF_SIZE(mtu) BT_BUF_ISO_SIZE(mtu) |
Helper to calculate needed buffer size for ISO SDUs. | |
#define | BT_ISO_BIS_INDEX_BIT(x) (BIT((x) - 1)) |
Convert BIS index to bit. | |
#define | BT_ISO_DATA_PATH_HCI 0x00 |
Value to set the ISO data path over HCi. | |
#define | BT_ISO_SDU_INTERVAL_MIN 0x0000FFU |
Minimum interval value in microseconds. | |
#define | BT_ISO_SDU_INTERVAL_MAX 0x0FFFFFU |
Maximum interval value in microseconds. | |
#define | BT_ISO_ISO_INTERVAL_MIN 0x0004U |
Minimum ISO interval (N * 1.25 ms) | |
#define | BT_ISO_ISO_INTERVAL_MAX 0x0C80U |
Maximum ISO interval (N * 1.25 ms) | |
#define | BT_ISO_LATENCY_MIN 0x0005 |
Minimum latency value in milliseconds. | |
#define | BT_ISO_LATENCY_MAX 0x0FA0 |
Maximum latency value in milliseconds. | |
#define | BT_ISO_PACKING_SEQUENTIAL 0x00 |
Packets will be sent sequentially between the channels in the group. | |
#define | BT_ISO_PACKING_INTERLEAVED 0x01 |
Packets will be sent interleaved between the channels in the group. | |
#define | BT_ISO_FRAMING_UNFRAMED 0x00 |
Packets may be framed or unframed. | |
#define | BT_ISO_FRAMING_FRAMED 0x01 |
Packets are always framed. | |
#define | BT_ISO_MAX_GROUP_ISO_COUNT 0x1F |
Maximum number of isochronous channels in a single group. | |
#define | BT_ISO_MIN_SDU 0x0001 |
Minimum SDU size. | |
#define | BT_ISO_MAX_SDU 0x0FFF |
Maximum SDU size. | |
#define | BT_ISO_CONNECTED_PDU_MIN 0x0000U |
Minimum PDU size. | |
#define | BT_ISO_BROADCAST_PDU_MIN 0x0001U |
Minimum PDU size. | |
#define | BT_ISO_PDU_MAX 0x00FBU |
Maximum PDU size. | |
#define | BT_ISO_BN_MIN 0x01U |
Minimum burst number. | |
#define | BT_ISO_BN_MAX 0x0FU |
Maximum burst number. | |
#define | BT_ISO_FT_MIN 0x01U |
Minimum flush timeout. | |
#define | BT_ISO_FT_MAX 0xFFU |
Maximum flush timeout. | |
#define | BT_ISO_NSE_MIN 0x01U |
Minimum number of subevents. | |
#define | BT_ISO_NSE_MAX 0x1FU |
Maximum number of subevents. | |
#define | BT_ISO_SYNC_TIMEOUT_MIN 0x000A |
Minimum BIG sync timeout value (N * 10 ms) | |
#define | BT_ISO_SYNC_TIMEOUT_MAX 0x4000 |
Maximum BIG sync timeout value (N * 10 ms) | |
#define | BT_ISO_SYNC_MSE_ANY 0x00 |
Controller controlled maximum subevent count value. | |
#define | BT_ISO_SYNC_MSE_MIN 0x01 |
Minimum BIG sync maximum subevent count value. | |
#define | BT_ISO_SYNC_MSE_MAX 0x1F |
Maximum BIG sync maximum subevent count value. | |
#define | BT_ISO_CONNECTED_RTN_MAX 0xFF |
Maximum connected ISO retransmission value. | |
#define | BT_ISO_BROADCAST_RTN_MAX 0x1E |
Maximum broadcast ISO retransmission value. | |
#define | BT_ISO_BROADCAST_CODE_SIZE 16 |
Broadcast code size. | |
#define | BT_ISO_BIS_INDEX_MIN 0x01 |
Lowest BIS index. | |
#define | BT_ISO_BIS_INDEX_MAX 0x1F |
Highest BIS index. | |
#define | BT_ISO_IRC_MIN 0x01U |
Minimum Immediate Repetition Count. | |
#define | BT_ISO_IRC_MAX 0x0FU |
Maximum Immediate Repetition Count. | |
#define | BT_ISO_PTO_MIN 0x00U |
Minimum pre-transmission offset. | |
#define | BT_ISO_PTO_MAX 0x0FU |
Maximum pre-transmission offset. | |
#define | BT_ISO_VALID_BIS_BITFIELD(_bis_bitfield) ((_bis_bitfield) != 0U && (_bis_bitfield) <= BIT_MASK(BT_ISO_BIS_INDEX_MAX)) |
Check if ISO BIS bitfield is valid (BT_ISO_BIS_INDEX_BIT(1)|..|BT_ISO_BIS_INDEX_BIT(31)) | |
Enumerations | |
enum | bt_iso_state { BT_ISO_STATE_DISCONNECTED , BT_ISO_STATE_ENCRYPT_PENDING , BT_ISO_STATE_CONNECTING , BT_ISO_STATE_CONNECTED , BT_ISO_STATE_DISCONNECTING } |
Life-span states of ISO channel. More... | |
enum | bt_iso_chan_type { BT_ISO_CHAN_TYPE_NONE , BT_ISO_CHAN_TYPE_CONNECTED , BT_ISO_CHAN_TYPE_BROADCASTER , BT_ISO_CHAN_TYPE_SYNC_RECEIVER } |
ISO Channel Type. More... | |
enum | { BT_ISO_FLAGS_VALID = BIT(0) , BT_ISO_FLAGS_ERROR = BIT(1) , BT_ISO_FLAGS_LOST = BIT(2) , BT_ISO_FLAGS_TS = BIT(3) } |
ISO packet status flag bits. More... | |
Functions | |
int | bt_iso_server_register (struct bt_iso_server *server) |
Register ISO server. | |
int | bt_iso_server_unregister (struct bt_iso_server *server) |
Unregister ISO server. | |
int | bt_iso_cig_create (const struct bt_iso_cig_param *param, struct bt_iso_cig **out_cig) |
Creates a CIG as a central. | |
int | bt_iso_cig_reconfigure (struct bt_iso_cig *cig, const struct bt_iso_cig_param *param) |
Reconfigure a CIG as a central. | |
int | bt_iso_cig_terminate (struct bt_iso_cig *cig) |
Terminates a CIG as a central. | |
int | bt_iso_chan_connect (const struct bt_iso_connect_param *param, size_t count) |
Connect ISO channels on ACL connections. | |
int | bt_iso_chan_disconnect (struct bt_iso_chan *chan) |
Disconnect connected ISO channel. | |
int | bt_iso_chan_send (struct bt_iso_chan *chan, struct net_buf *buf, uint16_t seq_num) |
Send data to ISO channel without timestamp. | |
int | bt_iso_chan_send_ts (struct bt_iso_chan *chan, struct net_buf *buf, uint16_t seq_num, uint32_t ts) |
Send data to ISO channel with timestamp. | |
int | bt_iso_chan_get_info (const struct bt_iso_chan *chan, struct bt_iso_info *info) |
Get ISO channel info. | |
int | bt_iso_chan_get_tx_sync (const struct bt_iso_chan *chan, struct bt_iso_tx_info *info) |
Get ISO transmission timing info. | |
int | bt_iso_big_create (struct bt_le_ext_adv *padv, struct bt_iso_big_create_param *param, struct bt_iso_big **out_big) |
Creates a BIG as a broadcaster. | |
int | bt_iso_big_terminate (struct bt_iso_big *big) |
Terminates a BIG as a broadcaster or receiver. | |
int | bt_iso_big_sync (struct bt_le_per_adv_sync *sync, struct bt_iso_big_sync_param *param, struct bt_iso_big **out_big) |
Creates a BIG as a receiver. | |
Bluetooth ISO handling.