All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH BlueZ 1/2] shell: Set empty argument if optarg is NULL
@ 2022-08-29 21:37 Luiz Augusto von Dentz
  2022-08-29 21:37 ` [PATCH BlueZ 2/2] client: Add -e/--endpoint option to auto register endpoints Luiz Augusto von Dentz
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2022-08-29 21:37 UTC (permalink / raw)
  To: linux-bluetooth

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

This sets enmpty string ("") when argument don't set any optarg so the
application can tell when an option was set or not.
---
 src/shared/shell.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/shared/shell.c b/src/shared/shell.c
index dfda8128af91..4658819a4bde 100644
--- a/src/shared/shell.c
+++ b/src/shared/shell.c
@@ -1158,7 +1158,7 @@ void bt_shell_init(int argc, char **argv, const struct bt_shell_opt *opt)
 				return;
 			}
 
-			*opt->optarg[index - offset] = optarg;
+			*opt->optarg[index - offset] = optarg ? : "";
 		}
 
 		index = -1;
-- 
2.37.2


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

* [PATCH BlueZ 2/2] client: Add -e/--endpoint option to auto register endpoints
  2022-08-29 21:37 [PATCH BlueZ 1/2] shell: Set empty argument if optarg is NULL Luiz Augusto von Dentz
@ 2022-08-29 21:37 ` Luiz Augusto von Dentz
  2022-08-29 22:30 ` [BlueZ,1/2] shell: Set empty argument if optarg is NULL bluez.test.bot
  2022-08-30 21:30 ` [PATCH BlueZ 1/2] " patchwork-bot+bluetooth
  2 siblings, 0 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2022-08-29 21:37 UTC (permalink / raw)
  To: linux-bluetooth

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

This adds -e/--endpoint option that can be used to auto register
supported endpoints.
---
 client/main.c   |  14 ++++--
 client/player.c | 122 ++++++++++++++++++++++++++++++++++--------------
 2 files changed, 98 insertions(+), 38 deletions(-)

diff --git a/client/main.c b/client/main.c
index 54f21fbdf9a0..6773d52627db 100644
--- a/client/main.c
+++ b/client/main.c
@@ -3109,23 +3109,27 @@ static const struct bt_shell_menu main_menu = {
 
 static const struct option options[] = {
 	{ "agent",	required_argument, 0, 'a' },
+	{ "endpoints",	no_argument, 0, 'e' },
 	{ 0, 0, 0, 0 }
 };
 
 static const char *agent_option;
+static const char *endpoint_option;
 
 static const char **optargs[] = {
-	&agent_option
+	&agent_option,
+	&endpoint_option
 };
 
 static const char *help[] = {
-	"Register agent handler: <capability>"
+	"Register agent handler: <capability>",
+	"Register Media endpoints"
 };
 
 static const struct bt_shell_opt opt = {
 	.options = options,
 	.optno = sizeof(options) / sizeof(struct option),
-	.optstr = "a:",
+	.optstr = "a:e",
 	.optarg = optargs,
 	.help = help,
 };
@@ -3158,6 +3162,10 @@ int main(int argc, char *argv[])
 
 	bt_shell_set_env("DBUS_CONNECTION", dbus_conn);
 
+	if (endpoint_option)
+		bt_shell_set_env("AUTO_REGISTER_ENDPOINT",
+					(void *)endpoint_option);
+
 	admin_add_submenu();
 	player_add_submenu();
 
diff --git a/client/player.c b/client/player.c
index 99b036b8c3ec..3d2f41cb3666 100644
--- a/client/player.c
+++ b/client/player.c
@@ -510,41 +510,6 @@ static char *proxy_description(GDBusProxy *proxy, const char *title,
 					title, path);
 }
 
-static void print_media(GDBusProxy *proxy, const char *description)
-{
-	char *str;
-
-	str = proxy_description(proxy, "Media", description);
-
-	bt_shell_printf("%s\n", str);
-
-	g_free(str);
-}
-
-static void print_player(GDBusProxy *proxy, const char *description)
-{
-	char *str;
-
-	str = proxy_description(proxy, "Player", description);
-
-	bt_shell_printf("%s%s\n", str,
-			default_player == proxy ? "[default]" : "");
-
-	g_free(str);
-}
-
-static void cmd_list(int argc, char *arg[])
-{
-	GList *l;
-
-	for (l = players; l; l = g_list_next(l)) {
-		GDBusProxy *proxy = l->data;
-		print_player(proxy, NULL);
-	}
-
-	return bt_shell_noninteractive_quit(EXIT_SUCCESS);
-}
-
 static void print_iter(const char *label, const char *name,
 						DBusMessageIter *iter)
 {
@@ -627,6 +592,42 @@ static void print_property(GDBusProxy *proxy, const char *name)
 	print_iter("\t", name, &iter);
 }
 
