All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v3 0/2] Expose AdvertisingFlags in Device API
@ 2016-10-20  2:03 puthik
  2016-10-20  2:03 ` [PATCH v3 1/2] doc/device-api: Add AdvertisingFlags puthik
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: puthik @ 2016-10-20  2:03 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Puthikorn Voravootivat

From: Puthikorn Voravootivat <puthik@chromium.org>

v2:
Address Marcel's review to make it more future proof by making it array{byte}.

v3:
Mark AdvertisingFlags as experimental

Puthikorn Voravootivat (2):
  doc/device-api: Add AdvertisingFlags
  core: Add implementation of AdvertisingFlags

 doc/device-api.txt |  4 ++++
 src/adapter.c      |  2 ++
 src/device.c       | 37 +++++++++++++++++++++++++++++++++++++
 src/device.h       |  1 +
 4 files changed, 44 insertions(+)

-- 
2.8.0.rc3.226.g39d4020


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

* [PATCH v3 1/2] doc/device-api: Add AdvertisingFlags
  2016-10-20  2:03 [PATCH v3 0/2] Expose AdvertisingFlags in Device API puthik
@ 2016-10-20  2:03 ` puthik
  2016-10-20  2:03 ` [PATCH v3 2/2] core: Add implementation of AdvertisingFlags puthik
  2016-10-20 11:20 ` [PATCH v3 0/2] Expose AdvertisingFlags in Device API Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: puthik @ 2016-10-20  2:03 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Puthikorn Voravootivat

From: Puthikorn Voravootivat <puthik@chromium.org>

This exposed Advertising Flags to BlueZ Device API

Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
---
 doc/device-api.txt | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/doc/device-api.txt b/doc/device-api.txt
index f5cac49..13b2881 100644
--- a/doc/device-api.txt
+++ b/doc/device-api.txt
@@ -230,3 +230,7 @@ Properties	string Address [readonly]
 
 			Indicate whether or not service discovery has been
 			resolved.
+
+		array{byte} AdvertisingFlags [readonly, experimental]
+
+			The Advertising Data Flags of the remote device.
-- 
2.8.0.rc3.226.g39d4020


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

