All of lore.kernel.org
 help / color / mirror / Atom feed
From: Luiz Augusto von Dentz <luiz.dentz@gmail.com>
To: linux-bluetooth@vger.kernel.org
Subject: [PATCH BlueZ v4 3/6] shared/lc3: Add definition for broadcast configurations
Date: Wed, 13 Mar 2024 15:43:57 -0400	[thread overview]
Message-ID: <20240313194400.1397477-3-luiz.dentz@gmail.com> (raw)
In-Reply-To: <20240313194400.1397477-1-luiz.dentz@gmail.com>

From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>

This adds defines for broadcast settings as they don't really match
unicast when it comes to RTN and Latency.
---
 src/shared/bap-defs.h |  97 ++++++++++
 src/shared/bap.h      |  84 +-------
 src/shared/lc3.h      | 434 ++++++++++++++++++++++++++++++++++++++----
 3 files changed, 500 insertions(+), 115 deletions(-)
 create mode 100644 src/shared/bap-defs.h

diff --git a/src/shared/bap-defs.h b/src/shared/bap-defs.h
new file mode 100644
index 000000000000..2467e816ffa9
--- /dev/null
+++ b/src/shared/bap-defs.h
@@ -0,0 +1,97 @@
+/* SPDX-License-Identifier: LGPL-2.1-or-later */
+/*
+ *
+ *  BlueZ - Bluetooth protocol stack for Linux
+ *
+ *  Copyright (C) 2022  Intel Corporation. All rights reserved.
+ *  Copyright 2023-2024 NXP
+ *
+ */
+
+#ifndef SRC_SHARED_BAP_DEFS_H_
+#define SRC_SHARED_BAP_DEFS_H_
+
+#ifndef __packed
+#define __packed __attribute__((packed))
+#endif
+
+#define BT_BAP_SINK			0x01
+#define	BT_BAP_SOURCE			0x02
+#define	BT_BAP_BCAST_SOURCE		0x03
+#define	BT_BAP_BCAST_SINK		0x04
+
+#define BT_BAP_STREAM_TYPE_UCAST	0x01
+#define	BT_BAP_STREAM_TYPE_BCAST	0x02
+
+#define BT_BAP_STREAM_STATE_IDLE	0x00
+#define BT_BAP_STREAM_STATE_CONFIG	0x01
+#define BT_BAP_STREAM_STATE_QOS		0x02
+#define BT_BAP_STREAM_STATE_ENABLING	0x03
+#define BT_BAP_STREAM_STATE_STREAMING	0x04
+#define BT_BAP_STREAM_STATE_DISABLING	0x05
+#define BT_BAP_STREAM_STATE_RELEASING	0x06
+
+#define BT_BAP_CONFIG_LATENCY_LOW	0x01
+#define BT_BAP_CONFIG_LATENCY_BALANCED	0x02
+#define BT_BAP_CONFIG_LATENCY_HIGH	0x03
+
+#define BT_BAP_CONFIG_PHY_1M		0x01
+#define BT_BAP_CONFIG_PHY_2M		0x02
+#define BT_BAP_CONFIG_PHY_CODEC		0x03
+
+struct bt_bap_codec {
+	uint8_t  id;
+	uint16_t cid;
+	uint16_t vid;
+} __packed;
+
+struct bt_ltv {
+	uint8_t  len;
+	uint8_t  type;
+	uint8_t  value[];
+} __packed;
+
+struct bt_bap_io_qos {
+	uint32_t interval;	/* Frame interval */
+	uint16_t latency;	/* Transport Latency */
+	uint16_t sdu;		/* Maximum SDU Size */
+	uint8_t  phy;		/* PHY */
+	uint8_t  rtn;		/* Retransmission Effort */
+};
+
+struct bt_bap_ucast_qos {
+	uint8_t  cig_id;
+	uint8_t  cis_id;
+	uint8_t  framing;		/* Frame framing */
+	uint32_t delay;			/* Presentation Delay */
+	uint8_t  target_latency;	/* Target Latency */
+	struct bt_bap_io_qos io_qos;
+};
+
+struct bt_bap_bcast_qos {
+	uint8_t  big;
+	uint8_t  bis;
+	uint8_t  sync_factor;
+	uint8_t  packing;
+	uint8_t  framing;
+	uint8_t  encryption;
+	struct iovec *bcode;
+	uint8_t  options;
+	uint16_t skip;
+	uint16_t sync_timeout;
+	uint8_t  sync_cte_type;
+	uint8_t  mse;
+	uint16_t timeout;
+	uint8_t  pa_sync;
+	struct bt_bap_io_qos io_qos;
+	uint32_t delay;			/* Presentation Delay */
+};
+
+struct bt_bap_qos {
+	union {
+		struct bt_bap_ucast_qos ucast;
+		struct bt_bap_bcast_qos bcast;
+	};
+};
+
+#endif /* SRC_SHARED_BAP_DEFS_H_ */
diff --git a/src/shared/bap.h b/src/shared/bap.h
index b2826719f84f..9839e324905a 100644
--- a/src/shared/bap.h
+++ b/src/shared/bap.h
@@ -10,94 +10,12 @@
 
 #include <stdbool.h>
 #include <inttypes.h>
