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
audio.h File Reference

Bluetooth Audio handling. More...

#include <sys/atomic.h>
#include <bluetooth/buf.h>
#include <bluetooth/conn.h>
#include <bluetooth/hci.h>
#include <bluetooth/iso.h>
#include <bluetooth/gatt.h>
#include <bluetooth/audio/lc3.h>

Go to the source code of this file.

Data Structures

struct  bt_codec_data
 Codec configuration structure. More...
 
struct  bt_codec
 Codec structure. More...
 
struct  bt_audio_base_bis_data
 
struct  bt_audio_base_subgroup
 
struct  bt_audio_base
 
struct  bt_codec_qos
 Codec QoS structure. More...
 
struct  bt_codec_qos_pref
 Audio Stream Quality of Service Preference structure. More...
 
struct  bt_audio_lc3_preset
 
struct  bt_audio_stream
 Audio stream structure. More...
 
struct  bt_audio_unicast_server_cb
 
struct  bt_audio_broadcast_sink_cb
 
struct  bt_audio_stream_ops
 Stream operation. More...
 
struct  bt_audio_discover_params
 

Macros

#define BT_AUDIO_BROADCAST_ID_SIZE   3 /* octets */
 
#define BT_AUDIO_CONTEXT_TYPE_PROHIBITED   BIT(0)
 
#define BT_AUDIO_CONTEXT_TYPE_UNSPECIFIED   BIT(1)
 
#define BT_AUDIO_CONTEXT_TYPE_CONVERSATIONAL   BIT(2)
 
#define BT_AUDIO_CONTEXT_TYPE_MEDIA   BIT(3)
 
#define BT_AUDIO_CONTEXT_TYPE_GAME   BIT(4)
 
#define BT_AUDIO_CONTEXT_TYPE_INSTRUCTIONAL   BIT(5)
 
#define BT_AUDIO_CONTEXT_TYPE_VOICE_ASSISTANTS   BIT(6)
 
#define BT_AUDIO_CONTEXT_TYPE_LIVE   BIT(7)
 
#define BT_AUDIO_CONTEXT_TYPE_SOUND_EFFECTS   BIT(8)
 
#define BT_AUDIO_CONTEXT_TYPE_NOTIFICATIONS   BIT(9)
 
#define BT_AUDIO_CONTEXT_TYPE_RINGTONE   BIT(10)
 
#define BT_AUDIO_CONTEXT_TYPE_ALERTS   BIT(11)
 
#define BT_AUDIO_CONTEXT_TYPE_EMERGENCY_ALARM   BIT(12)
 
#define BT_AUDIO_UNICAST_ANNOUNCEMENT_GENERAL   0x00
 
#define BT_AUDIO_UNICAST_ANNOUNCEMENT_TARGETED   0x01
 
#define BROADCAST_SNK_STREAM_CNT   0
 
#define BROADCAST_SUBGROUP_CNT   0
 
#define BT_CODEC_DATA(_type, _bytes...)
 Helper to declare elements of bt_codec_data arrays. More...
 
#define BT_CODEC(_id, _cid, _vid, _data, _meta)
 Helper to declare bt_codec structure. More...
 
#define BT_CODEC_META_BASE   0x01
 
#define BT_CODEC_META_PREFER_CONTEXT   (BT_CODEC_META_BASE)
 
#define BT_CODEC_META_CONTEXT   (BT_CODEC_META_BASE + 1)
 
#define BT_CODEC_META_CONTEXT_NONE   BIT(0)
 
#define BT_CODEC_META_CONTEXT_VOICE   BIT(1)
 
#define BT_CODEC_META_CONTEXT_MEDIA   BIT(2)
 
#define BT_CODEC_META_CONTEXT_INSTRUCTION   BIT(3)
 
#define BT_CODEC_META_CONTEXT_ATTENTION   BIT(4)
 
#define BT_CODEC_META_CONTEXT_ALERT   BIT(5)
 
#define BT_CODEC_META_CONTEXT_MAN_MACHINE   BIT(6)
 
