Bluetooth: Audio: Remove bidirectional audio streams

Audio streams as defined by the BAP spec does not
support bidirectional audio streams. This commit
updates the API and implementation to match that.

The use a bidirectional CIS with 2 audio stream will
be added in a future commit.

This removes the _IN_ and _OUT_ and _INOUT_ QOS
values, as well as the direction of the codec QOS
struct.

To keep direction for internal use, the direction
has been added to the endpoint struct.

Signed-off-by: Emil Gydesen <emil.gydesen@nordicsemi.no>
This commit is contained in:
Emil Gydesen 2022-02-02 19:52:01 +01:00 committed by Anas Nashif
commit b880637231
12 changed files with 107 additions and 192 deletions

View file

@ -253,7 +253,6 @@ struct bt_audio_base {
/** @def BT_CODEC_QOS /** @def BT_CODEC_QOS
* @brief Helper to declare elements of bt_codec_qos * @brief Helper to declare elements of bt_codec_qos
* *
* @param _dir direction
* @param _interval SDU interval (usec) * @param _interval SDU interval (usec)
* @param _framing Framing * @param _framing Framing
* @param _phy Target PHY * @param _phy Target PHY
@ -262,10 +261,9 @@ struct bt_audio_base {
* @param _latency Maximum Transport Latency (msec) * @param _latency Maximum Transport Latency (msec)
* @param _pd Presentation Delay (usec) * @param _pd Presentation Delay (usec)
*/ */
#define BT_CODEC_QOS(_dir, _interval, _framing, _phy, _sdu, _rtn, _latency, \ #define BT_CODEC_QOS(_interval, _framing, _phy, _sdu, _rtn, _latency, \
_pd) \ _pd) \
{ \ { \
.dir = _dir, \
.interval = _interval, \ .interval = _interval, \
.framing = _framing, \ .framing = _framing, \
.phy = _phy, \ .phy = _phy, \
@ -275,13 +273,6 @@ struct bt_audio_base {
.pd = _pd, \ .pd = _pd, \
} }
/** @brief Audio QoS direction */
enum {
BT_CODEC_QOS_IN,
BT_CODEC_QOS_OUT,
BT_CODEC_QOS_INOUT
};
/** @brief Codec QoS Framing */ /** @brief Codec QoS Framing */
enum { enum {
BT_CODEC_QOS_UNFRAMED = 0x00, BT_CODEC_QOS_UNFRAMED = 0x00,
@ -295,7 +286,7 @@ enum {
BT_CODEC_QOS_CODED = BIT(2), BT_CODEC_QOS_CODED = BIT(2),
}; };
/** @def BT_CODEC_QOS_IN_UNFRAMED /** @def BT_CODEC_QOS_UNFRAMED
* @brief Helper to declare Input Unframed bt_codec_qos * @brief Helper to declare Input Unframed bt_codec_qos
* *
* @param _interval SDU interval (usec) * @param _interval SDU interval (usec)
@ -304,36 +295,11 @@ enum {
* @param _latency Maximum Transport Latency (msec) * @param _latency Maximum Transport Latency (msec)
* @param _pd Presentation Delay (usec) * @param _pd Presentation Delay (usec)
*/ */
#define BT_CODEC_QOS_IN_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \ #define BT_CODEC_QOS_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS(BT_CODEC_QOS_IN, _interval, BT_CODEC_QOS_UNFRAMED, \ BT_CODEC_QOS(_interval, BT_CODEC_QOS_UNFRAMED, BT_CODEC_QOS_2M, _sdu, \
BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd) _rtn, _latency, _pd)
/** @def BT_CODEC_QOS_OUT_UNFRAMED /** @def BT_CODEC_QOS_FRAMED
* @brief Helper to declare Output Unframed bt_code *
* @param _interval SDU interval (usec)
* @param _sdu Maximum SDU Size
* @param _rtn Retransmission number
* @param _latency Maximum Transport Latency (msec)
* @param _pd Presentation Delay (usec)
*/
#define BT_CODEC_QOS_OUT_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, _interval, BT_CODEC_QOS_UNFRAMED, \
BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
/** @def BT_CODEC_QOS_INOUT_UNFRAMED
* @brief Helper to declare Input/Output Unframed bt_codec_qos
*
* @param _interval SDU interval (usec)
* @param _sdu Maximum SDU Size
* @param _rtn Retransmission number
* @param _latency Maximum Transport Latency (msec)
* @param _pd Presentation Delay (usec)
*/
#define BT_CODEC_QOS_INOUT_UNFRAMED(_interval, _sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS(BT_CODEC_QOS_INOUT, _interval, BT_CODEC_QOS_UNFRAMED, \
BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
/** @def BT_CODEC_QOS_IN_FRAMED
* @brief Helper to declare Input Framed bt_codec_qos * @brief Helper to declare Input Framed bt_codec_qos
* *
* @param _interval SDU interval (usec) * @param _interval SDU interval (usec)
@ -342,45 +308,12 @@ enum {
* @param _latency Maximum Transport Latency (msec) * @param _latency Maximum Transport Latency (msec)
* @param _pd Presentation Delay (usec) * @param _pd Presentation Delay (usec)
*/ */
#define BT_CODEC_QOS_IN_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \ #define BT_CODEC_QOS_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS(BT_CODEC_QOS_IN, _interval, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(_interval, BT_CODEC_QOS_FRAMED, BT_CODEC_QOS_2M, _sdu, \
BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd) _rtn, _latency, _pd)
/** @def BT_CODEC_QOS_OUT_FRAMED
* @brief Helper to declare Output Framed bt_codec_qos
*
* @param _interval SDU interval (usec)
* @param _sdu Maximum SDU Size
* @param _rtn Retransmission number
* @param _latency Maximum Transport Latency (msec)
* @param _pd Presentation Delay (usec)
*/
#define BT_CODEC_QOS_OUT_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, _interval, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
/** @def BT_CODEC_QOS_INOUT_FRAMED
* @brief Helper to declare Output Framed bt_codec_qos
*
* @param _interval SDU interval (usec)
* @param _sdu Maximum SDU Size
* @param _rtn Retransmission number
* @param _latency Maximum Transport Latency (msec)
* @param _pd Presentation Delay (usec)
*/
#define BT_CODEC_QOS_INOUT_FRAMED(_interval, _sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS(BT_CODEC_QOS_INOUT, _interval, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, _sdu, _rtn, _latency, _pd)
/** @brief Codec QoS structure. */ /** @brief Codec QoS structure. */
struct bt_codec_qos { struct bt_codec_qos {
/** QoS direction
*
* This shall be set to BT_CODEC_QOS_OUT for broadcast sources, and
* shall be set to BT_CODEC_QOS_IN for broadcast sinks.
*/
uint8_t dir;
/** QoS PHY */ /** QoS PHY */
uint8_t phy; uint8_t phy;
@ -485,402 +418,402 @@ struct bt_audio_lc3_preset {
#define BT_AUDIO_LC3_UNICAST_PRESET_8_1_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_8_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_8_1, \ BT_CODEC_LC3_CONFIG_8_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(26u, 2u, 8u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(26u, 2u, 8u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_8_2_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_8_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_8_2, \ BT_CODEC_LC3_CONFIG_8_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(30u, 2u, 10u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(30u, 2u, 10u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_16_1_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_16_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_16_1, \ BT_CODEC_LC3_CONFIG_16_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(30u, 2u, 8u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(30u, 2u, 8u, 40000u) \
) )
/** Mandatory to support as both unicast client and server */ /** Mandatory to support as both unicast client and server */
#define BT_AUDIO_LC3_UNICAST_PRESET_16_2_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_16_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_16_2, \ BT_CODEC_LC3_CONFIG_16_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(40u, 2u, 10u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(40u, 2u, 10u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_24_1_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_24_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_24_1, \ BT_CODEC_LC3_CONFIG_24_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(45u, 2u, 8u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(45u, 2u, 8u, 40000u) \
) )
/** Mandatory to support as unicast server */ /** Mandatory to support as unicast server */
#define BT_AUDIO_LC3_UNICAST_PRESET_24_2_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_24_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_24_2, \ BT_CODEC_LC3_CONFIG_24_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(60u, 2u, 10u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(60u, 2u, 10u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_32_1_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_32_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_32_1, \ BT_CODEC_LC3_CONFIG_32_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(60u, 2u, 8u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(60u, 2u, 8u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_32_2_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_32_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_32_2, \ BT_CODEC_LC3_CONFIG_32_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(80u, 2u, 10u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(80u, 2u, 10u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_441_1_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_441_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_441_1, \ BT_CODEC_LC3_CONFIG_441_1, \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, 8163u, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(8163u, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, 97u, 5u, 24u, 40000u) \ BT_CODEC_QOS_2M, 97u, 5u, 24u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_441_2_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_441_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_441_2, \ BT_CODEC_LC3_CONFIG_441_2, \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, 10884u, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(10884u, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, 130u, 5u, 31u, 40000u) \ BT_CODEC_QOS_2M, 130u, 5u, 31u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_1_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_1, \ BT_CODEC_LC3_CONFIG_48_1, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(75u, 5u, 15u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(75u, 5u, 15u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_2_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_2, \ BT_CODEC_LC3_CONFIG_48_2, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(100u, 5u, 20u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(100u, 5u, 20u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_3_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_3_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_3, \ BT_CODEC_LC3_CONFIG_48_3, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(90u, 5u, 15u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(90u, 5u, 15u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_4_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_4_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_4, \ BT_CODEC_LC3_CONFIG_48_4, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(120u, 5u, 20u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(120u, 5u, 20u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_5_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_5_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_5, \ BT_CODEC_LC3_CONFIG_48_5, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(117u, 5u, 15u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(117u, 5u, 15u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_6_1 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_6_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_6, \ BT_CODEC_LC3_CONFIG_48_6, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(155u, 5u, 20u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(155u, 5u, 20u, 40000u) \
) )
/* Following presets are for unicast high reliability audio data */ /* Following presets are for unicast high reliability audio data */
#define BT_AUDIO_LC3_UNICAST_PRESET_8_1_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_8_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_8_1, \ BT_CODEC_LC3_CONFIG_8_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(26u, 13u, 75u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(26u, 13u, 75u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_8_2_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_8_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_8_2, \ BT_CODEC_LC3_CONFIG_8_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(30u, 13u, 95u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(30u, 13u, 95u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_16_1_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_16_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_16_1, \ BT_CODEC_LC3_CONFIG_16_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(30u, 13u, 75u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(30u, 13u, 75u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_16_2_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_16_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_16_2, \ BT_CODEC_LC3_CONFIG_16_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(40u, 13u, 95u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(40u, 13u, 95u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_24_1_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_24_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_24_1, \ BT_CODEC_LC3_CONFIG_24_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(45u, 13u, 75u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(45u, 13u, 75u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_24_2_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_24_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_24_2, \ BT_CODEC_LC3_CONFIG_24_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(60u, 13u, 95u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(60u, 13u, 95u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_32_1_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_32_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_32_1, \ BT_CODEC_LC3_CONFIG_32_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(60u, 13u, 75u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(60u, 13u, 75u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_32_2_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_32_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_32_2, \ BT_CODEC_LC3_CONFIG_32_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(80u, 13u, 95u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(80u, 13u, 95u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_441_1_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_441_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_441_1, \ BT_CODEC_LC3_CONFIG_441_1, \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, 8163u, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(8163u, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, 97u, 13u, 80u, 40000u) \ BT_CODEC_QOS_2M, 97u, 13u, 80u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_441_2_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_441_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_441_2, \ BT_CODEC_LC3_CONFIG_441_2, \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, 10884u, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(10884u, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, 130u, 13u, 85u, 40000u) \ BT_CODEC_QOS_2M, 130u, 13u, 85u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_1_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_1, \ BT_CODEC_LC3_CONFIG_48_1, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(75u, 13u, 75u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(75u, 13u, 75u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_2_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_2, \ BT_CODEC_LC3_CONFIG_48_2, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(100u, 13u, 95u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(100u, 13u, 95u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_3_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_3_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_3, \ BT_CODEC_LC3_CONFIG_48_3, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(90u, 13u, 75u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(90u, 13u, 75u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_4_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_4_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_4, \ BT_CODEC_LC3_CONFIG_48_4, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(120u, 13u, 100u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(120u, 13u, 100u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_5_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_5_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_5, \ BT_CODEC_LC3_CONFIG_48_5, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(117u, 13u, 75u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(117u, 13u, 75u, 40000u) \
) )
#define BT_AUDIO_LC3_UNICAST_PRESET_48_6_2 \ #define BT_AUDIO_LC3_UNICAST_PRESET_48_6_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_6, \ BT_CODEC_LC3_CONFIG_48_6, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(155u, 13u, 100u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(155u, 13u, 100u, 40000u) \
) )
/* LC3 Broadcast presets defined by table 6.4 in the BAP v1.0 specification */ /* LC3 Broadcast presets defined by table 6.4 in the BAP v1.0 specification */
#define BT_AUDIO_LC3_BROADCAST_PRESET_8_1_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_8_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_8_1, \ BT_CODEC_LC3_CONFIG_8_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(26u, 2u, 8u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(26u, 2u, 8u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_8_2_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_8_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_8_2, \ BT_CODEC_LC3_CONFIG_8_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(30u, 2u, 10u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(30u, 2u, 10u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_16_1_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_16_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_16_1, \ BT_CODEC_LC3_CONFIG_16_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(30u, 2u, 8u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(30u, 2u, 8u, 40000u) \
) )
/** Mandatory to support as both broadcast source and sink */ /** Mandatory to support as both broadcast source and sink */
#define BT_AUDIO_LC3_BROADCAST_PRESET_16_2_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_16_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_16_2, \ BT_CODEC_LC3_CONFIG_16_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(40u, 2u, 10u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(40u, 2u, 10u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_24_1_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_24_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_24_1, \ BT_CODEC_LC3_CONFIG_24_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(45u, 2u, 8u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(45u, 2u, 8u, 40000u) \
) )
/** Mandatory to support as broadcast sink */ /** Mandatory to support as broadcast sink */
#define BT_AUDIO_LC3_BROADCAST_PRESET_24_2_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_24_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_24_2, \ BT_CODEC_LC3_CONFIG_24_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(60u, 2u, 10u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(60u, 2u, 10u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_32_1_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_32_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_32_1, \ BT_CODEC_LC3_CONFIG_32_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(60u, 2u, 8u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(60u, 2u, 8u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_32_2_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_32_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_32_2, \ BT_CODEC_LC3_CONFIG_32_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(80u, 2u, 10u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(80u, 2u, 10u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_441_1_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_441_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_441_1, \ BT_CODEC_LC3_CONFIG_441_1, \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, 8163u, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(8163u, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, 97u, 4u, 24u, 40000u) \ BT_CODEC_QOS_2M, 97u, 4u, 24u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_441_2_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_441_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_441_2, \ BT_CODEC_LC3_CONFIG_441_2, \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, 10884u, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(10884u, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, 130u, 4u, 31u, 40000u) \ BT_CODEC_QOS_2M, 130u, 4u, 31u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_1_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_1_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_1, \ BT_CODEC_LC3_CONFIG_48_1, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(75u, 4u, 15u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(75u, 4u, 15u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_2_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_2_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_2, \ BT_CODEC_LC3_CONFIG_48_2, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(100u, 4u, 20u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(100u, 4u, 20u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_3_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_3_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_3, \ BT_CODEC_LC3_CONFIG_48_3, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(90u, 4u, 15u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(90u, 4u, 15u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_4_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_4_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_4, \ BT_CODEC_LC3_CONFIG_48_4, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(120u, 4u, 20u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(120u, 4u, 20u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_5_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_5_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_5, \ BT_CODEC_LC3_CONFIG_48_5, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(117u, 4u, 15u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(117u, 4u, 15u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_6_1 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_6_1 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_6, \ BT_CODEC_LC3_CONFIG_48_6, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(155u, 4u, 20u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(155u, 4u, 20u, 40000u) \
) )
/* Following presets are for broadcast high reliability audio data */ /* Following presets are for broadcast high reliability audio data */
#define BT_AUDIO_LC3_BROADCAST_PRESET_8_1_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_8_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_8_1, \ BT_CODEC_LC3_CONFIG_8_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(26u, 4u, 45u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(26u, 4u, 45u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_8_2_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_8_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_8_2, \ BT_CODEC_LC3_CONFIG_8_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(30u, 4u, 60u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(30u, 4u, 60u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_16_1_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_16_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_16_1, \ BT_CODEC_LC3_CONFIG_16_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(30u, 4u, 45u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(30u, 4u, 45u, 40000u) \
) )
/** Mandatory to support as both broadcast source and sink */ /** Mandatory to support as both broadcast source and sink */
#define BT_AUDIO_LC3_BROADCAST_PRESET_16_2_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_16_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_16_2, \ BT_CODEC_LC3_CONFIG_16_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(40u, 4u, 60u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(40u, 4u, 60u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_24_1_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_24_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_24_1, \ BT_CODEC_LC3_CONFIG_24_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(45u, 4u, 45u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(45u, 4u, 45u, 40000u) \
) )
/** Mandatory to support as broadcast sink */ /** Mandatory to support as broadcast sink */
#define BT_AUDIO_LC3_BROADCAST_PRESET_24_2_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_24_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_24_2, \ BT_CODEC_LC3_CONFIG_24_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(60u, 4u, 60u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(60u, 4u, 60u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_32_1_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_32_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_32_1, \ BT_CODEC_LC3_CONFIG_32_1, \
BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(60u, 4u, 45u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(60u, 4u, 45u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_32_2_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_32_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_32_2, \ BT_CODEC_LC3_CONFIG_32_2, \
BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(80u, 4u, 60u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(80u, 4u, 60u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_441_1_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_441_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_441_1, \ BT_CODEC_LC3_CONFIG_441_1, \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, 8163u, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(8163u, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, 97u, 4u, 54u, 40000u) \ BT_CODEC_QOS_2M, 97u, 4u, 54u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_441_2_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_441_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_441_2, \ BT_CODEC_LC3_CONFIG_441_2, \
BT_CODEC_QOS(BT_CODEC_QOS_OUT, 10884u, BT_CODEC_QOS_FRAMED, \ BT_CODEC_QOS(10884u, BT_CODEC_QOS_FRAMED, \
BT_CODEC_QOS_2M, 130u, 4u, 60u, 40000u) \ BT_CODEC_QOS_2M, 130u, 4u, 60u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_1_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_1_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_1, \ BT_CODEC_LC3_CONFIG_48_1, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(75u, 4u, 50u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(75u, 4u, 50u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_2_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_2_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_2, \ BT_CODEC_LC3_CONFIG_48_2, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(100u, 4u, 65u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(100u, 4u, 65u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_3_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_3_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_3, \ BT_CODEC_LC3_CONFIG_48_3, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(90u, 4u, 50u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(90u, 4u, 50u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_4_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_4_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_4, \ BT_CODEC_LC3_CONFIG_48_4, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(120u, 4u, 65u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(120u, 4u, 65u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_5_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_5_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_5, \ BT_CODEC_LC3_CONFIG_48_5, \
BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(117u, 4u, 50u, 40000u) \ BT_CODEC_LC3_QOS_7_5_UNFRAMED(117u, 4u, 50u, 40000u) \
) )
#define BT_AUDIO_LC3_BROADCAST_PRESET_48_6_2 \ #define BT_AUDIO_LC3_BROADCAST_PRESET_48_6_2 \
BT_AUDIO_LC3_PRESET( \ BT_AUDIO_LC3_PRESET( \
BT_CODEC_LC3_CONFIG_48_6, \ BT_CODEC_LC3_CONFIG_48_6, \
BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(155u, 4u, 65u, 40000u) \ BT_CODEC_LC3_QOS_10_UNFRAMED(155u, 4u, 65u, 40000u) \
) )
/** @brief Audio stream structure. /** @brief Audio stream structure.

View file

@ -372,45 +372,25 @@ struct bt_codec_lc3_frame_len {
/** @def BT_CODEC_LC3_QOS_7_5 /** @def BT_CODEC_LC3_QOS_7_5
* @brief Helper to declare LC3 codec QoS for 7.5ms interval * @brief Helper to declare LC3 codec QoS for 7.5ms interval
*/ */
#define BT_CODEC_LC3_QOS_7_5(_dir, _framing, _sdu, _rtn, _latency, _pd) \ #define BT_CODEC_LC3_QOS_7_5(_framing, _sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS(_dir, 7500u, _framing, BT_CODEC_QOS_2M, _sdu, _rtn, \ BT_CODEC_QOS(7500u, _framing, BT_CODEC_QOS_2M, _sdu, _rtn, \
_latency, _pd) _latency, _pd)
/** @def BT_CODEC_LC3_QOS_7_5_IN_UNFRAMED /** @def BT_CODEC_LC3_QOS_7_5_UNFRAMED
* @brief Helper to declare LC3 codec QoS for 7.5ms interval unframed input * @brief Helper to declare LC3 codec QoS for 7.5ms interval unframed input
*/ */
#define BT_CODEC_LC3_QOS_7_5_IN_UNFRAMED(_sdu, _rtn, _latency, _pd) \ #define BT_CODEC_LC3_QOS_7_5_UNFRAMED(_sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS_IN_UNFRAMED(7500u, _sdu, _rtn, _latency, _pd) BT_CODEC_QOS_UNFRAMED(7500u, _sdu, _rtn, _latency, _pd)
/** @def BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED
* @brief Helper to declare LC3 codec QoS for 7.5ms interval unframed output
*/
#define BT_CODEC_LC3_QOS_7_5_OUT_UNFRAMED(_sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS_OUT_UNFRAMED(7500u, _sdu, _rtn, _latency, _pd)
/** @def BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED
* @brief Helper to declare LC3 codec QoS for 7.5ms interval unframed in/out
*/
#define BT_CODEC_LC3_QOS_7_5_INOUT_UNFRAMED(_sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS_INOUT_UNFRAMED(7500u, _sdu, _rtn, _latency, _pd)
/** @def BT_CODEC_LC3_QOS_10 /** @def BT_CODEC_LC3_QOS_10
* @brief Helper to declare LC3 codec QoS for 10ms frame internal * @brief Helper to declare LC3 codec QoS for 10ms frame internal
*/ */
#define BT_CODEC_LC3_QOS_10(_dir, _framing, _sdu, _rtn, _latency, _pd) \ #define BT_CODEC_LC3_QOS_10(_framing, _sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS(_dir, 10000u, _framing, BT_CODEC_QOS_2M, _sdu, _rtn, \ BT_CODEC_QOS(10000u, _framing, BT_CODEC_QOS_2M, _sdu, _rtn, \
_latency, _pd) _latency, _pd)
/** @def BT_CODEC_LC3_QOS_10_IN_UNFRAMED /** @def BT_CODEC_LC3_QOS_10_UNFRAMED
* @brief Helper to declare LC3 codec QoS for 10ms interval unframed input * @brief Helper to declare LC3 codec QoS for 10ms interval unframed input
*/ */
#define BT_CODEC_LC3_QOS_10_IN_UNFRAMED(_sdu, _rtn, _latency, _pd) \ #define BT_CODEC_LC3_QOS_10_UNFRAMED(_sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS_IN_UNFRAMED(10000u, _sdu, _rtn, _latency, _pd) BT_CODEC_QOS_UNFRAMED(10000u, _sdu, _rtn, _latency, _pd)
/** @def BT_CODEC_LC3_QOS_10_OUT_UNFRAMED
* @brief Helper to declare LC3 codec QoS for 10ms interval unframed output
*/
#define BT_CODEC_LC3_QOS_10_OUT_UNFRAMED(_sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS_OUT_UNFRAMED(10000u, _sdu, _rtn, _latency, _pd)
/** @def BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED
* @brief Helper to declare LC3 codec QoS for 10ms interval unframed in/out
*/
#define BT_CODEC_LC3_QOS_10_INOUT_UNFRAMED(_sdu, _rtn, _latency, _pd) \
BT_CODEC_QOS_INOUT_UNFRAMED(10000u, _sdu, _rtn, _latency, _pd)
#ifdef __cplusplus #ifdef __cplusplus
} }

View file

@ -93,9 +93,9 @@ static void print_codec(const struct bt_codec *codec)
static void print_qos(struct bt_codec_qos *qos) static void print_qos(struct bt_codec_qos *qos)
{ {
printk("QoS: dir 0x%02x interval %u framing 0x%02x phy 0x%02x sdu %u " printk("QoS: interval %u framing 0x%02x phy 0x%02x sdu %u "
"rtn %u latency %u pd %u\n", "rtn %u latency %u pd %u\n",
qos->dir, qos->interval, qos->framing, qos->phy, qos->sdu, qos->interval, qos->framing, qos->phy, qos->sdu,
qos->rtn, qos->latency, qos->pd); qos->rtn, qos->latency, qos->pd);
} }

View file

@ -724,6 +724,7 @@ void ascs_ep_init(struct bt_audio_ep *ep, uint8_t id)
ep->iso.qos = &ep->iso_qos; ep->iso.qos = &ep->iso_qos;
ep->iso.qos->rx = &ep->iso_rx; ep->iso.qos->rx = &ep->iso_rx;
ep->iso.qos->tx = &ep->iso_tx; ep->iso.qos->tx = &ep->iso_tx;
ep->dir = ASE_DIR(id);
} }
static void ase_init(struct bt_ascs_ase *ase, uint8_t id) static void ase_init(struct bt_ascs_ase *ase, uint8_t id)

View file

@ -771,6 +771,7 @@ static void broadcast_sink_ep_init(struct bt_audio_ep *ep)
ep->iso.qos = &ep->iso_qos; ep->iso.qos = &ep->iso_qos;
ep->iso.qos->rx = &ep->iso_rx; ep->iso.qos->rx = &ep->iso_rx;
ep->iso.qos->tx = &ep->iso_tx; ep->iso.qos->tx = &ep->iso_tx;
ep->dir = BT_AUDIO_SINK;
} }
static struct bt_audio_ep *broadcast_sink_new_ep(uint8_t index) static struct bt_audio_ep *broadcast_sink_new_ep(uint8_t index)
@ -823,9 +824,8 @@ static int bt_audio_broadcast_sink_setup_stream(uint8_t index,
*/ */
stream->iso->qos->rx = &sink_chan_io_qos; stream->iso->qos->rx = &sink_chan_io_qos;
stream->iso->qos->tx = NULL; stream->iso->qos->tx = NULL;
codec_qos.dir = BT_CODEC_QOS_IN;
stream->qos = &codec_qos; stream->qos = &codec_qos;
err = bt_audio_codec_qos_to_iso_qos(stream->iso->qos, &codec_qos); err = bt_audio_codec_qos_to_iso_qos(stream, &codec_qos);
if (err) { if (err) {
BT_ERR("Unable to convert codec QoS to ISO QoS"); BT_ERR("Unable to convert codec QoS to ISO QoS");
return err; return err;

View file

@ -172,6 +172,7 @@ static void broadcast_source_ep_init(struct bt_audio_ep *ep)
ep->iso.qos = &ep->iso_qos; ep->iso.qos = &ep->iso_qos;
ep->iso.qos->rx = &ep->iso_rx; ep->iso.qos->rx = &ep->iso_rx;
ep->iso.qos->tx = &ep->iso_tx; ep->iso.qos->tx = &ep->iso_tx;
ep->dir = BT_AUDIO_SOURCE;
} }
static struct bt_audio_ep *broadcast_source_new_ep(uint8_t index) static struct bt_audio_ep *broadcast_source_new_ep(uint8_t index)
@ -219,7 +220,7 @@ static int bt_audio_broadcast_source_setup_stream(uint8_t index,
bt_audio_stream_attach(NULL, stream, ep, codec); bt_audio_stream_attach(NULL, stream, ep, codec);
stream->qos = qos; stream->qos = qos;
err = bt_audio_codec_qos_to_iso_qos(stream->iso->qos, qos); err = bt_audio_codec_qos_to_iso_qos(stream, qos);
if (err) { if (err) {
BT_ERR("Unable to convert codec QoS to ISO QoS"); BT_ERR("Unable to convert codec QoS to ISO QoS");
return err; return err;

View file

@ -33,6 +33,7 @@ struct bt_audio_broadcast_sink;
struct bt_audio_ep { struct bt_audio_ep {
uint8_t type; uint8_t type;
uint8_t dir;
uint16_t handle; uint16_t handle;
uint16_t cp_handle; uint16_t cp_handle;
uint8_t cig_id; uint8_t cig_id;

View file

@ -126,21 +126,19 @@ done:
return -ENOSPC; return -ENOSPC;
} }
int bt_audio_codec_qos_to_iso_qos(struct bt_iso_chan_qos *qos, int bt_audio_codec_qos_to_iso_qos(struct bt_audio_stream *stream,
struct bt_codec_qos *codec) const struct bt_codec_qos *codec)
{ {
struct bt_iso_chan_qos *qos = stream->iso->qos;
struct bt_iso_chan_io_qos *io; struct bt_iso_chan_io_qos *io;
switch (codec->dir) { switch (stream->ep->dir) {
case BT_CODEC_QOS_IN: case BT_AUDIO_SINK:
io = qos->rx; io = qos->rx;
break; break;
case BT_CODEC_QOS_OUT: case BT_AUDIO_SOURCE:
io = qos->tx; io = qos->tx;
break; break;
case BT_CODEC_QOS_INOUT:
io = qos->rx = qos->tx;
break;
default: default:
return -EINVAL; return -EINVAL;
} }
@ -546,7 +544,7 @@ int bt_audio_stream_qos(struct bt_conn *conn,
return -EINVAL; return -EINVAL;
} }
err = bt_audio_codec_qos_to_iso_qos(stream->iso->qos, qos); err = bt_audio_codec_qos_to_iso_qos(stream, qos);
if (err) { if (err) {
BT_DBG("Unable to convert codec QoS to ISO QoS: %d", BT_DBG("Unable to convert codec QoS to ISO QoS: %d",
err); err);

View file

@ -45,8 +45,8 @@ void bt_audio_stream_attach(struct bt_conn *conn, struct bt_audio_stream *stream
struct bt_audio_ep *ep, struct bt_audio_ep *ep,
struct bt_codec *codec); struct bt_codec *codec);
int bt_audio_codec_qos_to_iso_qos(struct bt_iso_chan_qos *qos, int bt_audio_codec_qos_to_iso_qos(struct bt_audio_stream *stream,
struct bt_codec_qos *codec); const struct bt_codec_qos *codec);
void bt_audio_stream_detach(struct bt_audio_stream *stream); void bt_audio_stream_detach(struct bt_audio_stream *stream);

View file

@ -130,7 +130,7 @@ static struct bt_iso_chan_ops unicast_client_iso_ops = {
}; };
static void unicast_client_ep_init(struct bt_audio_ep *ep, uint8_t type, static void unicast_client_ep_init(struct bt_audio_ep *ep, uint8_t type,
uint16_t handle, uint8_t id) uint16_t handle, uint8_t id, uint8_t dir)
{ {
BT_DBG("ep %p type 0x%02x handle 0x%04x id 0x%02x", ep, type, handle, BT_DBG("ep %p type 0x%02x handle 0x%04x id 0x%02x", ep, type, handle,
id); id);
@ -143,6 +143,7 @@ static void unicast_client_ep_init(struct bt_audio_ep *ep, uint8_t type,
ep->iso.qos = &ep->iso_qos; ep->iso.qos = &ep->iso_qos;
ep->iso.qos->rx = &ep->iso_rx; ep->iso.qos->rx = &ep->iso_rx;
ep->iso.qos->tx = &ep->iso_tx; ep->iso.qos->tx = &ep->iso_tx;
ep->dir = dir;
} }
static struct bt_audio_ep *unicast_client_ep_find(struct bt_conn *conn, static struct bt_audio_ep *unicast_client_ep_find(struct bt_conn *conn,
@ -201,7 +202,7 @@ static struct bt_audio_ep *unicast_client_ep_new(struct bt_conn *conn,
if (!ep->handle) { if (!ep->handle) {
unicast_client_ep_init(ep, BT_AUDIO_EP_REMOTE, handle, unicast_client_ep_init(ep, BT_AUDIO_EP_REMOTE, handle,
0x00); 0x00, dir);
return ep; return ep;
} }
} }

View file

@ -239,9 +239,9 @@ static void set_stream(struct bt_audio_stream *stream)
#if defined(CONFIG_BT_AUDIO_UNICAST) #if defined(CONFIG_BT_AUDIO_UNICAST)
static void print_qos(struct bt_codec_qos *qos) static void print_qos(struct bt_codec_qos *qos)
{ {
shell_print(ctx_shell, "QoS: dir 0x%02x interval %u framing 0x%02x " shell_print(ctx_shell, "QoS: interval %u framing 0x%02x "
"phy 0x%02x sdu %u rtn %u latency %u pd %u", "phy 0x%02x sdu %u rtn %u latency %u pd %u",
qos->dir, qos->interval, qos->framing, qos->phy, qos->sdu, qos->interval, qos->framing, qos->phy, qos->sdu,
qos->rtn, qos->latency, qos->pd); qos->rtn, qos->latency, qos->pd);
} }

View file

@ -42,8 +42,8 @@ void print_codec(const struct bt_codec *codec)
void print_qos(const struct bt_codec_qos *qos) void print_qos(const struct bt_codec_qos *qos)
{ {
printk("QoS: dir 0x%02x interval %u framing 0x%02x phy 0x%02x sdu %u " printk("QoS: interval %u framing 0x%02x phy 0x%02x sdu %u "
"rtn %u latency %u pd %u\n", "rtn %u latency %u pd %u\n",
qos->dir, qos->interval, qos->framing, qos->phy, qos->sdu, qos->interval, qos->framing, qos->phy, qos->sdu,
qos->rtn, qos->latency, qos->pd); qos->rtn, qos->latency, qos->pd);
} }