-
-#ifndef __packed
-#define __packed __attribute__((packed))
-#endif
-
-#define BT_BAP_SINK			0x01
-#define	BT_BAP_SOURCE			0x02
-#define	BT_BAP_BCAST_SOURCE		0x03
-#define	BT_BAP_BCAST_SINK		0x04
-
-#define BT_BAP_STREAM_TYPE_UCAST	0x01
-#define	BT_BAP_STREAM_TYPE_BCAST	0x02
-
-#define BT_BAP_STREAM_STATE_IDLE	0x00
-#define BT_BAP_STREAM_STATE_CONFIG	0x01
-#define BT_BAP_STREAM_STATE_QOS		0x02
-#define BT_BAP_STREAM_STATE_ENABLING	0x03
-#define BT_BAP_STREAM_STATE_STREAMING	0x04
-#define BT_BAP_STREAM_STATE_DISABLING	0x05
-#define BT_BAP_STREAM_STATE_RELEASING	0x06
-
-#define BT_BAP_CONFIG_LATENCY_LOW	0x01
-#define BT_BAP_CONFIG_LATENCY_BALANCED	0x02
-#define BT_BAP_CONFIG_LATENCY_HIGH	0x03
-
-#define BT_BAP_CONFIG_PHY_1M		0x01
-#define BT_BAP_CONFIG_PHY_2M		0x02
-#define BT_BAP_CONFIG_PHY_CODEC		0x03
+#include "src/shared/bap-defs.h"
 
 struct bt_bap;
 struct bt_bap_pac;
 struct bt_bap_stream;
 
-struct bt_bap_codec {
-	uint8_t  id;
-	uint16_t cid;
-	uint16_t vid;
-} __packed;
-
-struct bt_ltv {
-	uint8_t  len;
-	uint8_t  type;
-	uint8_t  value[0];
-} __packed;
-
-struct bt_bap_io_qos {
-	uint32_t interval;	/* Frame interval */
-	uint16_t latency;	/* Transport Latency */
-	uint16_t sdu;		/* Maximum SDU Size */
-	uint8_t  phy;		/* PHY */
-	uint8_t  rtn;		/* Retransmission Effort */
-};
-
-struct bt_bap_ucast_qos {
-	uint8_t  cig_id;
-	uint8_t  cis_id;
-	uint8_t  framing;		/* Frame framing */
-	uint32_t delay;			/* Presentation Delay */
-	uint8_t  target_latency;	/* Target Latency */
-	struct bt_bap_io_qos io_qos;
-};
-
-struct bt_bap_bcast_qos {
-	uint8_t  big;
-	uint8_t  bis;
-	uint8_t  sync_factor;
-	uint8_t  packing;
-	uint8_t  framing;
-	uint8_t  encryption;
-	struct iovec *bcode;
-	uint8_t  options;
-	uint16_t skip;
-	uint16_t sync_timeout;
-	uint8_t  sync_cte_type;
-	uint8_t  mse;
-	uint16_t timeout;
-	uint8_t  pa_sync;
-	struct bt_bap_io_qos io_qos;
-	uint32_t delay;			/* Presentation Delay */
-};
-
-struct bt_bap_qos {
-	union {
-		struct bt_bap_ucast_qos ucast;
-		struct bt_bap_bcast_qos bcast;
-	};
-};
-
 typedef void (*bt_bap_ready_func_t)(struct bt_bap *bap, void *user_data);
 typedef void (*bt_bap_destroy_func_t)(void *user_data);
 typedef void (*bt_bap_debug_func_t)(const char *str, void *user_data);
diff --git a/src/shared/lc3.h b/src/shared/lc3.h
index 1db46217b76e..d74412719306 100644
--- a/src/shared/lc3.h
+++ b/src/shared/lc3.h
@@ -8,6 +8,8 @@
  *
  */
 
+#include "src/shared/bap-defs.h"
+
 #define LC3_ID			0x06
 
 #define LC3_BASE		0x01
@@ -280,6 +282,7 @@
 { \
 	.ucast.cig_id = 0x00, \
 	.ucast.cis_id = 0x00, \
+	.ucast.framing = _frame, \
 	.ucast.delay = _pd, \
 	.ucast.target_latency = _t_lat, \
 	.ucast.io_qos.interval = _interval, \
@@ -304,7 +307,7 @@
 #define LC3_QOS_8_1_1_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_8_1_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_8_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_8_1, \
 					LC3_QOS_8_1_1_RTN)
 #define LC3_QOS_8_1_1 LC3_QOS_8_1_1_AC(1)
 
@@ -314,7 +317,7 @@
 #define LC3_QOS_8_1_2_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_8_1_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_8_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_8_1, \
 					LC3_QOS_8_1_2_RTN)
 #define LC3_QOS_8_1_2 LC3_QOS_8_1_2_AC(1)
 