#define BT_CODEC_META_CONTEXT_EMERGENCY   BIT(7)
 
#define BT_CODEC_META_CONTEXT_RINGTONE   BIT(8)
 
#define BT_CODEC_META_CONTEXT_TV   BIT(9)
 
#define BT_CODEC_META_CONTEXT_ANY
 
#define BT_CODEC_QOS(_dir, _interval, _framing, _phy, _sdu, _rtn, _latency, _pd)
 Helper to declare elements of bt_codec_qos. More...
 
#define BT_CODEC_QOS_IN_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd)
 Helper to declare Input Unframed bt_codec_qos. More...
 
#define BT_CODEC_QOS_OUT_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd)
 Helper to declare Output Unframed bt_code *. More...
 
#define BT_CODEC_QOS_INOUT_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd)
 Helper to declare Input/Output Unframed bt_codec_qos. More...
 
#define BT_CODEC_QOS_IN_FRAMED(_interval, _sdu, _rtn, _latency, _pd)
 Helper to declare Input Framed bt_codec_qos. More...
 
#define BT_CODEC_QOS_OUT_FRAMED(_interval, _sdu, _rtn, _latency, _pd)
 Helper to declare Output Framed bt_codec_qos. More...
 
#define BT_CODEC_QOS_INOUT_FRAMED(_interval, _sdu, _rtn, _latency, _pd)
 Helper to declare Output Framed bt_codec_qos. More...
 
#define BT_CODEC_QOS_PREF(_unframed_supported, _phy, _rtn, _latency, _pd_min, _pd_max, _pref_pd_min, _pref_pd_max)
 Helper to declare elements of bt_codec_qos_pref. More...
 
#define BT_AUDIO_LC3_PRESET(_codec, _qos)
 
#define BT_AUDIO_LC3_UNICAST_PRESET_8_1_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_8_2_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_16_1_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_16_2_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_24_1_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_24_2_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_32_1_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_32_2_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_441_1_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_441_2_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_1_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_2_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_3_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_4_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_5_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_6_1
 
#define BT_AUDIO_LC3_UNICAST_PRESET_8_1_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_8_2_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_16_1_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_16_2_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_24_1_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_24_2_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_32_1_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_32_2_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_441_1_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_441_2_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_1_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_2_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_3_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_4_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_5_2
 
#define BT_AUDIO_LC3_UNICAST_PRESET_48_6_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_8_1_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_8_2_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_16_1_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_16_2_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_24_1_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_24_2_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_32_1_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_32_2_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_441_1_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_441_2_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_1_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_2_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_3_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_4_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_5_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_6_1
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_8_1_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_8_2_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_16_1_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_16_2_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_24_1_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_24_2_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_32_1_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_32_2_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_441_1_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_441_2_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_1_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_2_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_3_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_4_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_5_2
 
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_6_2
 

Typedefs

typedef void(* bt_audio_discover_func_t) (struct bt_conn *conn, struct bt_codec *codec, struct bt_audio_ep *ep, struct bt_audio_discover_params *params)
 Discover Audio capabilities and endpoints callback function. More...
 

Enumerations

enum  { BT_CODEC_QOS_IN , BT_CODEC_QOS_OUT , BT_CODEC_QOS_INOUT }
 Audio QoS direction. More...
 
enum  { BT_CODEC_QOS_UNFRAMED = 0x00 , BT_CODEC_QOS_FRAMED = 0x01 }
 Codec QoS Framing. More...
 
enum  { BT_CODEC_QOS_1M = BIT(0) , BT_CODEC_QOS_2M = BIT(1) , BT_CODEC_QOS_CODED = BIT(2) }
 Codec QoS Preferred PHY. More...
 
enum  bt_audio_pac_type { BT_AUDIO_SINK = 0x01 , BT_AUDIO_SOURCE = 0x02 }
 Audio Capability type. More...
 

Functions

void bt_audio_stream_cb_register (struct bt_audio_stream *stream, struct bt_audio_stream_ops *ops)
 Register Audio callbacks for a stream. More...
 