+static void print_media(GDBusProxy *proxy, const char *description)
+{
+	char *str;
+
+	str = proxy_description(proxy, "Media", description);
+
+	bt_shell_printf("%s\n", str);
+	print_property(proxy, "SupportedUUIDs");
+
+	g_free(str);
+}
+
+static void print_player(GDBusProxy *proxy, const char *description)
+{
+	char *str;
+
+	str = proxy_description(proxy, "Player", description);
+
+	bt_shell_printf("%s%s\n", str,
+			default_player == proxy ? "[default]" : "");
+
+	g_free(str);
+}
+
+static void cmd_list(int argc, char *arg[])
+{
+	GList *l;
+
+	for (l = players; l; l = g_list_next(l)) {
+		GDBusProxy *proxy = l->data;
+		print_player(proxy, NULL);
+	}
+
+	return bt_shell_noninteractive_quit(EXIT_SUCCESS);
+}
+
 static void cmd_show_item(int argc, char *argv[])
 {
 	GDBusProxy *proxy;
@@ -2412,11 +2413,62 @@ static const struct bt_shell_menu endpoint_menu = {
 	{} },
 };
 
+static struct endpoint *endpoint_new(const struct capabilities *cap)
+{
+	struct endpoint *ep;
+
+	ep = new0(struct endpoint, 1);
+	ep->uuid = g_strdup(cap->uuid);
+	ep->codec = cap->codec_id;
+	ep->path = g_strdup_printf("%s/ep%u", BLUEZ_MEDIA_ENDPOINT_PATH,
+					g_list_length(local_endpoints));
+	/* Copy capabilities */
+	iov_append(&ep->caps, cap->data.iov_base, cap->data.iov_len);
+	local_endpoints = g_list_append(local_endpoints, ep);
+
+	return ep;
+}
+
+static void register_endpoints(GDBusProxy *proxy)
+{
+	struct endpoint *ep;
+	DBusMessageIter iter, array;
+
+	if (!g_dbus_proxy_get_property(proxy, "SupportedUUIDs", &iter))
+		return;
+
+	dbus_message_iter_recurse(&iter, &array);
+	while (dbus_message_iter_get_arg_type(&array) == DBUS_TYPE_STRING) {
+		const char *uuid;
+		size_t i;
+
+		dbus_message_iter_get_basic(&array, &uuid);
+
+		for (i = 0; i < ARRAY_SIZE(caps); i++) {
+			const struct capabilities *cap = &caps[i];
+
+			if (strcasecmp(cap->uuid, uuid))
+				continue;
+
+			ep = endpoint_new(cap);
+			ep->auto_accept = true;
+			ep->cig = BT_ISO_QOS_CIG_UNSET;
+			ep->cis = BT_ISO_QOS_CIS_UNSET;
+			endpoint_register(ep);
+		}
+
+		dbus_message_iter_next(&array);
+	}
+}
+
 static void media_added(GDBusProxy *proxy)
 {
 	medias = g_list_append(medias, proxy);
 
 	print_media(proxy, COLORED_NEW);
+
+	if (bt_shell_get_env("AUTO_REGISTER_ENDPOINT"))
+		register_endpoints(proxy);
 }
 
 static void player_added(GDBusProxy *proxy)
-- 
2.37.2


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

