Zephyr Project API  3.1.0
A Scalable Open Source RTOS
bass.h
Go to the documentation of this file.
1
10#ifndef ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BASS_
11#define ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BASS_
12#include <zephyr/types.h>
14
15#if IS_ENABLED(CONFIG_BT_BASS)
16#define BT_BASS_MAX_METADATA_LEN CONFIG_BT_BASS_MAX_METADATA_LEN
17#define BT_BASS_MAX_SUBGROUPS CONFIG_BT_BASS_MAX_SUBGROUPS
18#else
19#define BT_BASS_MAX_METADATA_LEN 0
20#define BT_BASS_MAX_SUBGROUPS 0
21#endif
22
23#define BT_BASS_BROADCAST_CODE_SIZE 16
24
25#define BT_BASS_PA_STATE_NOT_SYNCED 0x00
26#define BT_BASS_PA_STATE_INFO_REQ 0x01
27#define BT_BASS_PA_STATE_SYNCED 0x02
28#define BT_BASS_PA_STATE_FAILED 0x03
29#define BT_BASS_PA_STATE_NO_PAST 0x04
30
31#define BT_BASS_BIG_ENC_STATE_NO_ENC 0x00
32#define BT_BASS_BIG_ENC_STATE_BCODE_REQ 0x01
33#define BT_BASS_BIG_ENC_STATE_DEC 0x02
34#define BT_BASS_BIG_ENC_STATE_BAD_CODE 0x03
35
36#define BT_BASS_ERR_OPCODE_NOT_SUPPORTED 0x80
37#define BT_BASS_ERR_INVALID_SRC_ID 0x81
38
39#define BT_BASS_PA_INTERVAL_UNKNOWN 0xFFFF
40
41#define BT_BASS_BROADCAST_MAX_ID 0xFFFFFF
42
43#define BT_BASS_BIS_SYNC_NO_PREF 0xFFFFFFFF
44
50};
51
52/* TODO: Only expose this as an opaque type */
60 uint32_t broadcast_id; /* 24 bits */
64};
65
66struct bt_bass_cb {
67 void (*pa_synced)(struct bt_bass_recv_state *recv_state,
68 const struct bt_le_per_adv_sync_synced_info *info);
69 void (*pa_term)(struct bt_bass_recv_state *recv_state,
70 const struct bt_le_per_adv_sync_term_info *info);
71 void (*pa_recv)(struct bt_bass_recv_state *recv_state,
72 const struct bt_le_per_adv_sync_recv_info *info,
73 struct net_buf_simple *buf);
74 void (*biginfo)(struct bt_bass_recv_state *recv_state,
75 const struct bt_iso_biginfo *biginfo);
76};
77
82
93int bt_bass_set_sync_state(uint8_t src_id, uint8_t pa_sync_state,
95 uint8_t encrypted);
96
97/******************************** CLIENT API ********************************/
98
108typedef void (*bt_bass_client_discover_cb)(struct bt_conn *conn, int err,
109 uint8_t recv_state_count);
110
120typedef void (*bt_bass_client_scan_cb)(const struct bt_le_scan_recv_info *info,
121 uint32_t broadcast_id);
122
132typedef void (*bt_bass_client_recv_state_cb)(struct bt_conn *conn, int err,
133 const struct bt_bass_recv_state *state);
134
142typedef void (*bt_bass_client_recv_state_rem_cb)(struct bt_conn *conn, int err,
143 uint8_t src_id);
144
151typedef void (*bt_bass_client_write_cb)(struct bt_conn *conn, int err);
152
158
165};
166
176int bt_bass_client_discover(struct bt_conn *conn);
177
195int bt_bass_client_scan_start(struct bt_conn *conn, bool start_scan);
196
203int bt_bass_client_scan_stop(struct bt_conn *conn);
204
209
230};
231
240int bt_bass_client_add_src(struct bt_conn *conn,
241 struct bt_bass_add_src_param *param);
242
259};
260
268int bt_bass_client_mod_src(struct bt_conn *conn,
269 struct bt_bass_mod_src_param *param);
270
279int bt_bass_client_set_broadcast_code(struct bt_conn *conn, uint8_t src_id,
280 uint8_t broadcast_code[BT_BASS_BROADCAST_CODE_SIZE]);
281
289int bt_bass_client_rem_src(struct bt_conn *conn, uint8_t src_id);
290
299int bt_bass_client_read_recv_state(struct bt_conn *conn, uint8_t idx);
300#endif /* ZEPHYR_INCLUDE_BLUETOOTH_AUDIO_BASS_ */
void(* bt_bass_client_recv_state_cb)(struct bt_conn *conn, int err, const struct bt_bass_recv_state *state)
Callback function for when a receive state is read or updated.
Definition: bass.h:132
int bt_bass_client_add_src(struct bt_conn *conn, struct bt_bass_add_src_param *param)
Add a source on the server.
int bt_bass_client_discover(struct bt_conn *conn)
Discover Broadcast Audio Scan Service on the server.
#define BT_BASS_BROADCAST_CODE_SIZE
Definition: bass.h:23
void(* bt_bass_client_write_cb)(struct bt_conn *conn, int err)
Callback function for writes.
Definition: bass.h:151
int bt_bass_client_scan_start(struct bt_conn *conn, bool start_scan)
Scan start for BISes for a remote server.
void(* bt_bass_client_recv_state_rem_cb)(struct bt_conn *conn, int err, uint8_t src_id)
Callback function for when a receive state is removed.
Definition: bass.h:142
int bt_bass_client_read_recv_state(struct bt_conn *conn, uint8_t idx)
Read the specified receive state from the server.
int bt_bass_client_set_broadcast_code(struct bt_conn *conn, uint8_t src_id, uint8_t broadcast_code[16])
Set a broadcast code to the specified receive state.
void bt_bass_register_cb(struct bt_bass_cb *cb)
Registers the callbacks used by BASS.
void(* bt_bass_client_scan_cb)(const struct bt_le_scan_recv_info *info, uint32_t broadcast_id)
Callback function for Broadcast Audio Scan Service client scan results.
Definition: bass.h:120
void bt_bass_client_register_cb(struct bt_bass_client_cb *cb)
Registers the callbacks used by Broadcast Audio Scan Service client.
#define BT_BASS_MAX_SUBGROUPS
Definition: bass.h:20
int bt_bass_client_rem_src(struct bt_conn *conn, uint8_t src_id)
Remove a source from the server.
int bt_bass_set_sync_state(uint8_t src_id, uint8_t pa_sync_state, uint32_t bis_synced[0], uint8_t encrypted)
Set the sync state of a receive state in the server.
int bt_bass_client_scan_stop(struct bt_conn *conn)
Stop remote scanning for BISes for a server.
int bt_bass_client_mod_src(struct bt_conn *conn, struct bt_bass_mod_src_param *param)
Modify a source on the server.
void(* bt_bass_client_discover_cb)(struct bt_conn *conn, int err, uint8_t recv_state_count)
Callback function for bt_bass_client_discover.
Definition: bass.h:108
#define BT_BASS_MAX_METADATA_LEN
Definition: bass.h:19
Bluetooth connection handling.
state
Definition: http_parser_state.h:29
__UINT32_TYPE__ uint32_t
Definition: stdint.h:90
__UINT8_TYPE__ uint8_t
Definition: stdint.h:88
__UINT16_TYPE__ uint16_t
Definition: stdint.h:89
Definition: addr.h:48
Definition: bass.h:211
struct bt_bass_subgroup * subgroups
Definition: bass.h:229
uint32_t broadcast_id
Definition: bass.h:219
uint8_t adv_sid
Definition: bass.h:215
bt_addr_le_t addr
Definition: bass.h:213
uint8_t num_subgroups
Definition: bass.h:227
uint8_t pa_sync
Definition: bass.h:217
uint16_t pa_interval
Periodic advertising interval in milliseconds.
Definition: bass.h:225
Definition: bass.h:66
void(* biginfo)(struct bt_bass_recv_state *recv_state, const struct bt_iso_biginfo *biginfo)
Definition: bass.h:74
void(* pa_term)(struct bt_bass_recv_state *recv_state, const struct bt_le_per_adv_sync_term_info *info)
Definition: bass.h:69
void(* pa_recv)(struct bt_bass_recv_state *recv_state, const struct bt_le_per_adv_sync_recv_info *info, struct net_buf_simple *buf)
Definition: bass.h:71
void(* pa_synced)(struct bt_bass_recv_state *recv_state, const struct bt_le_per_adv_sync_synced_info *info)
Definition: bass.h:67
Definition: bass.h:153
bt_bass_client_discover_cb discover
Definition: bass.h:154
bt_bass_client_recv_state_cb recv_state
Definition: bass.h:156
bt_bass_client_write_cb mod_src
Definition: bass.h:162
bt_bass_client_write_cb rem_src
Definition: bass.h:164
bt_bass_client_write_cb scan_stop
Definition: bass.h:160
bt_bass_client_recv_state_rem_cb recv_state_removed
Definition: bass.h:157
bt_bass_client_write_cb scan_start
Definition: bass.h:159
bt_bass_client_write_cb add_src
Definition: bass.h:161
bt_bass_client_write_cb broadcast_code
Definition: bass.h:163
bt_bass_client_scan_cb scan
Definition: bass.h:155
Definition: bass.h:244
uint8_t pa_sync
Definition: bass.h:248
uint16_t pa_interval
Periodic advertising interval.
Definition: bass.h:254
uint8_t src_id
Definition: bass.h:246
uint8_t num_subgroups
Definition: bass.h:256
struct bt_bass_subgroup * subgroups
Definition: bass.h:258
Definition: bass.h:53
uint8_t num_subgroups
Definition: bass.h:62
uint8_t pa_sync_state
Definition: bass.h:58
uint8_t adv_sid
Definition: bass.h:56
uint8_t bad_code[16]
Definition: bass.h:61
bt_addr_le_t addr
Definition: bass.h:55
uint8_t req_pa_sync_value
Definition: bass.h:57
uint32_t broadcast_id
Definition: bass.h:60
struct bt_bass_subgroup subgroups[0]
Definition: bass.h:63
uint8_t src_id
Definition: bass.h:54
uint8_t encrypt_state
Definition: bass.h:59
Definition: bass.h:45
uint32_t requested_bis_sync
Definition: bass.h:47
uint8_t metadata_len
Definition: bass.h:48
uint8_t metadata[0]
Definition: bass.h:49
uint32_t bis_sync
Definition: bass.h:46
Definition: iso.h:375
Definition: bluetooth.h:1210
Definition: bluetooth.h:1167
Definition: bluetooth.h:1199
Definition: bluetooth.h:1728
Simple network buffer representation.
Definition: buf.h:83