linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH BlueZ 0/2] Introduce option to limit A2DP channels
@ 2024-11-07 22:01 Victor Pushkarev
  2024-11-07 22:01 ` [PATCH BlueZ 1/2] main.conf: " Victor Pushkarev
  2024-11-07 22:01 ` [PATCH BlueZ 2/2] a2dp: Reject incoming connection when channel limit is exceeded Victor Pushkarev
  0 siblings, 2 replies; 7+ messages in thread
From: Victor Pushkarev @ 2024-11-07 22:01 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: sdfw_system_team, corvinus.v, Victor Pushkarev

This patch adds feature to limit the number of active A2DP connections.

This may be necessary to prevent audio mixing problem when playing from
multiple sources using the A2DP profile.

Victor Pushkarev (2):
  main.conf: Introduce option to limit A2DP channels
  a2dp: Reject incoming connection when channel limit is exceeded

 profiles/audio/a2dp.c  |  9 +++++++++
 profiles/audio/media.c | 11 +++++++++++
 src/btd.h              |  6 ++++++
 src/main.c             | 15 +++++++++++++++
 src/main.conf          |  5 +++++
 5 files changed, 46 insertions(+)

-- 
2.39.3 (Apple Git-146)


^ permalink raw reply	[flat|nested] 7+ messages in thread
* [PATCH BlueZ v1 1/2] main.conf: Introduce option to limit A2DP channels
@ 2024-01-29 20:41 Victor Pushkarev
  2024-01-29 22:18 ` bluez.test.bot
  0 siblings, 1 reply; 7+ messages in thread
From: Victor Pushkarev @ 2024-01-29 20:41 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: VAnPushkarev, sdfw_system_team, corvinus.v

This introduces Channels which can be used to
limit the number of A2DP channels.

For new option this also adds a new group A2DP to config.

Signed-off-by: Victor Pushkarev <VAnPushkarev@salutedevices.com>
---
 src/btd.h     |  6 ++++++
 src/main.c    | 16 ++++++++++++++++
 src/main.conf |  5 +++++
 3 files changed, 27 insertions(+)

diff --git a/src/btd.h b/src/btd.h
index b7e7ebd61..3372bd7f5 100644
--- a/src/btd.h
+++ b/src/btd.h
@@ -104,6 +104,10 @@ struct btd_avdtp_opts {
 	uint8_t  stream_mode;
 };
 
+struct btd_a2dp_opts {
+	uint8_t		channels;
+};
+
 struct btd_advmon_opts {
 	uint8_t		rssi_sampling_period;
 };
@@ -148,6 +152,8 @@ struct btd_opts {
 
 	enum jw_repairing_t jw_repairing;
 
+	struct btd_a2dp_opts	a2dp;
+
 	struct btd_advmon_opts	advmon;
 
 	struct btd_csis csis;
diff --git a/src/main.c b/src/main.c
index b1339c230..7e74b9728 100644
--- a/src/main.c
+++ b/src/main.c
@@ -162,6 +162,11 @@ static const char *avdtp_options[] = {
 	NULL
 };
 
+static const char *a2dp_options[] = {
+	"Channels",
+	NULL
+};
+
 static const char *advmon_options[] = {
 	"RSSISamplingPeriod",
 	NULL
@@ -178,6 +183,7 @@ static const struct group_table {
 	{ "GATT",	gatt_options },
 	{ "CSIS",	csip_options },
 	{ "AVDTP",	avdtp_options },
+	{ "A2DP",	a2dp_options },
 	{ "AdvMon",	advmon_options },
 	{ }
 };
@@ -1130,6 +1136,13 @@ static void parse_avdtp(GKeyFile *config)
 	parse_avdtp_stream_mode(config);
 }
 
+static void parse_a2dp(GKeyFile *config)
+{
+	parse_config_u8(config, "A2DP", "Channels",
+				&btd_opts.a2dp.channels,
+				0, UINT8_MAX);
+}
+
 static void parse_advmon(GKeyFile *config)
 {
 	parse_config_u8(config, "AdvMon", "RSSISamplingPeriod",
@@ -1153,6 +1166,7 @@ static void parse_config(GKeyFile *config)
 	parse_gatt(config);
 	parse_csis(config);
 	parse_avdtp(config);
+	parse_a2dp(config);
 	parse_advmon(config);
 }
 
@@ -1194,6 +1208,8 @@ static void init_defaults(void)
 	btd_opts.avdtp.session_mode = BT_IO_MODE_BASIC;
 	btd_opts.avdtp.stream_mode = BT_IO_MODE_BASIC;
 
+	btd_opts.a2dp.channels = 0;
+
 	btd_opts.advmon.rssi_sampling_period = 0xFF;
 	btd_opts.csis.encrypt = true;
 }
diff --git a/src/main.conf b/src/main.conf
index 085c81a46..caeb82504 100644
--- a/src/main.conf
+++ b/src/main.conf
@@ -296,6 +296,11 @@
 # streaming: Use L2CAP Streaming Mode
 #StreamMode = basic
 
+[A2DP]
+# Maximum number of A2DP channels
+# Defaults to 0 (unlimited)
+#Channels = 0
+
 [Policy]
 #
 # The ReconnectUUIDs defines the set of remote services that should try
-- 
2.39.3 (Apple Git-145)


^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2024-12-05 11:00 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-11-07 22:01 [PATCH BlueZ 0/2] Introduce option to limit A2DP channels Victor Pushkarev
2024-11-07 22:01 ` [PATCH BlueZ 1/2] main.conf: " Victor Pushkarev
2024-11-08  0:09   ` bluez.test.bot
2024-11-07 22:01 ` [PATCH BlueZ 2/2] a2dp: Reject incoming connection when channel limit is exceeded Victor Pushkarev
2024-11-07 23:01   ` Luiz Augusto von Dentz
2024-12-05 10:51     ` Victor Pushkarev
  -- strict thread matches above, loose matches on Subject: below --
2024-01-29 20:41 [PATCH BlueZ v1 1/2] main.conf: Introduce option to limit A2DP channels Victor Pushkarev
2024-01-29 22:18 ` bluez.test.bot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).