2016-09-20 13:13:35

by François Beaufort

[permalink] [raw]
Subject: [PATCH BlueZ] client: Show UUIDs when listing services, characteristics and descriptors.

Francois Beaufort (1):
client: Show UUIDs when listing services, characteristics and
descriptors.

client/gatt.c | 75 +++++++++++++++++++++++++++++++++++++----------------------
1 file changed, 47 insertions(+), 28 deletions(-)

--
2.10.0



2016-09-20 13:13:37

by François Beaufort

[permalink] [raw]
Subject: [PATCH BlueZ] client: Show UUIDs when listing services, characteristics and descriptors.

Example output after this patch:

[bluetooth]# connect 7B:3F:2C:2B:D0:06
Attempting to connect to 7B:3F:2C:2B:D0:06
[CHG] Device 7B:3F:2C:2B:D0:06 Connected: yes
Connection successful
[NEW] Primary Service
/org/bluez/hci0/dev_7B_3F_2C_2B_D0_06/service0001
00001801-0000-1000-8000-00805f9b34fb
Generic Attribute Profile
[NEW] Characteristic
/org/bluez/hci0/dev_7B_3F_2C_2B_D0_06/service0001/char0002
00002a05-0000-1000-8000-00805f9b34fb
Service Changed
[NEW] Primary Service
/org/bluez/hci0/dev_7B_3F_2C_2B_D0_06/service0028
0000180f-0000-1000-8000-00805f9b34fb
Battery Service
[NEW] Characteristic
/org/bluez/hci0/dev_7B_3F_2C_2B_D0_06/service0028/char0029
00002a19-0000-1000-8000-00805f9b34fb
Battery Level
[NEW] Descriptor
/org/bluez/hci0/dev_7B_3F_2C_2B_D0_06/service0028/char0029/desc002b
00002902-0000-1000-8000-00805f9b34fb
Client Characteristic Configuration
[CHG] Device 7B:3F:2C:2B:D0:06 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
[CHG] Device 7B:3F:2C:2B:D0:06 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
[CHG] Device 7B:3F:2C:2B:D0:06 UUIDs: 0000180f-0000-1000-8000-00805f9b34fb
[CHG] Device 7B:3F:2C:2B:D0:06 ServicesResolved: yes
---
client/gatt.c | 75 +++++++++++++++++++++++++++++++++++++----------------------
1 file changed, 47 insertions(+), 28 deletions(-)

diff --git a/client/gatt.c b/client/gatt.c
index fee1cf9..e6159bc 100644
--- a/client/gatt.c
+++ b/client/gatt.c
@@ -72,16 +72,23 @@ static void print_service(GDBusProxy *proxy, const char *description)
dbus_message_iter_get_basic(&iter, &primary);

text = uuidstr_to_str(uuid);
- if (!text)
- text = uuid;
-
- rl_printf("%s%s%s%s Service\n\t%s\n\t%s\n",
- description ? "[" : "",
- description ? : "",
- description ? "] " : "",
- primary ? "Primary" : "Secondary",
- g_dbus_proxy_get_path(proxy),
- text);
+ if (!text) {
+ rl_printf("%s%s%s%s Service\n\t%s\n\t%s\n",
+ description ? "[" : "",
+ description ? : "",
+ description ? "] " : "",
+ primary ? "Primary" : "Secondary",
+ g_dbus_proxy_get_path(proxy),
+ uuid);
+ } else {
+ rl_printf("%s%s%s%s Service\n\t%s\n\t%s\n\t%s\n",
+ description ? "[" : "",
+ description ? : "",
+ description ? "] " : "",
+ primary ? "Primary" : "Secondary",
+ g_dbus_proxy_get_path(proxy),
+ uuid, text);
+ }
}

void gatt_add_service(GDBusProxy *proxy)
@@ -115,15 +122,21 @@ static void print_characteristic(GDBusProxy *proxy, const char *description)
dbus_message_iter_get_basic(&iter, &uuid);

text = uuidstr_to_str(uuid);
- if (!text)
- text = uuid;
-
- rl_printf("%s%s%sCharacteristic\n\t%s\n\t%s\n",
- description ? "[" : "",
- description ? : "",
- description ? "] " : "",
- g_dbus_proxy_get_path(proxy),
- text);
+ if (!text) {
+ rl_printf("%s%s%sCharacteristic\n\t%s\n\t%s\n",
+ description ? "[" : "",
+ description ? : "",
+ description ? "] " : "",
+ g_dbus_proxy_get_path(proxy),
+ uuid);
+ } else {
+ rl_printf("%s%s%sCharacteristic\n\t%s\n\t%s\n\t%s\n",
+ description ? "[" : "",
+ description ? : "",
+ description ? "] " : "",
+ g_dbus_proxy_get_path(proxy),
+ uuid, text);
+ }
}