int bt_audio_unicast_server_register_cb (const struct bt_audio_unicast_server_cb *cb)
 Register unicast server callbacks. More...
 
int bt_audio_unicast_server_unregister_cb (const struct bt_audio_unicast_server_cb *cb)
 Unregister unicast server callbacks. More...
 
int bt_audio_discover (struct bt_conn *conn, struct bt_audio_discover_params *params)
 Discover remote capabilities and endpoints. More...
 
int bt_audio_stream_config (struct bt_conn *conn, struct bt_audio_stream *stream, struct bt_audio_ep *ep, struct bt_codec *codec)
 Configure Audio Stream. More...
 
int bt_audio_stream_reconfig (struct bt_audio_stream *stream, struct bt_codec *codec)
 Reconfigure Audio Stream. More...
 
int bt_audio_stream_qos (struct bt_conn *conn, struct bt_audio_unicast_group *group, struct bt_codec_qos *qos)
 Configure Audio Stream QoS. More...
 
int bt_audio_stream_enable (struct bt_audio_stream *stream, uint8_t meta_count, struct bt_codec_data *meta)
 Enable Audio Stream. More...
 
int bt_audio_stream_metadata (struct bt_audio_stream *stream, uint8_t meta_count, struct bt_codec_data *meta)
 Change Audio Stream Metadata. More...
 
int bt_audio_stream_disable (struct bt_audio_stream *stream)
 Disable Audio Stream. More...
 
int bt_audio_stream_start (struct bt_audio_stream *stream)
 Start Audio Stream. More...
 
int bt_audio_stream_stop (struct bt_audio_stream *stream)
 Stop Audio Stream. More...
 
int bt_audio_stream_release (struct bt_audio_stream *stream, bool cache)
 Release Audio Stream. More...
 
int bt_audio_stream_send (struct bt_audio_stream *stream, struct net_buf *buf)
 Send data to Audio stream. More...
 
int bt_audio_unicast_group_create (struct bt_audio_stream *streams, uint8_t num_stream, struct bt_audio_unicast_group **unicast_group)
 Create audio unicast group. More...
 
int bt_audio_unicast_group_delete (struct bt_audio_unicast_group *unicast_group)
 Delete audio unicast group. More...
 
int bt_audio_broadcast_source_create (struct bt_audio_stream *streams, uint8_t num_stream, struct bt_codec *codec, struct bt_codec_qos *qos, struct bt_audio_broadcast_source **source)
 Create audio broadcast source. More...
 
int bt_audio_broadcast_source_reconfig (struct bt_audio_broadcast_source *source, struct bt_codec *codec, struct bt_codec_qos *qos)
 Reconfigure audio broadcast source. More...
 
int bt_audio_broadcast_source_start (struct bt_audio_broadcast_source *source)
 Start audio broadcast source. More...
 
int bt_audio_broadcast_source_stop (struct bt_audio_broadcast_source *source)
 Stop audio broadcast source. More...
 
int bt_audio_broadcast_source_delete (struct bt_audio_broadcast_source *source)
 Delete audio broadcast source. More...
 
void bt_audio_broadcast_sink_register_cb (struct bt_audio_broadcast_sink_cb *cb)
 Register Broadcast sink callbacks *. More...
 
int bt_audio_broadcast_sink_scan_start (const struct bt_le_scan_param *param)
 Start scan for broadcast sources. More...
 
int bt_audio_broadcast_sink_scan_stop (void)
 Stop scan for broadcast sources. More...
 
int bt_audio_broadcast_sink_sync (struct bt_audio_broadcast_sink *sink, uint32_t indexes_bitfield, struct bt_audio_stream *streams, struct bt_codec *codec, const uint8_t broadcast_code[16])
 Sync to a broadcaster's audio. More...
 
int bt_audio_broadcast_sink_stop (struct bt_audio_broadcast_sink *sink)
 Stop audio broadcast sink. More...
 
int bt_audio_broadcast_sink_delete (struct bt_audio_broadcast_sink *sink)
 Release a broadcast sink. More...
 

Detailed Description

Bluetooth Audio handling.