* RE: [BlueZ,1/2] shell: Set empty argument if optarg is NULL
  2022-08-29 21:37 [PATCH BlueZ 1/2] shell: Set empty argument if optarg is NULL Luiz Augusto von Dentz
  2022-08-29 21:37 ` [PATCH BlueZ 2/2] client: Add -e/--endpoint option to auto register endpoints Luiz Augusto von Dentz
@ 2022-08-29 22:30 ` bluez.test.bot
  2022-08-30 21:30 ` [PATCH BlueZ 1/2] " patchwork-bot+bluetooth
  2 siblings, 0 replies; 4+ messages in thread
From: bluez.test.bot @ 2022-08-29 22:30 UTC (permalink / raw)
  To: linux-bluetooth, luiz.dentz

[-- Attachment #1: Type: text/plain, Size: 3103 bytes --]

This is automated email and please do not reply to this email!

Dear submitter,

Thank you for submitting the patches to the linux bluetooth mailing list.
This is a CI test results with your patch series:
PW Link:https://patchwork.kernel.org/project/bluetooth/list/?series=672191

---Test result---

Test Summary:
CheckPatch                    FAIL      2.26 seconds
GitLint                       PASS      1.52 seconds
Prep - Setup ELL              PASS      32.33 seconds
Build - Prep                  PASS      0.79 seconds
Build - Configure             PASS      10.36 seconds
Build - Make                  PASS      958.09 seconds
Make Check                    PASS      13.15 seconds
Make Check w/Valgrind         PASS      348.11 seconds
Make Distcheck                PASS      292.00 seconds
Build w/ext ELL - Configure   PASS      10.67 seconds
Build w/ext ELL - Make        PASS      100.25 seconds
Incremental Build w/ patches  PASS      237.25 seconds
Scan Build                    WARNING   643.54 seconds

Details
##############################
Test: CheckPatch - FAIL
Desc: Run checkpatch.pl script with rule in .checkpatch.conf
Output:
[BlueZ,2/2] client: Add -e/--endpoint option to auto register endpoints
WARNING:LINE_SPACING: Missing a blank line after declarations
#216: FILE: client/player.c:625:
+		GDBusProxy *proxy = l->data;
+		print_player(proxy, NULL);

/github/workspace/src/12958474.patch total: 0 errors, 1 warnings, 185 lines checked

NOTE: For some of the reported defects, checkpatch may be able to
      mechanically convert to the typical style using --fix or --fix-inplace.

/github/workspace/src/12958474.patch has style problems, please review.

NOTE: Ignored message types: COMMIT_MESSAGE COMPLEX_MACRO CONST_STRUCT FILE_PATH_CHANGES MISSING_SIGN_OFF PREFER_PACKED SPDX_LICENSE_TAG SPLIT_STRING SSCANF_TO_KSTRTO

NOTE: If any of the errors are false positives, please report
      them to the maintainer, see CHECKPATCH in MAINTAINERS.


##############################
Test: Scan Build - WARNING
Desc: Run Scan Build with patches
Output:
*****************************************************************************
The bugs reported by the scan-build may or may not be caused by your patches.
Please check the list and fix the bugs if they are caused by your patch.
*****************************************************************************
client/player.c:1758:25: warning: Dereference of null pointer
        iov_append(&cfg->caps, preset->data.iov_base, preset->data.iov_len);
                               ^~~~~~~~~~~~~~~~~~~~~
1 warning generated.
src/shared/shell.c:1135:19: warning: Null pointer passed to 1st parameter expecting 'nonnull'
                        data.timeout = atoi(optarg);
                                       ^~~~~~~~~~~~
src/shared/shell.c:1155:13: warning: Access to field 'options' results in a dereference of a null pointer (loaded from variable 'opt')
                        if (c != opt->options[index - offset].val) {
                                 ^~~~~~~~~~~~
2 warnings generated.




---
Regards,
Linux Bluetooth


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

* Re: [PATCH BlueZ 1/2] shell: Set empty argument if optarg is NULL
  2022-08-29 21:37 [PATCH BlueZ 1/2] shell: Set empty argument if optarg is NULL Luiz Augusto von Dentz
  2022-08-29 21:37 ` [PATCH BlueZ 2/2] client: Add -e/--endpoint option to auto register endpoints Luiz Augusto von Dentz
  2022-08-29 22:30 ` [BlueZ,1/2] shell: Set empty argument if optarg is NULL bluez.test.bot
@ 2022-08-30 21:30 ` patchwork-bot+bluetooth
  2 siblings, 0 replies; 4+ messages in thread
From: patchwork-bot+bluetooth @ 2022-08-30 21:30 UTC (permalink / raw)
  To: Luiz Augusto von Dentz; +Cc: linux-bluetooth

Hello:

This series was applied to bluetooth/bluez.git (master)
by Luiz Augusto von Dentz <luiz.von.dentz@intel.com>:

On Mon, 29 Aug 2022 14:37:37 -0700 you wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> 
> This sets enmpty string ("") when argument don't set any optarg so the
> application can tell when an option was set or not.
> ---
>  src/shared/shell.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Here is the summary with links:
  - [BlueZ,1/2] shell: Set empty argument if optarg is NULL
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=75f73f6d6264
  - [BlueZ,2/2] client: Add -e/--endpoint option to auto register endpoints
    https://git.kernel.org/pub/scm/bluetooth/bluez.git/?id=d297a5873d21

You are awesome, thank you!
-- 
Deet-doot-dot, I am a bot.
https://korg.docs.kernel.org/patchwork/pwbot.html



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

end of thread, other threads:[~2022-08-30 21:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-08-29 21:37 [PATCH BlueZ 1/2] shell: Set empty argument if optarg is NULL Luiz Augusto von Dentz
2022-08-29 21:37 ` [PATCH BlueZ 2/2] client: Add -e/--endpoint option to auto register endpoints Luiz Augusto von Dentz
2022-08-29 22:30 ` [BlueZ,1/2] shell: Set empty argument if optarg is NULL bluez.test.bot
2022-08-30 21:30 ` [PATCH BlueZ 1/2] " patchwork-bot+bluetooth

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.