@@ -324,7 +327,7 @@
 #define LC3_QOS_8_2_1_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_8_2_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_8_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_8_2, \
 					LC3_QOS_8_2_1_RTN)
 #define LC3_QOS_8_2_1 LC3_QOS_8_2_1_AC(1)
 
@@ -334,7 +337,7 @@
 #define LC3_QOS_8_2_2_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_8_2_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_8_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_8_2, \
 					LC3_QOS_8_2_2_RTN)
 #define LC3_QOS_8_2_2 LC3_QOS_8_2_2_AC(1)
 
@@ -344,7 +347,7 @@
 #define LC3_QOS_16_1_1_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_16_1_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_16_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_16_1, \
 					LC3_QOS_16_1_1_RTN)
 #define LC3_QOS_16_1_1 LC3_QOS_16_1_1_AC(1)
 
@@ -354,17 +357,25 @@
 #define LC3_QOS_16_1_2_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_16_1_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_16_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_16_1, \
 					LC3_QOS_16_1_2_RTN)
 #define LC3_QOS_16_1_2 LC3_QOS_16_1_2_AC(1)
 
+#define LC3_QOS_16_1_GS_LATENCY 15u
+#define LC3_QOS_16_1_GS_RTN 1u
+#define LC3_QOS_16_1_GS \
+	LC3_QOS_UCAST_7_5_UNFRAMED(60000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
+					LC3_QOS_16_1_GS_LATENCY, \
+					LC3_CONFIG_FRAME_LEN_16_1, \
+					LC3_QOS_16_1_GS_RTN)
+
 #define LC3_QOS_16_2_1_LATENCY 10u
 #define LC3_QOS_16_2_1_RTN 2u
 
 #define LC3_QOS_16_2_1_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_16_2_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_16_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_16_2, \
 					LC3_QOS_16_2_1_RTN)
 #define LC3_QOS_16_2_1 LC3_QOS_16_2_1_AC(1)
 
@@ -374,17 +385,26 @@
 #define LC3_QOS_16_2_2_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_16_2_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_16_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_16_2, \
 					LC3_QOS_16_2_2_RTN)
 #define LC3_QOS_16_2_2 LC3_QOS_16_2_2_AC(1)
 
+#define LC3_QOS_16_2_GS_LATENCY 20u
+#define LC3_QOS_16_2_GS_RTN 1u
+#define LC3_QOS_16_2_GS \
+	LC3_QOS_UCAST_10_UNFRAMED(60000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
+					LC3_QOS_16_2_GS_LATENCY, \
+					LC3_CONFIG_FRAME_LEN_16_2, \
+					LC3_QOS_16_2_GS_RTN)
+
 #define LC3_QOS_24_1_1_LATENCY 8u
 #define LC3_QOS_24_1_1_RTN 2u
 
 #define LC3_QOS_24_1_1_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_24_1_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_24_1, 2u)
+					(_ac) * LC3_CONFIG_FRAME_LEN_24_1, \
+					LC3_QOS_24_1_1_RTN)
 #define LC3_QOS_24_1_1 LC3_QOS_24_1_1_AC(1)
 
 #define LC3_QOS_24_1_2_LATENCY 75u
@@ -393,7 +413,7 @@
 #define LC3_QOS_24_1_2_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_24_1_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_24_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_24_1, \
 					LC3_QOS_24_1_2_RTN)
 #define LC3_QOS_24_1_2 LC3_QOS_24_1_2_AC(1)
 
@@ -403,7 +423,7 @@
 #define LC3_QOS_24_2_1_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_24_2_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_24_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_24_2, \
 					LC3_QOS_24_2_1_RTN)
 #define LC3_QOS_24_2_1 LC3_QOS_24_2_1_AC(1)
 
@@ -413,7 +433,7 @@
 #define LC3_QOS_24_2_2_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_24_2_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_24_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_24_2, \
 					LC3_QOS_24_2_2_RTN)
 #define LC3_QOS_24_2_2 LC3_QOS_24_2_2_AC(1)
 
@@ -423,7 +443,7 @@
 #define LC3_QOS_32_1_1_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_32_1_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_32_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_32_1, \
 					LC3_QOS_32_1_1_RTN)
 #define LC3_QOS_32_1_1 LC3_QOS_32_1_1_AC(1)
 
@@ -433,17 +453,34 @@
 #define LC3_QOS_32_1_2_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_32_1_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_32_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_32_1, \
 					LC3_QOS_32_1_2_RTN)
 #define LC3_QOS_32_1_2 LC3_QOS_32_1_2_AC(1)
 
