2018-02-12 16:00:59

by Grzegorz Kołodziejczyk

[permalink] [raw]
Subject: [PATCH BlueZ 1/4] tools/btpclient: Fix ad property manufacturer data name

This patch fixes wrong naming of advertising instance data property.
---
tools/btpclient.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/btpclient.c b/tools/btpclient.c
index 097732eb8..61bde820e 100644
--- a/tools/btpclient.c
+++ b/tools/btpclient.c
@@ -971,7 +971,7 @@ static void setup_ad_interface(struct l_dbus_interface *interface)
ad_serviceuuids_getter, NULL);
l_dbus_interface_property(interface, "ServiceData", 0, "a{sv}",
ad_servicedata_getter, NULL);
- l_dbus_interface_property(interface, "ManufacturerServiceData", 0,
+ l_dbus_interface_property(interface, "ManufacturerData", 0,
"a{qv}", ad_manufacturerdata_getter,
NULL);
l_dbus_interface_property(interface, "Includes", 0, "as",
--
2.13.6



2018-02-13 08:15:20

by Szymon Janc

[permalink] [raw]
Subject: Re: [PATCH BlueZ 1/4] tools/btpclient: Fix ad property manufacturer data name

Hi Grzegorz,

On Monday, 12 February 2018 17:00:59 CET Grzegorz Kolodziejczyk wrote:
> This patch fixes wrong naming of advertising instance data property.
> ---
> tools/btpclient.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/tools/btpclient.c b/tools/btpclient.c
> index 097732eb8..61bde820e 100644
> --- a/tools/btpclient.c
> +++ b/tools/btpclient.c
> @@ -971,7 +971,7 @@ static void setup_ad_interface(struct l_dbus_interface
> *interface) ad_serviceuuids_getter, NULL);
> l_dbus_interface_property(interface, "ServiceData", 0, "a{sv}",
> ad_servicedata_getter, NULL);
> - l_dbus_interface_property(interface, "ManufacturerServiceData", 0,
> + l_dbus_interface_property(interface, "ManufacturerData", 0,
> "a{qv}", ad_manufacturerdata_getter,
> NULL);
> l_dbus_interface_property(interface, "Includes", 0, "as",

Patches 1 and 2 are now applied, thanks.

--
pozdrawiam
Szymon Janc



2018-02-12 16:01:02

by Grzegorz Kołodziejczyk

[permalink] [raw]
Subject: [PATCH BlueZ 4/4] tools/btpclient: Check if dev is connected in device found ev routine

Device may be connected while device found event is generated thus thus
btp should generate additional device connected event also.
---
tools/btpclient.c | 32 +++++++++++++++++++++++---------
1 file changed, 23 insertions(+), 9 deletions(-)

diff --git a/tools/btpclient.c b/tools/btpclient.c
index 8b5794c8b..cd2ac99af 100644
--- a/tools/btpclient.c
+++ b/tools/btpclient.c
@@ -2419,24 +2419,30 @@ failed:

static void btp_gap_device_found_ev(struct l_dbus_proxy *proxy)
{
+ struct btp_device *device = find_device_by_proxy(proxy);
+ struct btp_adapter *adapter = find_adapter_by_device(device);
struct btp_device_found_ev ev;
- const char *str;
+ struct btp_gap_device_connected_ev ev_conn;
+ const char *str, *addr_str;
int16_t rssi;
+ uint8_t address_type;
+ bool connected;

- if (!l_dbus_proxy_get_property(proxy, "Address", "s", &str) ||
- str2ba(str, &ev.address) < 0)
+ if (!l_dbus_proxy_get_property(proxy, "Address", "s", &addr_str) ||
+ str2ba(addr_str, &ev.address) < 0)
return;

if (!l_dbus_proxy_get_property(proxy, "AddressType", "s", &str))
return;

- ev.address_type = strcmp(str, "public") ? BTP_GAP_ADDR_RANDOM :
+ address_type = strcmp(str, "public") ? BTP_GAP_ADDR_RANDOM :
BTP_GAP_ADDR_PUBLIC;
+ ev.address_type = address_type;

if (!l_dbus_proxy_get_property(proxy, "RSSI", "n", &rssi))
- return;
-
- ev.rssi = rssi;
+ ev.rssi = 0x81;
+ else
+ ev.rssi = rssi;

/* TODO Temporary set all flags */
ev.flags = (BTP_EV_GAP_DEVICE_FOUND_FLAG_RSSI |
@@ -2446,9 +2452,17 @@ static void btp_gap_device_found_ev(struct l_dbus_proxy *proxy)
/* TODO Add eir to device found event */
ev.eir_len = 0;

- btp_send(btp, BTP_GAP_SERVICE, BTP_EV_GAP_DEVICE_FOUND,
- BTP_INDEX_NON_CONTROLLER,
+ btp_send(btp, BTP_GAP_SERVICE, BTP_EV_GAP_DEVICE_FOUND, adapter->index,
sizeof(ev) + ev.eir_len, &ev);
+
+ if (l_dbus_proxy_get_property(proxy, "Connected", "b", &connected) &&
+ connected) {
+ ev_conn.address_type = address_type;
+ str2ba(addr_str, &ev_conn.address);
+
+ btp_send(btp, BTP_GAP_SERVICE, BTP_EV_GAP_DEVICE_CONNECTED,
+ adapter->index, sizeof(ev_conn), &ev_conn);
+ }
}

static void btp_gap_device_connection_ev(struct l_dbus_proxy *proxy,
--
2.13.6


2018-02-12 16:01:01

by Grzegorz Kołodziejczyk

[permalink] [raw]
Subject: [PATCH BlueZ 3/4] tools/btpclient: Add passkey confirm ev and passkey confirm rsp cmd

This patch adds passkey confirm command handler and passkey confirm
event.
---
tools/btpclient.c | 38 ++++++++++++++++++++++++++++++++++----
1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/tools/btpclient.c b/tools/btpclient.c
index 61bde820e..8b5794c8b 100644
--- a/tools/btpclient.c
+++ b/tools/btpclient.c
@@ -1700,12 +1700,42 @@ static struct l_dbus_message *ag_request_confirmation_call(struct l_dbus *dbus,
struct l_dbus_message *message,
void *user_data)
{
- struct l_dbus_message *reply;
+ struct btp_gap_passkey_confirm_ev ev;
+ struct btp_device *device;
+ struct btp_adapter *adapter;
+ const char *path, *str_addr, *str_addr_type;
+ uint32_t passkey;

- reply = l_dbus_message_new_method_return(message);
- l_dbus_message_set_arguments(reply, "");
+ l_dbus_message_get_arguments(message, "ou", &path, &passkey);

- return reply;
+ device = find_device_by_path(path);
+
+ if (!l_dbus_proxy_get_property(device->proxy, "Address", "s", &str_addr)
+ || !l_dbus_proxy_get_property(device->proxy, "AddressType", "s",
+ &str_addr_type)) {
+ l_info("Cannot get device properties");
+
+ return NULL;
+ }
+
+ ev.passkey = L_CPU_TO_LE32(passkey);
+ ev.address_type = strcmp(str_addr_type, "public") ?
+ BTP_GAP_ADDR_RANDOM :
+ BTP_GAP_ADDR_PUBLIC;
+ if (str2ba(str_addr, &ev.address) < 0) {
+ l_info("Incorrect device address");
+
+ return NULL;
+ }
+
+ adapter = find_adapter_by_device(device);
+
+ ag.pending_req = l_dbus_message_ref(message);
+
+ btp_send(btp, BTP_GAP_SERVICE, BTP_EV_GAP_PASSKEY_CONFIRM,
+ adapter->index, sizeof(ev), &ev);
+
+ return NULL;
}

static struct l_dbus_message *ag_request_authorization_call(struct l_dbus *dbus,
--
2.13.6


2018-02-12 16:01:00

by Grzegorz Kołodziejczyk

[permalink] [raw]
Subject: [PATCH BlueZ 2/4] shared/btp: Change struct member order for device found as in btp

This patch changes member order in device found struct definition to be
compatible with btp specification.
---
src/shared/btp.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/shared/btp.h b/src/shared/btp.h
index 0b605be18..f0ac3a1ee 100644
--- a/src/shared/btp.h
+++ b/src/shared/btp.h
@@ -247,8 +247,8 @@ struct btp_new_settings_ev {

#define BTP_EV_GAP_DEVICE_FOUND 0x81
struct btp_device_found_ev {
- bdaddr_t address;
uint8_t address_type;
+ bdaddr_t address;
int8_t rssi;
uint8_t flags;
uint16_t eir_len;
--
2.13.6