static gboolean characteristic_is_child(GDBusProxy *characteristic)
@@ -183,15 +196,21 @@ static void print_descriptor(GDBusProxy *proxy, const char *description)
dbus_message_iter_get_basic(&iter, &uuid);

text = uuidstr_to_str(uuid);
- if (!text)
- text = uuid;
-
- rl_printf("%s%s%sDescriptor\n\t%s\n\t%s\n",
- description ? "[" : "",
- description ? : "",
- description ? "] " : "",
- g_dbus_proxy_get_path(proxy),
- text);
+ if (!text) {
+ rl_printf("%s%s%sDescriptor\n\t%s\n\t%s\n",
+ description ? "[" : "",
+ description ? : "",
+ description ? "] " : "",
+ g_dbus_proxy_get_path(proxy),
+ uuid);
+ } else {
+ rl_printf("%s%s%sDescriptor\n\t%s\n\t%s\n\t%s\n",
+ description ? "[" : "",
+ description ? : "",
+ description ? "] " : "",
+ g_dbus_proxy_get_path(proxy),
+ uuid, text);
+ }
}

static gboolean descriptor_is_child(GDBusProxy *characteristic)
--
2.10.0


2016-09-20 13:13:36

by François Beaufort

[permalink] [raw]
Subject: [PATCH BlueZ] Add device set-alias bluetoothctl command

---
client/main.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)

diff --git a/client/main.c b/client/main.c
index 9ba5a40..e1198a8 100644
--- a/client/main.c
+++ b/client/main.c
@@ -1666,6 +1666,30 @@ static void cmd_list_attributes(const char *arg)
gatt_list_attributes(g_dbus_proxy_get_path(proxy));
}

+static void cmd_set_alias(const char *arg)
+{
+ char *name;
+
+ if (!arg || !strlen(arg)) {
+ rl_printf("Missing name argument\n");
+ return;
+ }
+
+ if (!default_dev) {
+ rl_printf("No device connected\n");
+ return;
+ }
+
+ name = g_strdup(arg);
+
+ if (g_dbus_proxy_set_property_basic(default_dev, "Alias",
+ DBUS_TYPE_STRING, &name,
+ generic_callback, name, g_free) == TRUE)
+ return;
+
+ g_free(name);
+}
+
static void cmd_select_attribute(const char *arg)
{
GDBusProxy *proxy;
@@ -2105,6 +2129,7 @@ static const struct {
dev_generator },
{ "list-attributes", "[dev]", cmd_list_attributes, "List attributes",
dev_generator },
+ { "set-alias", "<alias>", cmd_set_alias, "Set device alias" },
{ "select-attribute", "<attribute>", cmd_select_attribute,
"Select attribute", attribute_generator },
{ "attribute-info", "[attribute]", cmd_attribute_info,
--
2.7.0


2016-09-02 14:14:54

by Luiz Augusto von Dentz

[permalink] [raw]
Subject: Re: [PATCH BlueZ] Add device set-alias bluetoothctl command

Hi Francois,

On Fri, Sep 2, 2016 at 12:08 PM, Francois Beaufort
<[email protected]> wrote:
> ---
> client/main.c | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/client/main.c b/client/main.c
> index 9ba5a40..e1198a8 100644
> --- a/client/main.c
> +++ b/client/main.c
> @@ -1666,6 +1666,30 @@ static void cmd_list_attributes(const char *arg)
> gatt_list_attributes(g_dbus_proxy_get_path(proxy));
> }
>
> +static void cmd_set_alias(const char *arg)
> +{
> + char *name;
> +
> + if (!arg || !strlen(arg)) {
> + rl_printf("Missing name argument\n");
> + return;
> + }
> +
> + if (!default_dev) {
> + rl_printf("No device connected\n");
> + return;
> + }
> +
> + name = g_strdup(arg);
> +
> + if (g_dbus_proxy_set_property_basic(default_dev, "Alias",
> + DBUS_TYPE_STRING, &name,
> + generic_callback, name, g_free) == TRUE)
> + return;
> +
> + g_free(name);
> +}
> +
> static void cmd_select_attribute(const char *arg)
> {
> GDBusProxy *proxy;
> @@ -2105,6 +2129,7 @@ static const struct {
> dev_generator },
> { "list-attributes", "[dev]", cmd_list_attributes, "List attributes",
> dev_generator },
> + { "set-alias", "<alias>", cmd_set_alias, "Set device alias" },
> { "select-attribute", "<attribute>", cmd_select_attribute,
> "Select attribute", attribute_generator },
> { "attribute-info", "[attribute]", cmd_attribute_info,
> --
> 2.7.0

Applied, thanks.

--
Luiz Augusto von Dentz