+#define LC3_QOS_32_1_GS_LATENCY 15u
+#define LC3_QOS_32_1_GS_RTN 1u
+#define LC3_QOS_32_1_GS \
+	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
+					LC3_QOS_32_1_GS_LATENCY, \
+					LC3_CONFIG_FRAME_LEN_32_1, \
+					LC3_QOS_32_1_GS_RTN)
+
+#define LC3_QOS_32_1_GR_LATENCY 15u
+#define LC3_QOS_32_1_GR_RTN 1u
+#define LC3_QOS_32_1_GR_AC(_ac) \
+	LC3_QOS_UCAST_7_5_UNFRAMED(10000u, BT_BAP_CONFIG_LATENCY_LOW, \
+					LC3_QOS_32_1_GS_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_32_1, \
+					LC3_QOS_32_1_GS_RTN)
+#define LC3_QOS_32_1_GR LC3_QOS_32_1_GR_AC(1)
+
 #define LC3_QOS_32_2_1_LATENCY 10u
 #define LC3_QOS_32_2_1_RTN 2u
 
 #define LC3_QOS_32_2_1_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_32_2_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_32_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_32_2, \
 					LC3_QOS_32_2_1_RTN)
 #define LC3_QOS_32_2_1 LC3_QOS_32_2_1_AC(1)
 
@@ -453,10 +490,27 @@
 #define LC3_QOS_32_2_2_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_32_2_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_32_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_32_2, \
 					LC3_QOS_32_2_2_RTN)
 #define LC3_QOS_32_2_2 LC3_QOS_32_2_2_AC(1)
 
+#define LC3_QOS_32_2_GS_LATENCY 20u
+#define LC3_QOS_32_2_GS_RTN 1u
+#define LC3_QOS_32_2_GS \
+	LC3_QOS_UCAST_10_UNFRAMED(60000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
+					LC3_QOS_32_2_GS_LATENCY, \
+					LC3_CONFIG_FRAME_LEN_32_2, \
+					LC3_QOS_32_2_GS_RTN)
+
+#define LC3_QOS_32_2_GR_LATENCY 20u
+#define LC3_QOS_32_2_GR_RTN 1u
+#define LC3_QOS_32_2_GR_AC(_ac) \
+	LC3_QOS_UCAST_10_UNFRAMED(10000u, BT_BAP_CONFIG_LATENCY_LOW, \
+					LC3_QOS_32_2_GR_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_32_2, \
+					LC3_QOS_32_2_GR_RTN)
+#define LC3_QOS_32_2_GR LC3_QOS_32_2_GR_AC(1)
+
 #define LC3_QOS_44_1_INTERVAL 8163u
 #define LC3_QOS_44_1_1_LATENCY 24u
 #define LC3_QOS_44_1_1_RTN 5u
@@ -465,7 +519,7 @@
 	LC3_QOS_UCAST_FRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_44_1_INTERVAL, \
 					LC3_QOS_44_1_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_44_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_44_1, \
 					LC3_QOS_44_1_1_RTN)
 #define LC3_QOS_44_1_1 LC3_QOS_44_1_1_AC(1)
 
@@ -476,7 +530,7 @@
 	LC3_QOS_UCAST_FRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_44_1_INTERVAL, \
 					LC3_QOS_44_1_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_44_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_44_1, \
 					LC3_QOS_44_1_2_RTN)
 #define LC3_QOS_44_1_2 LC3_QOS_44_1_2_AC(1)
 
@@ -488,7 +542,7 @@
 	LC3_QOS_UCAST_FRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_44_2_INTERVAL, \
 					LC3_QOS_44_2_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_44_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_44_2, \
 					LC3_QOS_44_2_1_RTN)
 #define LC3_QOS_44_2_1 LC3_QOS_44_2_1_AC(1)
 
@@ -499,7 +553,7 @@
 	LC3_QOS_UCAST_FRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_44_2_INTERVAL, \
 					LC3_QOS_44_2_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_44_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_44_2, \
 					LC3_QOS_44_2_2_RTN)
 #define LC3_QOS_44_2_2 LC3_QOS_44_2_2_AC(1)
 
@@ -509,7 +563,7 @@
 #define LC3_QOS_48_1_1_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_1_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_1,\
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_1,\
 					LC3_QOS_48_1_1_RTN)
 #define LC3_QOS_48_1_1 LC3_QOS_48_1_1_AC(1)
 
@@ -519,17 +573,36 @@
 #define LC3_QOS_48_1_2_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_1_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_1, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_1, \
 					LC3_QOS_48_1_2_RTN)
 #define LC3_QOS_48_1_2 LC3_QOS_48_1_2_AC(1)
 
+#define LC3_QOS_48_1_GS_LATENCY 15u
+#define LC3_QOS_48_1_GS_RTN 1u
+
+#define LC3_QOS_48_1_GS \
+	LC3_QOS_UCAST_7_5_UNFRAMED(60000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
+					LC3_QOS_48_1_GS_LATENCY, \
+					LC3_CONFIG_FRAME_LEN_48_1, \
+					LC3_QOS_48_1_GS_RTN)
+
+#define LC3_QOS_48_1_GR_LATENCY 15u
+#define LC3_QOS_48_1_GR_RTN 1u
+
+#define LC3_QOS_48_1_GR_AC(_ac) \
+	LC3_QOS_UCAST_7_5_UNFRAMED(10000u, BT_BAP_CONFIG_LATENCY_LOW, \
+					LC3_QOS_48_1_GR_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_1, \
+					LC3_QOS_48_1_GR_RTN)
+#define LC3_QOS_48_1_GR LC3_QOS_48_1_GR_AC(1)
+
 #define LC3_QOS_48_2_1_LATENCY 20u
 #define LC3_QOS_48_2_1_RTN 5u
 
 #define LC3_QOS_48_2_1_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_2_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_2, \
 					LC3_QOS_48_2_1_RTN)
 #define LC3_QOS_48_2_1 LC3_QOS_48_2_1_AC(1)
 
