Zephyr API Documentation  3.0.0
A Scalable Open Source RTOS
3.0.0
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
iso.h
Go to the documentation of this file.
1
5/*
6 * Copyright (c) 2020 Intel Corporation
7 * Copyright (c) 2021 Nordic Semiconductor ASA
8 *
9 * SPDX-License-Identifier: Apache-2.0
10 */
11#ifndef ZEPHYR_INCLUDE_BLUETOOTH_ISO_H_
12#define ZEPHYR_INCLUDE_BLUETOOTH_ISO_H_
13
21#ifdef __cplusplus
22extern "C" {
23#endif
24
25#include <sys/atomic.h>
26#include <bluetooth/buf.h>
27#include <bluetooth/conn.h>
28#include <bluetooth/hci.h>
29
33#define BT_ISO_CHAN_SEND_RESERVE BT_BUF_ISO_SIZE(0)
34
44#define BT_ISO_SDU_BUF_SIZE(mtu) BT_BUF_ISO_SIZE(mtu)
45
47#define BT_ISO_DATA_PATH_HCI 0x00
48
50#define BT_ISO_INTERVAL_MIN 0x0000FF
52#define BT_ISO_INTERVAL_MAX 0x0FFFFF
54#define BT_ISO_LATENCY_MIN 0x0005
56#define BT_ISO_LATENCY_MAX 0x0FA0
58#define BT_ISO_PACKING_SEQUENTIAL 0x00
60#define BT_ISO_PACKING_INTERLEAVED 0x01
62#define BT_ISO_FRAMING_UNFRAMED 0x00
64#define BT_ISO_FRAMING_FRAMED 0x01
66#define BT_ISO_MAX_GROUP_ISO_COUNT 0x1F
68#define BT_ISO_MAX_SDU 0x0FFF
70#define BT_ISO_SYNC_TIMEOUT_MIN 0x000A
72#define BT_ISO_SYNC_TIMEOUT_MAX 0x4000
74#define BT_ISO_SYNC_MSE_ANY 0x00
76#define BT_ISO_SYNC_MSE_MIN 0x01
78#define BT_ISO_SYNC_MSE_MAX 0x1F
80#define BT_ISO_CONNECTED_RTN_MAX 0xFF
82#define BT_ISO_BROADCAST_RTN_MAX 0x1E
84#define BT_ISO_BROADCAST_CODE_SIZE 16
85
90enum {
99};
100
101
108
112 struct bt_conn *iso;
121};
122
139};
140
159};
160
177};
178
180enum {
191
198
201
204};
205
206
208struct bt_iso_cig;
209
213
220
226
232
241
247
254};
255
257 /* The ISO channel to connect */
259
260 /* The ACL connection */
261 struct bt_conn *acl;
262};
263
265struct bt_iso_big;
266
270
277
283
289
295
302
305
312};
313
317
324
332
343
349
352
359};
360
364
367
370
373
376
379
382
385
388
391
394
397
400
403};
404
418 void (*connected)(struct bt_iso_chan *chan);
419
429 void (*disconnected)(struct bt_iso_chan *chan, uint8_t reason);
430
440 struct net_buf *(*alloc_buf)(struct bt_iso_chan *chan);
441
451 void (*recv)(struct bt_iso_chan *chan, const struct bt_iso_recv_info *info,
452 struct net_buf *buf);
453
461 void (*sent)(struct bt_iso_chan *chan);
462};
463
466 struct bt_conn *acl;
467
473
479};
480
485
496 int (*accept)(const struct bt_iso_accept_info *info,
497 struct bt_iso_chan **chan);
498};
499
511
526int bt_iso_cig_create(const struct bt_iso_cig_param *param,
527 struct bt_iso_cig **out_cig);
528
548int bt_iso_cig_reconfigure(struct bt_iso_cig *cig,
549 const struct bt_iso_cig_param *param);
550
559int bt_iso_cig_terminate(struct bt_iso_cig *cig);
560
578int bt_iso_chan_connect(const struct bt_iso_connect_param *param, size_t count);
579
592
608int bt_iso_chan_send(struct bt_iso_chan *chan, struct net_buf *buf);
609
614};
615
623int bt_iso_chan_get_info(const struct bt_iso_chan *chan,
624 struct bt_iso_info *info);
625
634
645int bt_iso_big_create(struct bt_le_ext_adv *padv, struct bt_iso_big_create_param *param,
646 struct bt_iso_big **out_big);
647
654int bt_iso_big_terminate(struct bt_iso_big *big);
655
664int bt_iso_big_sync(struct bt_le_per_adv_sync *sync, struct bt_iso_big_sync_param *param,
665 struct bt_iso_big **out_big);
666
667#ifdef __cplusplus
668}
669#endif
670
675#endif /* ZEPHYR_INCLUDE_BLUETOOTH_ISO_H_ */
Bluetooth data buffer API.
ZTEST_BMEM int count
Definition: main.c:33
Bluetooth connection handling.
bt_security_t
Definition: conn.h:664
#define BT_ISO_BROADCAST_CODE_SIZE
Definition: iso.h:84
enum bt_iso_chan_type bt_iso_chan_get_type(const struct bt_iso_chan *chan)
Get the type of an ISO channel.
int bt_iso_chan_get_info(const struct bt_iso_chan *chan, struct bt_iso_info *info)
Get ISO channel info.
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.
int bt_iso_chan_disconnect(struct bt_iso_chan *chan)
Disconnect ISO channel.
int bt_iso_chan_connect(const struct bt_iso_connect_param *param, size_t count)
Connect ISO channels on ACL connections.
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_big_terminate(struct bt_iso_big *big)
Terminates a BIG as a broadcaster or receiver.
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_cig_terminate(struct bt_iso_cig *cig)
Terminates a CIG as a central.
int bt_iso_chan_send(struct bt_iso_chan *chan, struct net_buf *buf)
Send data to ISO channel.
int bt_iso_cig_create(const struct bt_iso_cig_param *param, struct bt_iso_cig **out_cig)
Creates a CIG as a central.
bt_iso_chan_type
Definition: iso.h:102
int bt_iso_server_register(struct bt_iso_server *server)
Register ISO server.
@ BT_ISO_CONNECT
Definition: iso.h:94
@ BT_ISO_DISCONNECTED
Definition: iso.h:92
@ BT_ISO_DISCONNECT
Definition: iso.h:98
@ BT_ISO_CONNECTED
Definition: iso.h:96
@ BT_ISO_FLAGS_VALID
Definition: iso.h:182
@ BT_ISO_FLAGS_LOST
Definition: iso.h:189
@ BT_ISO_FLAGS_ERROR
The ISO packet may possibly contain errors.
Definition: iso.h:187
@ BT_ISO_CHAN_TYPE_NONE
Definition: iso.h:103
@ BT_ISO_CHAN_TYPE_BROADCASTER
Definition: iso.h:105
@ BT_ISO_CHAN_TYPE_SYNC_RECEIVER
Definition: iso.h:106
@ BT_ISO_CHAN_TYPE_CONNECTED
Definition: iso.h:104
struct _snode sys_snode_t
Definition: slist.h:33
__UINT32_TYPE__ uint32_t
Definition: stdint.h:60
__UINT8_TYPE__ uint8_t
Definition: stdint.h:58
__UINT16_TYPE__ uint16_t
Definition: stdint.h:59
Definition: addr.h:48
Definition: iso.h:464
struct bt_conn * acl
Definition: iso.h:466
uint8_t cis_id
The ID of the connected isochronous stream (CIS) on the central.
Definition: iso.h:478
uint8_t cig_id
The ID of the connected isochronous group (CIG) on the central.
Definition: iso.h:472
Definition: iso.h:267
bool encryption
Definition: iso.h:304
struct bt_iso_chan ** bis_channels
Definition: iso.h:269
uint32_t interval
Channel interval in us.
Definition: iso.h:282
uint8_t num_bis
Number channels in bis_channels.
Definition: iso.h:276
uint8_t framing
Channel framing mode.
Definition: iso.h:301
uint8_t bcode[16]
Broadcast code.
Definition: iso.h:311
uint16_t latency
Channel Latency in ms.
Definition: iso.h:288
uint8_t packing
Channel packing mode.
Definition: iso.h:294
Definition: iso.h:314
uint32_t bis_bitfield
Definition: iso.h:331
uint32_t mse
Maximum subevents.
Definition: iso.h:342
uint16_t sync_timeout
Synchronization timeout for the BIG (N * 10 MS)
Definition: iso.h:348
bool encryption
Definition: iso.h:351
uint8_t num_bis
Number channels in bis_channels.
Definition: iso.h:323
uint8_t bcode[16]
Broadcast code.
Definition: iso.h:358
struct bt_iso_chan ** bis_channels
Definition: iso.h:316
Definition: iso.h:361
uint8_t framing
Definition: iso.h:399
uint8_t num_bis
Definition: iso.h:369
uint8_t sub_evt_count
Definition: iso.h:372
uint8_t phy
Definition: iso.h:396
uint32_t sdu_interval
Definition: iso.h:390
uint8_t offset
Definition: iso.h:381
uint8_t sid
Definition: iso.h:366
bool encryption
Definition: iso.h:402
uint8_t rep_count
Definition: iso.h:384
uint16_t max_sdu
Definition: iso.h:393
const bt_addr_le_t * addr
Definition: iso.h:363
uint8_t burst_number
Definition: iso.h:378
uint16_t max_pdu
Definition: iso.h:387
uint16_t iso_interval
Definition: iso.h:375
ISO Channel IO QoS structure.
Definition: iso.h:124
uint8_t phy
Definition: iso.h:130
uint8_t rtn
Definition: iso.h:132
struct bt_iso_chan_path * path
Channel data path reference.
Definition: iso.h:138
uint16_t sdu
Definition: iso.h:126
ISO Channel operations structure.
Definition: iso.h:406
void(* sent)(struct bt_iso_chan *chan)
Channel sent callback.
Definition: iso.h:461
void(* disconnected)(struct bt_iso_chan *chan, uint8_t reason)
Channel disconnected callback.
Definition: iso.h:429
void(* connected)(struct bt_iso_chan *chan)
Channel connected callback.
Definition: iso.h:418
void(* recv)(struct bt_iso_chan *chan, const struct bt_iso_recv_info *info, struct net_buf *buf)
Channel recv callback.
Definition: iso.h:451
ISO Channel Data Path structure.
Definition: iso.h:162
uint8_t cc[0]
Definition: iso.h:176
uint8_t cc_len
Definition: iso.h:174
uint8_t format
Definition: iso.h:166
uint8_t pid
Definition: iso.h:164
uint16_t cid
Definition: iso.h:168
uint32_t delay
Definition: iso.h:172
uint16_t vid
Definition: iso.h:170
ISO Channel QoS structure.
Definition: iso.h:142
struct bt_iso_chan_io_qos * tx
Channel Transmission QoS.
Definition: iso.h:158
struct bt_iso_chan_io_qos * rx
Channel Receiving QoS.
Definition: iso.h:150
ISO Channel structure.
Definition: iso.h:110
struct bt_iso_chan_ops * ops
Definition: iso.h:114
bt_security_t required_sec_level
Definition: iso.h:118
struct bt_conn * iso
Definition: iso.h:112
sys_snode_t node
Definition: iso.h:120
struct bt_iso_chan_qos * qos
Definition: iso.h:116
uint8_t state
Definition: iso.h:117
Definition: iso.h:210
uint16_t latency
Channel Latency in ms.
Definition: iso.h:231
uint8_t packing
Channel packing mode.
Definition: iso.h:246
uint8_t framing
Channel framing mode.
Definition: iso.h:253
uint8_t num_cis
Number channels in cis_channels.
Definition: iso.h:219
uint8_t sca
Channel peripherals sleep clock accuracy Only for CIS.
Definition: iso.h:240
struct bt_iso_chan ** cis_channels
Array of pointers to CIS channels.
Definition: iso.h:212
uint32_t interval
Channel interval in us.
Definition: iso.h:225
Definition: iso.h:256
struct bt_conn * acl
Definition: iso.h:261
struct bt_iso_chan * iso_chan
Definition: iso.h:258
Definition: iso.h:611
enum bt_iso_chan_type type
Definition: iso.h:613
ISO Meta Data structure for received ISO packets.
Definition: iso.h:193
uint8_t flags
Definition: iso.h:203
uint32_t ts
Definition: iso.h:197
uint16_t sn
Definition: iso.h:200
ISO Server structure.
Definition: iso.h:482
bt_security_t sec_level
Definition: iso.h:484
int(* accept)(const struct bt_iso_accept_info *info, struct bt_iso_chan **chan)
Server accept callback.
Definition: iso.h:496
Network buffer representation.
Definition: buf.h:915