linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces
@ 2017-12-13 13:51 Szymon Janc
  2017-12-13 13:51 ` [PATCH v2 2/4] adapter: Add support for AddressType property Szymon Janc
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Szymon Janc @ 2017-12-13 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

This provides information about address type being used.  It is needed
for L2CAP sockets and PTS testing purposes.
---
 doc/adapter-api.txt | 12 ++++++++++++
 doc/device-api.txt  | 13 +++++++++++++
 2 files changed, 25 insertions(+)

diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
index d852aa6b9..0533b674a 100644
--- a/doc/adapter-api.txt
+++ b/doc/adapter-api.txt
@@ -149,6 +149,18 @@ Properties	string Address [readonly]
 
 			The Bluetooth device address.
 
+		string AddressType [readonly]
+
+			The Bluetooth  Address Type. For dual-mode and BR/EDR
+			only adapter this defaults to "public". Single mode LE
+			adapters may have either value. With privacy enabled
+			this contains type of Identity Address and not type of
+			address used for connection.
+
+			Possible values:
+				"public" - Public address
+				"random" - Random address
+
 		string Name [readonly]
 
 			The Bluetooth system name (pretty hostname).
diff --git a/doc/device-api.txt b/doc/device-api.txt
index 8b69c2ef3..1b448eef1 100644
--- a/doc/device-api.txt
+++ b/doc/device-api.txt
@@ -124,6 +124,19 @@ Properties	string Address [readonly]
 
 			The Bluetooth device address of the remote device.
 
+		string AddressType [readonly]
+
+			The Bluetooth device Address Type. For dual-mode and
+			BR/EDR only devices this defaults to "public". Single
+			mode LE devices may have either value. If remote device
+			uses privacy than before pairing this represents address
+			type used for connection and Identity Address after
+			pairing.
+
+			Possible values:
+				"public" - Public address
+				"random" - Random address
+
 		string Name [readonly, optional]
 
 			The Bluetooth remote name. This value can not be
-- 
2.14.3


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

* [PATCH v2 2/4] adapter: Add support for AddressType property
  2017-12-13 13:51 [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces Szymon Janc
@ 2017-12-13 13:51 ` Szymon Janc
  2017-12-13 13:51 ` [PATCH v2 3/4] device: " Szymon Janc
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Szymon Janc @ 2017-12-13 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

---
 src/adapter.c | 18 ++++++++++++++++++
 1 file changed, 18 insertions(+)

diff --git a/src/adapter.c b/src/adapter.c
index 7ac3d20a1..0a25ae27e 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2539,6 +2539,23 @@ static gboolean property_get_address(const GDBusPropertyTable *property,
 	return TRUE;
 }
 
+static gboolean property_get_address_type(const GDBusPropertyTable *property,
+					DBusMessageIter *iter, void *user_data)
+{
+	struct btd_adapter *adapter = user_data;
+	const char *str;
+
+	if ((adapter->current_settings & MGMT_SETTING_LE) &&
+				(adapter->bdaddr_type == BDADDR_LE_RANDOM))
+		str = "random";
+	else
+		str = "public";
+
+	dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &str);
+
+	return TRUE;
+}
+
 static gboolean property_get_name(const GDBusPropertyTable *property,
 					DBusMessageIter *iter, void *user_data)
 {
@@ -3079,6 +3096,7 @@ static const GDBusMethodTable adapter_methods[] = {
 
 static const GDBusPropertyTable adapter_properties[] = {
 	{ "Address", "s", property_get_address },
+	{ "AddressType", "s", property_get_address_type },
 	{ "Name", "s", property_get_name },
 	{ "Alias", "s", property_get_alias, property_set_alias },
 	{ "Class", "u", property_get_class },
-- 
2.14.3


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

* [PATCH v2 3/4] device: Add support for AddressType property
  2017-12-13 13:51 [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces Szymon Janc
  2017-12-13 13:51 ` [PATCH v2 2/4] adapter: Add support for AddressType property Szymon Janc