@@ -539,17 +612,36 @@
 #define LC3_QOS_48_2_2_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_2_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_2, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_2, \
 					LC3_QOS_48_2_2_RTN)
 #define LC3_QOS_48_2_2 LC3_QOS_48_2_2_AC(1)
 
+#define LC3_QOS_48_2_GS_LATENCY 20u
+#define LC3_QOS_48_2_GS_RTN 1u
+
+#define LC3_QOS_48_2_GS \
+	LC3_QOS_UCAST_10_UNFRAMED(60000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
+					LC3_QOS_48_2_GS_LATENCY, \
+					LC3_CONFIG_FRAME_LEN_48_2, \
+					LC3_QOS_48_2_GS_RTN)
+
+#define LC3_QOS_48_2_GR_LATENCY 20u
+#define LC3_QOS_48_2_GR_RTN 1u
+
+#define LC3_QOS_48_2_GR_AC(_ac) \
+	LC3_QOS_UCAST_10_UNFRAMED(10000u, BT_BAP_CONFIG_LATENCY_LOW, \
+					LC3_QOS_48_2_GR_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_2, \
+					LC3_QOS_48_2_GR_RTN)
+#define LC3_QOS_48_2_GR LC3_QOS_48_2_GR_AC(1)
+
 #define LC3_QOS_48_3_1_LATENCY 15u
 #define LC3_QOS_48_3_1_RTN 5u
 
 #define LC3_QOS_48_3_1_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_3_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_3, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_3, \
 					LC3_QOS_48_3_1_RTN)
 #define LC3_QOS_48_3_1 LC3_QOS_48_3_1_AC(1)
 
@@ -559,17 +651,27 @@
 #define LC3_QOS_48_3_2_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_3_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_3, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_3, \
 					LC3_QOS_48_3_2_RTN)
 #define LC3_QOS_48_3_2 LC3_QOS_48_3_2_AC(1)
 
+#define LC3_QOS_48_3_GR_LATENCY 15u
+#define LC3_QOS_48_3_GR_RTN 1u
+
+#define LC3_QOS_48_3_GR_AC(_ac) \
+	LC3_QOS_UCAST_7_5_UNFRAMED(10000u, BT_BAP_CONFIG_LATENCY_LOW, \
+					LC3_QOS_48_3_GR_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_3, \
+					LC3_QOS_48_3_GR_RTN)
+#define LC3_QOS_48_3_GR LC3_QOS_48_3_GR_AC(1)
+
 #define LC3_QOS_48_4_1_LATENCY 20u
 #define LC3_QOS_48_4_1_RTN 5u
 
 #define LC3_QOS_48_4_1_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_4_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_4, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_4, \
 					LC3_QOS_48_4_1_RTN)
 #define LC3_QOS_48_4_1 LC3_QOS_48_4_1_AC(1)
 
@@ -579,17 +681,27 @@
 #define LC3_QOS_48_4_2_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_4_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_4, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_4, \
 					LC3_QOS_48_4_2_RTN)
 #define LC3_QOS_48_4_2 LC3_QOS_48_4_2_AC(1)
 
+#define LC3_QOS_48_4_GR_LATENCY 20u
+#define LC3_QOS_48_4_GR_RTN 1u
+
+#define LC3_QOS_48_4_GR_AC(_ac) \
+	LC3_QOS_UCAST_10_UNFRAMED(10000u, BT_BAP_CONFIG_LATENCY_LOW, \
+					LC3_QOS_48_4_GR_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_4, \
+					LC3_QOS_48_4_GR_RTN)
+#define LC3_QOS_48_4_GR LC3_QOS_48_4_GR_AC(1)
+
 #define LC3_QOS_48_5_1_LATENCY 15u
 #define LC3_QOS_48_5_1_RTN 5u
 
 #define LC3_QOS_48_5_1_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_5_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_5, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_5, \
 					LC3_QOS_48_5_1_RTN)
 #define LC3_QOS_48_5_1 LC3_QOS_48_5_1_AC(1)
 
@@ -599,7 +711,7 @@
 #define LC3_QOS_48_5_2_AC(_ac) \
 	LC3_QOS_UCAST_7_5_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_5_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_5, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_5, \
 					LC3_QOS_48_5_2_RTN)
 #define LC3_QOS_48_5_2 LC3_QOS_48_5_2_AC(1)
 
