From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx> This makes endpoint.show arguments optional and in case none is given print all (local and remote) endpoints: [bluetooth]# endpoint.show Endpoint /local/endpoint/a2dp_src/sbc UUID 0000110a-0000-1000-8000-00805f9b34fb Codec 0x00 (0) Media Codec: SBC Channel Modes: Mono DualChannel Stereo JointStereo Frequencies: 16Khz 32Khz 44.1Khz 48Khz Subbands: 4 8 Blocks: 4 8 12 16 Bitpool Range: 2-64 Endpoint /local/endpoint/a2dp_snk/sbc UUID 0000110b-0000-1000-8000-00805f9b34fb Codec 0x00 (0) Media Codec: SBC Channel Modes: Mono DualChannel Stereo JointStereo Frequencies: 16Khz 32Khz 44.1Khz 48Khz Subbands: 4 8 Blocks: 4 8 12 16 Bitpool Range: 2-64 --- client/player.c | 46 ++++++++++++++++++++++++++++++++++------------ 1 file changed, 34 insertions(+), 12 deletions(-) diff --git a/client/player.c b/client/player.c index 31d6f95c292b..39c14a9434cb 100644 --- a/client/player.c +++ b/client/player.c @@ -2828,10 +2828,42 @@ static void print_local_endpoint(struct endpoint *ep) ep->context); } +static void print_endpoint_properties(GDBusProxy *proxy) +{ + bt_shell_printf("Endpoint %s\n", g_dbus_proxy_get_path(proxy)); + + print_property(proxy, "UUID"); + print_property(proxy, "Codec"); + print_capabilities(proxy); + print_property(proxy, "Device"); + print_property(proxy, "DelayReporting"); + print_property(proxy, "Locations"); + print_property(proxy, "SupportedContext"); + print_property(proxy, "Context"); + print_property(proxy, "QoS"); +} + +static void print_endpoints(void *data, void *user_data) +{ + print_endpoint_properties(data); +} + +static void print_local_endpoints(void *data, void *user_data) +{ + print_local_endpoint(data); +} + static void cmd_show_endpoint(int argc, char *argv[]) { GDBusProxy *proxy; + /* Show all endpoints if no argument is given */ + if (argc != 2) { + g_list_foreach(endpoints, print_endpoints, NULL); + g_list_foreach(local_endpoints, print_local_endpoints, NULL); + return bt_shell_noninteractive_quit(EXIT_SUCCESS); + } + proxy = g_dbus_proxy_lookup(endpoints, NULL, argv[1], BLUEZ_MEDIA_ENDPOINT_INTERFACE); if (!proxy) { @@ -2845,17 +2877,7 @@ static void cmd_show_endpoint(int argc, char *argv[]) return bt_shell_noninteractive_quit(EXIT_SUCCESS); } - bt_shell_printf("Endpoint %s\n", g_dbus_proxy_get_path(proxy)); - - print_property(proxy, "UUID"); - print_property(proxy, "Codec"); - print_capabilities(proxy); - print_property(proxy, "Device"); - print_property(proxy, "DelayReporting"); - print_property(proxy, "Locations"); - print_property(proxy, "SupportedContext"); - print_property(proxy, "Context"); - print_property(proxy, "QoS"); + print_endpoint_properties(proxy); return bt_shell_noninteractive_quit(EXIT_SUCCESS); } @@ -4320,7 +4342,7 @@ static const struct bt_shell_menu endpoint_menu = { .entries = { { "list", "[local]", cmd_list_endpoints, "List available endpoints" }, - { "show", "<endpoint>", cmd_show_endpoint, + { "show", "[endpoint]", cmd_show_endpoint, "Endpoint information", endpoint_generator }, { "register", "<UUID> <codec[:company]> [capabilities...]", -- 2.46.1