@ 2017-12-13 13:51 ` Szymon Janc
  2017-12-13 13:51 ` [PATCH v2 4/4] client: Print Address type in show and info commands Szymon Janc
  2017-12-19 12:00 ` [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces Szymon Janc
  3 siblings, 0 replies; 5+ messages in thread
From: Szymon Janc @ 2017-12-13 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

---
 src/device.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/src/device.c b/src/device.c
index 9f9c47807..72f18b309 100644
--- a/src/device.c
+++ b/src/device.c
@@ -727,6 +727,22 @@ static gboolean dev_property_get_address(const GDBusPropertyTable *property,
 	return TRUE;
 }
 
+static gboolean property_get_address_type(const GDBusPropertyTable *property,
+					DBusMessageIter *iter, void *user_data)
+{
+	struct btd_device *device = user_data;
+	const char *str;
+
+	if (device->le && device->bdaddr_type == BDADDR_LE_RANDOM)
+		str = "random";
+	else
+		str = "public";
+
+	dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &str);
+
+	return TRUE;
+}
+
 static gboolean dev_property_get_name(const GDBusPropertyTable *property,
 					DBusMessageIter *iter, void *data)
 {
@@ -2607,6 +2623,7 @@ static const GDBusMethodTable device_methods[] = {
 
 static const GDBusPropertyTable device_properties[] = {
 	{ "Address", "s", dev_property_get_address },
+	{ "AddressType", "s", property_get_address_type },
 	{ "Name", "s", dev_property_get_name, NULL, dev_property_exists_name },
 	{ "Alias", "s", dev_property_get_alias, dev_property_set_alias },
 	{ "Class", "u", dev_property_get_class, NULL,
@@ -3850,6 +3867,8 @@ void device_update_addr(struct btd_device *device, const bdaddr_t *bdaddr,
 
 	g_dbus_emit_property_changed(dbus_conn, device->path,
 						DEVICE_INTERFACE, "Address");
+	g_dbus_emit_property_changed(dbus_conn, device->path,
+					DEVICE_INTERFACE, "AddressType");
 }
 
 void device_set_bredr_support(struct btd_device *device)
-- 
2.14.3


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

* [PATCH v2 4/4] client: Print Address type in show and info commands
  2017-12-13 13:51 [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces Szymon Janc
  2017-12-13 13:51 ` [PATCH v2 2/4] adapter: Add support for AddressType property Szymon Janc
  2017-12-13 13:51 ` [PATCH v2 3/4] device: " Szymon Janc
@ 2017-12-13 13:51 ` Szymon Janc
  2017-12-19 12:00 ` [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces Szymon Janc
  3 siblings, 0 replies; 5+ messages in thread
From: Szymon Janc @ 2017-12-13 13:51 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Szymon Janc

---
 client/main.c | 22 ++++++++++++++++++++--
 1 file changed, 20 insertions(+), 2 deletions(-)

diff --git a/client/main.c b/client/main.c
index f3369e89a..c435ee677 100644
--- a/client/main.c
+++ b/client/main.c
@@ -864,7 +864,16 @@ static void cmd_show(int argc, char *argv[])
 		return;
 
 	dbus_message_iter_get_basic(&iter, &address);
-	bt_shell_printf("Controller %s\n", address);
+
+	if (g_dbus_proxy_get_property(proxy, "AddressType", &iter) == TRUE) {
+		const char *type;
+
+		dbus_message_iter_get_basic(&iter, &type);
+
+		bt_shell_printf("Controller %s (%s)\n", address, type);
+	} else {
+		bt_shell_printf("Controller %s\n", address);
+	}
 
 	print_property(proxy, "Name");
 	print_property(proxy, "Alias");
@@ -1435,7 +1444,16 @@ static void cmd_info(int argc, char *argv[])
 		return;
 
 	dbus_message_iter_get_basic(&iter, &address);
-	bt_shell_printf("Device %s\n", address);
+
+	if (g_dbus_proxy_get_property(proxy, "AddressType", &iter) == TRUE) {
+		const char *type;
+
+		dbus_message_iter_get_basic(&iter, &type);
+
+		bt_shell_printf("Device %s (%s)\n", address, type);
+	} else {
+		bt_shell_printf("Device %s\n", address);
+	}
 
 	print_property(proxy, "Name");
 	print_property(proxy, "Alias");
-- 
2.14.3


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

* Re: [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces
  2017-12-13 13:51 [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces Szymon Janc
                   ` (2 preceding siblings ...)
  2017-12-13 13:51 ` [PATCH v2 4/4] client: Print Address type in show and info commands Szymon Janc
@ 2017-12-19 12:00 ` Szymon Janc
  3 siblings, 0 replies; 5+ messages in thread
From: Szymon Janc @ 2017-12-19 12:00 UTC (permalink / raw)
  To: linux-bluetooth

On Wednesday, 13 December 2017 14:51:07 CET Szymon Janc wrote:
> This provides information about address type being used.  It is needed
> for L2CAP sockets and PTS testing purposes.
> ---
>  doc/adapter-api.txt | 12 ++++++++++++
>  doc/device-api.txt  | 13 +++++++++++++
>  2 files changed, 25 insertions(+)
> 
> diff --git a/doc/adapter-api.txt b/doc/adapter-api.txt
> index d852aa6b9..0533b674a 100644
> --- a/doc/adapter-api.txt
> +++ b/doc/adapter-api.txt
> @@ -149,6 +149,18 @@ Properties	string Address [readonly]
> 
>  			The Bluetooth device address.
> 
> +		string AddressType [readonly]
> +
> +			The Bluetooth  Address Type. For dual-mode and BR/EDR
> +			only adapter this defaults to "public". Single mode LE
> +			adapters may have either value. With privacy enabled
> +			this contains type of Identity Address and not type of
> +			address used for connection.
> +
> +			Possible values:
> +				"public" - Public address
> +				"random" - Random address
> +
>  		string Name [readonly]
> 
>  			The Bluetooth system name (pretty hostname).
> diff --git a/doc/device-api.txt b/doc/device-api.txt
> index 8b69c2ef3..1b448eef1 100644
> --- a/doc/device-api.txt
> +++ b/doc/device-api.txt
> @@ -124,6 +124,19 @@ Properties	string Address [readonly]
> 
>  			The Bluetooth device address of the remote device.
> 
> +		string AddressType [readonly]
> +
> +			The Bluetooth device Address Type. For dual-mode and
> +			BR/EDR only devices this defaults to "public". Single
> +			mode LE devices may have either value. If remote device
> +			uses privacy than before pairing this represents address
> +			type used for connection and Identity Address after
> +			pairing.
> +
> +			Possible values:
> +				"public" - Public address
> +				"random" - Random address
> +
>  		string Name [readonly, optional]
> 
>  			The Bluetooth remote name. This value can not be

Applied.

-- 
pozdrawiam
Szymon Janc

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

end of thread, other threads:[~2017-12-19 12:00 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-12-13 13:51 [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces Szymon Janc
2017-12-13 13:51 ` [PATCH v2 2/4] adapter: Add support for AddressType property Szymon Janc
2017-12-13 13:51 ` [PATCH v2 3/4] device: " Szymon Janc
2017-12-13 13:51 ` [PATCH v2 4/4] client: Print Address type in show and info commands Szymon Janc
2017-12-19 12:00 ` [PATCH v2 1/4] Add AddressType property for Adapter1 and Device1 interfaces Szymon Janc

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).