* [PATCH v3 2/2] core: Add implementation of AdvertisingFlags
  2016-10-20  2:03 [PATCH v3 0/2] Expose AdvertisingFlags in Device API puthik
  2016-10-20  2:03 ` [PATCH v3 1/2] doc/device-api: Add AdvertisingFlags puthik
@ 2016-10-20  2:03 ` puthik
  2016-10-20 11:20 ` [PATCH v3 0/2] Expose AdvertisingFlags in Device API Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: puthik @ 2016-10-20  2:03 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Puthikorn Voravootivat

From: Puthikorn Voravootivat <puthik@chromium.org>

This adds 'AdvertisingFlags' property to Device interface.

Bluetooth Core Supplementary Spec v6 Chapter 1.3 defines Bluetooth
Flags as one of the data in advertise data. BlueZ also correctly
parses this data but never exposes it to upper layer.

Signed-off-by: Puthikorn Voravootivat <puthik@chromium.org>
---
 src/adapter.c |  2 ++
 src/device.c  | 37 +++++++++++++++++++++++++++++++++++++
 src/device.h  |  1 +
 3 files changed, 40 insertions(+)

diff --git a/src/adapter.c b/src/adapter.c
index b096d48..1abb5c0 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -5552,6 +5552,8 @@ static void update_found_devices(struct btd_adapter *adapter,
 	if (eir_data.sd_list)
 		device_set_service_data(dev, eir_data.sd_list);
 
+	device_set_flags(dev, eir_data.flags);
+
 	eir_data_free(&eir_data);
 
 	/*
diff --git a/src/device.c b/src/device.c
index fb6104f..d06b5bf 100644
--- a/src/device.c
+++ b/src/device.c
@@ -247,6 +247,8 @@ struct btd_device {
 
 	GIOChannel	*att_io;
 	guint		store_id;
+
+	uint8_t         flags;
 };
 
 static const uint16_t uuid_list[] = {
@@ -939,6 +941,23 @@ dev_property_get_svc_resolved(const GDBusPropertyTable *property,
 	return TRUE;
 }
 
+static gboolean
+dev_property_get_flags(const GDBusPropertyTable *property,
+					DBusMessageIter *iter, void *data)
+{
+	struct btd_device *device = data;
+	uint8_t flags[] = { device->flags };
+	DBusMessageIter array;
+
+	dbus_message_iter_open_container(iter, DBUS_TYPE_ARRAY,
+					DBUS_TYPE_BYTE_AS_STRING, &array);
+	dbus_message_iter_append_fixed_array(&array, DBUS_TYPE_BYTE,
+						&flags, sizeof(flags));
+	dbus_message_iter_close_container(iter, &array);
+
+	return TRUE;
+}
+
 static gboolean dev_property_get_trusted(const GDBusPropertyTable *property,
 					DBusMessageIter *iter, void *data)
 {
@@ -2534,6 +2553,8 @@ static const GDBusPropertyTable device_properties[] = {
 	{ "TxPower", "n", dev_property_get_tx_power, NULL,
 					dev_property_exists_tx_power },
 	{ "ServicesResolved", "b", dev_property_get_svc_resolved, NULL, NULL },
+	{ "AdvertisingFlags", "ay", dev_property_get_flags, NULL, NULL,
+					G_DBUS_PROPERTY_FLAG_EXPERIMENTAL},
 
 	{ }
 };
@@ -5221,6 +5242,22 @@ void device_set_tx_power(struct btd_device *device, int8_t tx_power)
 						DEVICE_INTERFACE, "TxPower");
 }
 
+void device_set_flags(struct btd_device *device, uint8_t flags)
+{
+	if (!device)
+		return;
+
+	DBG("flags %d", flags);
+
+	if (device->flags == flags)
+		return;
+
+	device->flags = flags;
+
+	g_dbus_emit_property_changed(dbus_conn, device->path,
+					DEVICE_INTERFACE, "AdvertisingFlags");
+}
+
 static gboolean start_discovery(gpointer user_data)
 {
 	struct btd_device *device = user_data;
diff --git a/src/device.h b/src/device.h
index 387f598..93a159a 100644
--- a/src/device.h
+++ b/src/device.h
@@ -97,6 +97,7 @@ void device_set_rssi_with_delta(struct btd_device *device, int8_t rssi,
 							int8_t delta_threshold);
 void device_set_rssi(struct btd_device *device, int8_t rssi);
 void device_set_tx_power(struct btd_device *device, int8_t tx_power);
+void device_set_flags(struct btd_device *device, uint8_t flags);
 bool btd_device_is_connected(struct btd_device *dev);
 uint8_t btd_device_get_bdaddr_type(struct btd_device *dev);
 bool device_is_retrying(struct btd_device *device);
-- 
2.8.0.rc3.226.g39d4020


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

* Re: [PATCH v3 0/2] Expose AdvertisingFlags in Device API
  2016-10-20  2:03 [PATCH v3 0/2] Expose AdvertisingFlags in Device API puthik
  2016-10-20  2:03 ` [PATCH v3 1/2] doc/device-api: Add AdvertisingFlags puthik
  2016-10-20  2:03 ` [PATCH v3 2/2] core: Add implementation of AdvertisingFlags puthik
@ 2016-10-20 11:20 ` Luiz Augusto von Dentz
  2 siblings, 0 replies; 4+ messages in thread
From: Luiz Augusto von Dentz @ 2016-10-20 11:20 UTC (permalink / raw)
  To: Puthikorn Voravootivat; +Cc: linux-bluetooth

Hi,

On Thu, Oct 20, 2016 at 5:03 AM,  <puthik@chromium.org> wrote:
> From: Puthikorn Voravootivat <puthik@chromium.org>
>
> v2:
> Address Marcel's review to make it more future proof by making it array{byte}.
>
> v3:
> Mark AdvertisingFlags as experimental
>
> Puthikorn Voravootivat (2):
>   doc/device-api: Add AdvertisingFlags
>   core: Add implementation of AdvertisingFlags
>
>  doc/device-api.txt |  4 ++++
>  src/adapter.c      |  2 ++
>  src/device.c       | 37 +++++++++++++++++++++++++++++++++++++
>  src/device.h       |  1 +
>  4 files changed, 44 insertions(+)
>
> --
> 2.8.0.rc3.226.g39d4020

Applied, thanks.

-- 
Luiz Augusto von Dentz

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

end of thread, other threads:[~2016-10-20 11:20 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-10-20  2:03 [PATCH v3 0/2] Expose AdvertisingFlags in Device API puthik
2016-10-20  2:03 ` [PATCH v3 1/2] doc/device-api: Add AdvertisingFlags puthik
2016-10-20  2:03 ` [PATCH v3 2/2] core: Add implementation of AdvertisingFlags puthik
2016-10-20 11:20 ` [PATCH v3 0/2] Expose AdvertisingFlags in Device API Luiz Augusto von Dentz

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.