@@ -609,7 +721,7 @@
 #define LC3_QOS_48_6_1_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_6_1_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_6, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_6, \
 					LC3_QOS_48_6_1_RTN)
 #define LC3_QOS_48_6_1 LC3_QOS_48_6_1_AC(1)
 
@@ -619,6 +731,264 @@
 #define LC3_QOS_48_6_2_AC(_ac) \
 	LC3_QOS_UCAST_10_UNFRAMED(40000u, BT_BAP_CONFIG_LATENCY_BALANCED, \
 					LC3_QOS_48_6_2_LATENCY, \
-					_ac * LC3_CONFIG_FRAME_LEN_48_6, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_6, \
 					LC3_QOS_48_6_2_RTN)
 #define LC3_QOS_48_6_2 LC3_QOS_48_6_2_AC(1)
+
+#define LC3_QOS_BCAST(_frame, _pd, _interval, _lat, _sdu, _rtn) \
+{ \
+	.bcast.big = 0x00, \
+	.bcast.bis = 0x00, \
+	.bcast.framing = _frame, \
+	.bcast.delay = _pd, \
+	.bcast.io_qos.interval = _interval, \
+	.bcast.io_qos.latency = _lat, \
+	.bcast.io_qos.sdu = _sdu, \
+	.bcast.io_qos.phy = BT_BAP_CONFIG_PHY_2M, \
+	.bcast.io_qos.rtn = _rtn, \
+}
+
+#define LC3_QOS_BCAST_7_5_UNFRAMED(_pd, _lat, _sdu, _rtn) \
+	LC3_QOS_BCAST(LC3_QOS_UNFRAMED, _pd, 7500u, _lat, _sdu, _rtn)
+
+#define LC3_QOS_BCAST_10_UNFRAMED(_pd, _lat, _sdu, _rtn) \
+	LC3_QOS_BCAST(LC3_QOS_UNFRAMED, _pd, 10000u, _lat, _sdu, _rtn)
+
+#define LC3_QOS_BCAST_FRAMED(_pd, _interval, _lat, _sdu, _rtn) \
+	LC3_QOS_BCAST(LC3_QOS_FRAMED, _pd, _interval, _lat, _sdu, _rtn)
+
+#define LC3_QOS_8_1_1_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_8_1_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_8_1, \
+					LC3_QOS_8_1_1_RTN)
+#define LC3_QOS_8_1_1_B LC3_QOS_8_1_1_B_AC(1)
+
+#define LC3_QOS_8_1_2_B_LATENCY 75u
+#define LC3_QOS_8_1_2_B_RTN 4u
+#define LC3_QOS_8_1_2_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_8_1_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_8_1, \
+					LC3_QOS_8_1_2_B_RTN)
+#define LC3_QOS_48_1_2_B LC3_QOS_48_1_2_B_AC(1)
+
+#define LC3_QOS_8_2_1_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_8_2_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_8_2, \
+					LC3_QOS_8_2_1_RTN)
+#define LC3_QOS_8_2_1_B LC3_QOS_8_2_1_B_AC(1)
+
+#define LC3_QOS_8_2_2_B_LATENCY 60u
+#define LC3_QOS_8_2_2_B_RTN 4u
+#define LC3_QOS_8_2_2_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_8_2_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_8_2, \
+					LC3_QOS_8_2_2_B_RTN)
+#define LC3_QOS_8_2_2_B LC3_QOS_8_2_2_B_AC(1)
+
+#define LC3_QOS_16_1_1_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_16_1_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_16_1, \
+					LC3_QOS_16_1_1_RTN)
+#define LC3_QOS_16_1_1_B LC3_QOS_16_1_1_B_AC(1)
+
+#define LC3_QOS_16_1_2_B_LATENCY 45u
+#define LC3_QOS_16_1_2_B_RTN 4u
+#define LC3_QOS_16_1_2_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_16_1_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_16_1, \
+					LC3_QOS_16_1_2_B_RTN)
+#define LC3_QOS_16_1_2_B LC3_QOS_16_1_2_B_AC(1)
+
+#define LC3_QOS_16_2_1_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_16_2_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_16_2, \
+					LC3_QOS_16_2_1_RTN)
+#define LC3_QOS_16_2_1_B LC3_QOS_16_2_1_B_AC(1)
+
+#define LC3_QOS_16_2_2_B_LATENCY 60u
+#define LC3_QOS_16_2_2_B_RTN 4u
+#define LC3_QOS_16_2_2_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_16_2_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_16_2, \
+					LC3_QOS_16_2_2_B_RTN)
+#define LC3_QOS_16_2_2_B LC3_QOS_16_2_2_B_AC(1)
+
+#define LC3_QOS_24_1_1_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_24_1_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_24_1, \
+					LC3_QOS_24_1_1_RTN)
+#define LC3_QOS_24_1_1_B LC3_QOS_24_1_1_B_AC(1)
+
+#define LC3_QOS_24_1_2_B_LATENCY 45u
+#define LC3_QOS_24_1_2_B_RTN 4u
+#define LC3_QOS_24_1_2_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_24_1_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_24_1, \
+					LC3_QOS_24_1_2_B_RTN)
+#define LC3_QOS_24_1_2_B LC3_QOS_24_1_2_B_AC(1)
+
+#define LC3_QOS_24_2_1_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_24_2_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_24_2, \
+					LC3_QOS_24_2_1_RTN)
+#define LC3_QOS_24_2_1_B LC3_QOS_24_2_1_B_AC(1)
+
+#define LC3_QOS_24_2_2_B_LATENCY 60u
+#define LC3_QOS_24_2_2_B_RTN 4u
+#define LC3_QOS_24_2_2_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_24_2_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_24_2, \
+					LC3_QOS_24_2_2_B_RTN)
+#define LC3_QOS_24_2_2_B LC3_QOS_24_2_2_B_AC(1)
+
+#define LC3_QOS_32_1_1_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_32_1_1_LATENCY, \
+					LC3_CONFIG_FRAME_LEN_32_1, \
+					LC3_QOS_32_1_1_RTN)
+#define LC3_QOS_32_1_1_B LC3_QOS_32_1_1_B_AC(1)
+
+#define LC3_QOS_32_1_2_B_LATENCY 45u
+#define LC3_QOS_32_1_2_B_RTN 4u
+#define LC3_QOS_32_1_2_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_32_1_2_B_LATENCY, \
+					LC3_CONFIG_FRAME_LEN_32_1, \
+					LC3_QOS_32_1_2_B_RTN)
+#define LC3_QOS_32_1_2_B LC3_QOS_32_1_2_B_AC(1)
+
+#define LC3_QOS_32_2_1_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_32_2_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_32_2, \
+					LC3_QOS_32_2_1_RTN)
+#define LC3_QOS_32_2_1_B LC3_QOS_32_2_1_B_AC(1)
+
+#define LC3_QOS_32_2_2_B_LATENCY 60u
+#define LC3_QOS_32_2_2_B_RTN 4u
+#define LC3_QOS_32_2_2_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_32_2_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_32_2, \
+					LC3_QOS_32_2_2_B_RTN)
+#define LC3_QOS_32_2_2_B LC3_QOS_32_2_2_B_AC(1)
+
+#define LC3_QOS_44_1_1_B_RTN 4u
+#define LC3_QOS_44_1_1_B_AC(_ac) \
+	LC3_QOS_BCAST_FRAMED(40000u, LC3_QOS_44_1_INTERVAL, \
+					LC3_QOS_44_1_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_44_1, \
+					LC3_QOS_44_1_1_B_RTN)
+#define LC3_QOS_44_1_1_B LC3_QOS_44_1_1_B_AC(1)
+
+#define LC3_QOS_44_1_2_B_LATENCY 54u
+#define LC3_QOS_44_1_2_B_RTN 4u
+#define LC3_QOS_44_1_2_B_AC(_ac) \
+	LC3_QOS_BCAST_FRAMED(40000u, LC3_QOS_44_1_INTERVAL, \
+					LC3_QOS_44_1_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_44_1, \
+					LC3_QOS_44_1_2_B_RTN)
+#define LC3_QOS_44_1_2_B LC3_QOS_44_1_2_B_AC(1)
+
+#define LC3_QOS_44_2_1_B_RTN 4u
+#define LC3_QOS_44_2_1_B_AC(_ac) \
+	LC3_QOS_BCAST_FRAMED(40000u, LC3_QOS_44_2_INTERVAL, \
+					LC3_QOS_44_2_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_44_2, \
+					LC3_QOS_44_2_1_B_RTN)
+#define LC3_QOS_44_2_1_B LC3_QOS_44_2_1_B_AC(1)
+
+#define LC3_QOS_44_2_2_B_LATENCY 60u
+#define LC3_QOS_44_2_2_B_RTN 4u
+#define LC3_QOS_44_2_2_B_AC(_ac) \
+	LC3_QOS_BCAST_FRAMED(40000u, LC3_QOS_44_2_INTERVAL, \
+					LC3_QOS_44_2_2_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_44_2, \
+					LC3_QOS_44_2_2_RTN)
+#define LC3_QOS_44_2_2_B LC3_QOS_44_2_2_B_AC(1)
+
+#define LC3_QOS_48_1_1_B_RTN 4u
+#define LC3_QOS_48_1_1_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_48_1_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_1,\
+					LC3_QOS_48_1_1_B_RTN)
+#define LC3_QOS_48_1_1_B LC3_QOS_48_1_1_B_AC(1)
+
+#define LC3_QOS_48_1_2_B_LATENCY 50u
+#define LC3_QOS_48_1_2_B_RTN 4u
+#define LC3_QOS_48_1_2_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_48_1_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_1, \
+					LC3_QOS_48_1_2_B_RTN)
+#define LC3_QOS_48_1_2_B LC3_QOS_48_1_2_B_AC(1)
+
+#define LC3_QOS_48_2_1_B_RTN 4u
+#define LC3_QOS_48_2_1_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_48_2_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_2, \
+					LC3_QOS_48_2_1_B_RTN)
+#define LC3_QOS_48_2_1_B LC3_QOS_48_2_1_B_AC(1)
+
+#define LC3_QOS_48_2_2_B_LATENCY 65u
+#define LC3_QOS_48_2_2_B_RTN 4u
+#define LC3_QOS_48_2_2_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_48_2_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_2, \
+					LC3_QOS_48_2_2_B_RTN)
+#define LC3_QOS_48_2_2_B LC3_QOS_48_2_2_B_AC(1)
+
+#define LC3_QOS_48_3_1_B_RTN 4u
+#define LC3_QOS_48_3_1_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_48_3_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_3, \
+					LC3_QOS_48_3_1_B_RTN)
+#define LC3_QOS_48_3_1_B LC3_QOS_48_3_1_B_AC(1)
+
+#define LC3_QOS_48_3_2_B_LATENCY 50u
+#define LC3_QOS_48_3_2_B_RTN 4u
+#define LC3_QOS_48_3_2_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_48_3_2_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_3, \
+					LC3_QOS_48_3_2_RTN)
+#define LC3_QOS_48_3_2_B LC3_QOS_48_3_2_B_AC(1)
+
+#define LC3_QOS_48_4_1_B_RTN 4u
+#define LC3_QOS_48_4_1_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_48_4_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_4, \
+					LC3_QOS_48_4_1_B_RTN)
+#define LC3_QOS_48_4_1_B LC3_QOS_48_4_1_B_AC(1)
+
+#define LC3_QOS_48_4_2_B_LATENCY 65u
+#define LC3_QOS_48_4_2_B_RTN 4u
+#define LC3_QOS_48_4_2_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_48_4_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_4, \
+					LC3_QOS_48_4_2_B_RTN)
+#define LC3_QOS_48_4_2_B LC3_QOS_48_4_2_B_AC(1)
+
+#define LC3_QOS_48_5_1_B_RTN 4u
+#define LC3_QOS_48_5_1_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_48_5_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_5, \
+					LC3_QOS_48_5_1_B_RTN)
+#define LC3_QOS_48_5_1_B LC3_QOS_48_5_1_B_AC(1)
+
+#define LC3_QOS_48_5_2_B_LATENCY 50u
+#define LC3_QOS_48_5_2_B_RTN 4u
+#define LC3_QOS_48_5_2_B_AC(_ac) \
+	LC3_QOS_BCAST_7_5_UNFRAMED(40000u, LC3_QOS_48_5_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_5, \
+					LC3_QOS_48_5_2_B_RTN)
+#define LC3_QOS_48_5_2_B LC3_QOS_48_5_2_B_AC(1)
+
+#define LC3_QOS_48_6_1_B_RTN 5u
+#define LC3_QOS_48_6_1_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_48_6_1_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_6, \
+					LC3_QOS_48_6_1_B_RTN)
+#define LC3_QOS_48_6_1_B LC3_QOS_48_6_1_B_AC(1)
+
+#define LC3_QOS_48_6_2_B_LATENCY 65u
+#define LC3_QOS_48_6_2_B_RTN 4u
+#define LC3_QOS_48_6_2_B_AC(_ac) \
+	LC3_QOS_BCAST_10_UNFRAMED(40000u, LC3_QOS_48_6_2_B_LATENCY, \
+					(_ac) * LC3_CONFIG_FRAME_LEN_48_6, \
+					LC3_QOS_48_6_2_B_RTN)
+#define LC3_QOS_48_6_2_B LC3_QOS_48_6_2_B_AC(1)
-- 
2.43.0


  parent reply	other threads:[~2024-03-13 19:44 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-03-13 19:43 [PATCH BlueZ v4 1/6] client/player: Split unicast and broadcast presets Luiz Augusto von Dentz
2024-03-13 19:43 ` [PATCH BlueZ v4 2/6] client/player: Use macros from lc3.h to define presets Luiz Augusto von Dentz
2024-03-13 19:43 ` Luiz Augusto von Dentz [this message]
2024-03-13 19:43 ` [PATCH BlueZ v4 4/6] client/player: Use QOS " Luiz Augusto von Dentz
2024-03-13 19:43 ` [PATCH BlueZ v4 5/6] client/player: Cleanup broadcast QoS Luiz Augusto von Dentz
2024-03-13 19:44 ` [PATCH BlueZ v4 6/6] bap: Add proper default for broadcast setup Luiz Augusto von Dentz
2024-03-13 21:00 ` [PATCH BlueZ v4 1/6] client/player: Split unicast and broadcast presets patchwork-bot+bluetooth
2024-03-13 23:49 ` [BlueZ,v4,1/6] " bluez.test.bot

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240313194400.1397477-3-luiz.dentz@gmail.com \
    --to=luiz.dentz@gmail.com \
    --cc=linux-bluetooth@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.