Zephyr API Documentation  2.7.0-rc2
A Scalable Open Source RTOS
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 (CONFIG_BT_HCI_RESERVE + \
34 BT_HCI_ISO_HDR_SIZE + \
35 BT_HCI_ISO_DATA_HDR_SIZE)
36
38#define BT_ISO_DATA_PATH_HCI 0x00
39
41#define BT_ISO_INTERVAL_MIN 0x0000FF
43#define BT_ISO_INTERVAL_MAX 0x0FFFFF
45#define BT_ISO_LATENCY_MIN 0x0005
47#define BT_ISO_LATENCY_MAX 0x0FA0
49#define BT_ISO_PACKING_SEQUENTIAL 0x00
51#define BT_ISO_PACKING_INTERLEAVED 0x01
53#define BT_ISO_FRAMING_UNFRAMED 0x00
55#define BT_ISO_FRAMING_FRAMED 0x01
57#define BT_ISO_MAX_GROUP_ISO_COUNT 0x1F
59#define BT_ISO_MAX_SDU 0x0FFF
61#define BT_ISO_SYNC_TIMEOUT_MIN 0x000A
63#define BT_ISO_SYNC_TIMEOUT_MAX 0x4000
65#define BT_ISO_SYNC_MSE_ANY 0x00
67#define BT_ISO_SYNC_MSE_MIN 0x01
69#define BT_ISO_SYNC_MSE_MAX 0x1F
71#define BT_ISO_CONNECTED_RTN_MAX 0xFF
73#define BT_ISO_BROADCAST_RTN_MAX 0x1E
75#define BT_ISO_BROADCAST_CODE_SIZE 16
76
77struct bt_iso_chan;
78
83enum {
92};
93
97 struct bt_conn *iso;
104};
105
122};
123
142};
143
160};
161
163enum {
174
181
184
187};
188
189
191struct bt_iso_cig;
192
199
206
212
218
227
233
240};
241
243 /* The ISO channel to connect */
245
246 /* The ACL connection */
247 struct bt_conn *acl;
248};
249
251struct bt_iso_big;
252
259
266
272
278
284
291
294
301};
302
306
313
321
332
338
341
348};
349
353
356
359
362
365
368
371
374
377
380
383
386
389
392};
393
403 void (*connected)(struct bt_iso_chan *chan);
404
414 void (*disconnected)(struct bt_iso_chan *chan, uint8_t reason);
415
425 struct net_buf *(*alloc_buf)(struct bt_iso_chan *chan);
426
436 void (*recv)(struct bt_iso_chan *chan, const struct bt_iso_recv_info *info,
437 struct net_buf *buf);
438
446 void (*sent)(struct bt_iso_chan *chan);
447};
448
453
464 int (*accept)(struct bt_conn *acl, struct bt_iso_chan **chan);
465};
466
478
494 struct bt_iso_cig **out_cig);
495
504int bt_iso_cig_terminate(struct bt_iso_cig *cig);
505
523int bt_iso_chan_connect(const struct bt_iso_connect_param *param, size_t count);
524
537
553int bt_iso_chan_send(struct bt_iso_chan *chan, struct net_buf *buf);
554
565int bt_iso_big_create(struct bt_le_ext_adv *padv, struct bt_iso_big_create_param *param,
566 struct bt_iso_big **out_big);
567
574int bt_iso_big_terminate(struct bt_iso_big *big);
575
584int bt_iso_big_sync(struct bt_le_per_adv_sync *sync, struct bt_iso_big_sync_param *param,
585 struct bt_iso_big **out_big);
586
587#ifdef __cplusplus
588}
589#endif
590
595#endif /* ZEPHYR_INCLUDE_BLUETOOTH_ISO_H_ */
Bluetooth data buffer API.
ZTEST_BMEM int count
Definition: main.c:33
Bluetooth connection handling.
void
Definition: eswifi_shell.c:15
bt_security_t
Definition: conn.h:663
int bt_iso_cig_create(const struct bt_iso_cig_create_param *param, struct bt_iso_cig **out_cig)
Creates a CIG as a central.
#define BT_ISO_BROADCAST_CODE_SIZE
Definition: iso.h:75
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_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_server_register(struct bt_iso_server *server)
Register ISO server.
@ BT_ISO_CONNECT
Definition: iso.h:87
@ BT_ISO_DISCONNECTED
Definition: iso.h:85
@ BT_ISO_DISCONNECT
Definition: iso.h:91
@ BT_ISO_CONNECTED
Definition: iso.h:89
@ BT_ISO_FLAGS_VALID
Definition: iso.h:165
@ BT_ISO_FLAGS_LOST
Definition: iso.h:172
@ BT_ISO_FLAGS_ERROR
The ISO packet may possibly contain errors.
Definition: iso.h:170
__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:39
Definition: iso.h:253
bool encryption
Definition: iso.h:293
struct bt_iso_chan ** bis_channels
Definition: iso.h:258
uint32_t interval
Channel interval in us.
Definition: iso.h:271
uint8_t num_bis
Number channels in bis_channels.
Definition: iso.h:265
uint8_t framing
Channel framing mode.
Definition: iso.h:290
uint8_t bcode[16]
Broadcast code.
Definition: iso.h:300
uint16_t latency
Channel Latency in ms.
Definition: iso.h:277
uint8_t packing
Channel packing mode.
Definition: iso.h:283
Definition: iso.h:303
uint32_t bis_bitfield
Definition: iso.h:320
uint32_t mse
Maximum subevents.
Definition: iso.h:331
uint16_t sync_timeout
Synchronization timeout for the BIG (N * 10 MS)
Definition: iso.h:337
bool encryption
Definition: iso.h:340
uint8_t num_bis
Number channels in bis_channels.
Definition: iso.h:312
uint8_t bcode[16]
Broadcast code.
Definition: iso.h:347
struct bt_iso_chan ** bis_channels
Definition: iso.h:305
Definition: iso.h:350
uint8_t framing
Definition: iso.h:388
uint8_t num_bis
Definition: iso.h:358
uint8_t sub_evt_count
Definition: iso.h:361
uint8_t phy
Definition: iso.h:385
uint32_t sdu_interval
Definition: iso.h:379
uint8_t offset
Definition: iso.h:370
uint8_t sid
Definition: iso.h:355
bool encryption
Definition: iso.h:391
uint8_t rep_count
Definition: iso.h:373
uint16_t max_sdu
Definition: iso.h:382
const bt_addr_le_t * addr
Definition: iso.h:352
uint8_t burst_number
Definition: iso.h:367
uint16_t max_pdu
Definition: iso.h:376
uint16_t iso_interval
Definition: iso.h:364
ISO Channel IO QoS structure.
Definition: iso.h:107
uint8_t phy
Definition: iso.h:113
uint8_t rtn
Definition: iso.h:115
struct bt_iso_chan_path * path
Channel data path reference.
Definition: iso.h:121
uint16_t sdu
Definition: iso.h:109
ISO Channel operations structure.
Definition: iso.h:395
void(* sent)(struct bt_iso_chan *chan)
Channel sent callback.
Definition: iso.h:446
void(* disconnected)(struct bt_iso_chan *chan, uint8_t reason)
Channel disconnected callback.
Definition: iso.h:414
void(* connected)(struct bt_iso_chan *chan)
Channel connected callback.
Definition: iso.h:403
void(* recv)(struct bt_iso_chan *chan, const struct bt_iso_recv_info *info, struct net_buf *buf)
Channel recv callback.
Definition: iso.h:436
ISO Channel Data Path structure.
Definition: iso.h:145
uint8_t cc[0]
Definition: iso.h:159
uint8_t cc_len
Definition: iso.h:157
uint8_t format
Definition: iso.h:149
uint8_t pid
Definition: iso.h:147
uint16_t cid
Definition: iso.h:151
uint32_t delay
Definition: iso.h:155
uint16_t vid
Definition: iso.h:153
ISO Channel QoS structure.
Definition: iso.h:125
struct bt_iso_chan_io_qos * tx
Channel Transmission QoS.
Definition: iso.h:141
struct bt_iso_chan_io_qos * rx
Channel Receiving QoS.
Definition: iso.h:133
ISO Channel structure.
Definition: iso.h:95
struct bt_iso_chan_ops * ops
Definition: iso.h:99
bt_security_t required_sec_level
Definition: iso.h:103
struct bt_conn * iso
Definition: iso.h:97
struct bt_iso_chan_qos * qos
Definition: iso.h:101
uint8_t state
Definition: iso.h:102
Definition: iso.h:193
uint16_t latency
Channel Latency in ms.
Definition: iso.h:217
uint8_t packing
Channel packing mode.
Definition: iso.h:232
uint8_t num_cis
Number channels in cis_channels.
Definition: iso.h:205
uint32_t interval
Channel interval in us.
Definition: iso.h:211
struct bt_iso_chan ** cis_channels
Array of pointers to CIS channels.
Definition: iso.h:198
uint8_t framing
Channel framing mode.
Definition: iso.h:239
uint8_t sca
Channel peripherals sleep clock accuracy Only for CIS.
Definition: iso.h:226
Definition: iso.h:242
struct bt_conn * acl
Definition: iso.h:247
struct bt_iso_chan * iso_chan
Definition: iso.h:244
ISO Meta Data structure for received ISO packets.
Definition: iso.h:176
uint8_t flags
Definition: iso.h:186
uint32_t ts
Definition: iso.h:180
uint16_t sn
Definition: iso.h:183
ISO Server structure.
Definition: iso.h:450
bt_security_t sec_level
Definition: iso.h:452
int(* accept)(struct bt_conn *acl, struct bt_iso_chan **chan)
Server accept callback.
Definition: iso.h:464
Network buffer representation.
Definition: buf.h:919