linux-bluetooth.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH BlueZ 0/2] Store address type on storage
@ 2012-05-18 20:57 Paulo Alcantara
  2012-05-18 20:57 ` [PATCH BlueZ 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
                   ` (3 more replies)
  0 siblings, 4 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-18 20:57 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Paulo Alcantara

BLE devices have two different address types: public or
random. So we need to provide this address type on keys in
the "primary" file to avoid duplicate BLE address types
around the BlueZ.

This series changes the storage to store the address type
together with the device address.

Hemant Gupta has been working on this on "Store LE device
address type with primary list" but his patch hasn't been
accepted and he didn't send a new reviewed version of that
patch.

I have patches for the other storage files as well, I'll send
them when this series is integrated upstream.

Claudio Takahasi (1):
  core: Fix creating device from "primary" file

Paulo Alcantara (1):
  storage: Store BLE address type in "primary" file

 src/adapter.c |   10 +++++++---
 src/device.c  |    2 +-
 src/storage.c |   30 ++++++++++++++++++++++++++----
 src/storage.h |    5 +++--
 4 files changed, 37 insertions(+), 10 deletions(-)

-- 
1.7.7.6


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

* [PATCH BlueZ 1/2] storage: Store BLE address type in "primary" file
  2012-05-18 20:57 [PATCH BlueZ 0/2] Store address type on storage Paulo Alcantara
@ 2012-05-18 20:57 ` Paulo Alcantara
  2012-05-19  6:41   ` Johan Hedberg
  2012-05-18 20:57 ` [PATCH BlueZ 2/2] core: Fix creating device from " Paulo Alcantara
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-18 20:57 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Paulo Alcantara

BLE addressing types can be either public or random so the entries in
the "primary" file did not contain enough information to distinguish
which addressing type it's supposed to be (LE public or LE random).
Entries will now contain both BLE address number and BLE address type
as a single key in every entry in the file.
---
 src/device.c  |    2 +-
 src/storage.c |   40 ++++++++++++++++++++++++++++++++--------
 src/storage.h |    5 +++--
 3 files changed, 36 insertions(+), 11 deletions(-)

diff --git a/src/device.c b/src/device.c
index 2695b16..fd13bc3 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1759,7 +1759,7 @@ static void store_services(struct btd_device *device)
 	adapter_get_address(adapter, &sba);
 	device_get_address(device, &dba, NULL);
 
-	write_device_services(&sba, &dba, str);
+	write_device_services(&sba, &dba, device->bdaddr_type, str);
 
 	g_free(str);
 }
diff --git a/src/storage.c b/src/storage.c
index 14e5ac3..815060e 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -61,6 +61,19 @@ static inline int create_filename(char *buf, size_t size,
 	return create_name(buf, size, STORAGEDIR, addr, name);
 }
 
+static inline char ba_type2char(uint8_t bdaddr_type)
+{
+	switch (bdaddr_type) {
+	case BDADDR_LE_PUBLIC:
+		return '1';
+	case BDADDR_LE_RANDOM:
+		return '2';
+	case BDADDR_BREDR:
+	default:
+		return '0';
+	}
+}
+
 int read_device_alias(const char *src, const char *dst, char *alias, size_t size)
 {
 	char filename[PATH_MAX + 1], *tmp;
@@ -1162,17 +1175,22 @@ int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
 }
 
 int write_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
-							const char *services)
+			  uint8_t bdaddr_type, const char *services)
 {
-	char filename[PATH_MAX + 1], addr[18];
+	char filename[PATH_MAX + 1], key[20];
 
 	create_filename(filename, PATH_MAX, sba, "primary");
 
 	create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
 
-	ba2str(dba, addr);
+	memset(key, 0, sizeof(key));
 
-	return textfile_put(filename, addr, services);
+	/* New format: address#type */
+	ba2str(dba, key);
+	key[17] = '#';
+	key[18] = ba_type2char(bdaddr_type);
+
+	return textfile_put(filename, key, services);
 }
 
 static void filter_keys(char *key, char *value, void *data)
@@ -1228,15 +1246,21 @@ int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba)
 	return textfile_del(filename, address);
 }
 
-char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba)
+char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
+							uint8_t bdaddr_type)
 {
-	char filename[PATH_MAX + 1], addr[18];
+	char filename[PATH_MAX + 1], key[20];
 
 	create_filename(filename, PATH_MAX, sba, "primary");
 
-	ba2str(dba, addr);
+	memset(key, 0, sizeof(key));
 
-	return textfile_caseget(filename, addr);
+	/* New format: address#type */
+	ba2str(dba, key);
+	key[17] = '#';
+	key[18] = ba_type2char(bdaddr_type);
+
+	return textfile_caseget(filename, key);
 }
 
 int write_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
diff --git a/src/storage.h b/src/storage.h
index 6255ae8..745aff8 100644
--- a/src/storage.h
+++ b/src/storage.h
@@ -76,9 +76,10 @@ gboolean read_blocked(const bdaddr_t *local, const bdaddr_t *remote);
 int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
 							gboolean blocked);
 int write_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
-							const char *services);
+				uint8_t bdaddr_type, const char *services);
 int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba);
-char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba);
+char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
+							uint8_t bdaddr_type);
 int write_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
 					uint16_t handle, const char *chars);
 char *read_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
-- 
1.7.7.6


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

* [PATCH BlueZ 2/2] core: Fix creating device from "primary" file
  2012-05-18 20:57 [PATCH BlueZ 0/2] Store address type on storage Paulo Alcantara
  2012-05-18 20:57 ` [PATCH BlueZ 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
@ 2012-05-18 20:57 ` Paulo Alcantara
  2012-05-19  6:43   ` Johan Hedberg
  2012-05-21 20:48 ` [PATCH BlueZ v2 0/2] Address type in keys on storage filesystem Paulo Alcantara
  2012-05-22 19:45 ` [PATCH BlueZ v3 0/3] Store address type on storage Paulo Alcantara
  3 siblings, 1 reply; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-18 20:57 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Claudio Takahasi

From: Claudio Takahasi <claudio.takahasi@openbossa.org>

This patch removes the hard-coded address type for the BLE device
created from the storage.
---
 src/adapter.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/adapter.c b/src/adapter.c
index dafe595..8d86ca8 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1940,13 +1940,17 @@ static void create_stored_device_from_primary(char *key, char *value,
 	struct btd_adapter *adapter = user_data;
 	struct btd_device *device;
 	GSList *services, *uuids, *l;
+	char address[18];
+	uint8_t bdaddr_type;
+
+	if (sscanf(key, "%17s#%hhu", address, &bdaddr_type) != 2)
+		return;
 
 	if (g_slist_find_custom(adapter->devices,
-			key, (GCompareFunc) device_address_cmp))
+			address, (GCompareFunc) device_address_cmp))
 		return;
 
-	/* FIXME: Get the correct LE addr type (public/random) */
-	device = device_create(connection, adapter, key, BDADDR_LE_PUBLIC);
+	device = device_create(connection, adapter, address, bdaddr_type);
 	if (!device)
 		return;
 
-- 
1.7.7.6


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

* Re: [PATCH BlueZ 1/2] storage: Store BLE address type in "primary" file
  2012-05-18 20:57 ` [PATCH BlueZ 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
@ 2012-05-19  6:41   ` Johan Hedberg
  2012-05-21 20:52     ` Paulo Alcantara
  0 siblings, 1 reply; 19+ messages in thread
From: Johan Hedberg @ 2012-05-19  6:41 UTC (permalink / raw)
  To: Paulo Alcantara; +Cc: linux-bluetooth

Hi Paulo,

On Fri, May 18, 2012, Paulo Alcantara wrote:
> +static inline char ba_type2char(uint8_t bdaddr_type)
> +{
> +	switch (bdaddr_type) {
> +	case BDADDR_LE_PUBLIC:
> +		return '1';
> +	case BDADDR_LE_RANDOM:
> +		return '2';
> +	case BDADDR_BREDR:
> +	default:
> +		return '0';
> +	}
> +}
> +
>  int read_device_alias(const char *src, const char *dst, char *alias, size_t size)
>  {
>  	char filename[PATH_MAX + 1], *tmp;
> @@ -1162,17 +1175,22 @@ int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
>  }
>  
>  int write_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
> -							const char *services)
> +			  uint8_t bdaddr_type, const char *services)
>  {
> -	char filename[PATH_MAX + 1], addr[18];
> +	char filename[PATH_MAX + 1], key[20];
>  
>  	create_filename(filename, PATH_MAX, sba, "primary");
>  
>  	create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
>  
> -	ba2str(dba, addr);
> +	memset(key, 0, sizeof(key));
>  
> -	return textfile_put(filename, addr, services);
> +	/* New format: address#type */
> +	ba2str(dba, key);
> +	key[17] = '#';
> +	key[18] = ba_type2char(bdaddr_type);

Wouldn't sprintf(&key[17], "#%hhu", bdaddr_type); be much simpler?

> +char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
> +							uint8_t bdaddr_type)
>  {
> -	char filename[PATH_MAX + 1], addr[18];
> +	char filename[PATH_MAX + 1], key[20];
>  
>  	create_filename(filename, PATH_MAX, sba, "primary");
>  
> -	ba2str(dba, addr);
> +	memset(key, 0, sizeof(key));
>  
> -	return textfile_caseget(filename, addr);
> +	/* New format: address#type */
> +	ba2str(dba, key);
> +	key[17] = '#';
> +	key[18] = ba_type2char(bdaddr_type);

Same here.

Johan

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

* Re: [PATCH BlueZ 2/2] core: Fix creating device from "primary" file
  2012-05-18 20:57 ` [PATCH BlueZ 2/2] core: Fix creating device from " Paulo Alcantara
@ 2012-05-19  6:43   ` Johan Hedberg
  2012-05-21 20:56     ` Paulo Alcantara
  0 siblings, 1 reply; 19+ messages in thread
From: Johan Hedberg @ 2012-05-19  6:43 UTC (permalink / raw)
  To: Paulo Alcantara; +Cc: linux-bluetooth, Claudio Takahasi

Hi,

On Fri, May 18, 2012, Paulo Alcantara wrote:
> This patch removes the hard-coded address type for the BLE device
> created from the storage.
> ---
>  src/adapter.c |   10 +++++++---
>  1 files changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/src/adapter.c b/src/adapter.c
> index dafe595..8d86ca8 100644
> --- a/src/adapter.c
> +++ b/src/adapter.c
> @@ -1940,13 +1940,17 @@ static void create_stored_device_from_primary(char *key, char *value,
>  	struct btd_adapter *adapter = user_data;
>  	struct btd_device *device;
>  	GSList *services, *uuids, *l;
> +	char address[18];
> +	uint8_t bdaddr_type;
> +
> +	if (sscanf(key, "%17s#%hhu", address, &bdaddr_type) != 2)
> +		return;

What about entries created by older bluetoothd versions? Will they be
stuck in the storage forever without a way to remove them through the
usual API? Instead of checking for != 2 maybe the check should instead
be < 1 and bdaddr_type be pre-initialized to BDADDR_LE_PUBLIC.

Johan

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

* [PATCH BlueZ v2 0/2] Address type in keys on storage filesystem
  2012-05-18 20:57 [PATCH BlueZ 0/2] Store address type on storage Paulo Alcantara
  2012-05-18 20:57 ` [PATCH BlueZ 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
  2012-05-18 20:57 ` [PATCH BlueZ 2/2] core: Fix creating device from " Paulo Alcantara
@ 2012-05-21 20:48 ` Paulo Alcantara
  2012-05-21 20:48   ` [PATCH BlueZ v2 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
  2012-05-21 20:48   ` [PATCH BlueZ v2 2/2] core: Fix creating device from " Paulo Alcantara
  2012-05-22 19:45 ` [PATCH BlueZ v3 0/3] Store address type on storage Paulo Alcantara
  3 siblings, 2 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-21 20:48 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Paulo Alcantara

BLE devices have two different address types: public or
random. So we need to provide this address type on keys
in the "primary" file to avoid duplicate BLE address types
around the BlueZ.

This series changes the storage to store the address type
together with the device address.

Hemant Gupta has been working on this on "Store LE device address
type with primary list" but his patch hasn't been accepted and
he didn't send a new reviewed version of that patch.

I have patches for the other storage files as well, I'll
send them soon. There is a potential problem in
device_address_cmp() function which checks the address only.
I am investigating how to fix it to compare address and type
without breaking the current code.

v2's changes:
     - Use sprintf() instead of setting values by indexing
       strings.
     - Keep backward compatibility with entries created by
       older bluetoothd versions.

Claudio Takahasi (1):
  core: Fix creating device from "primary" file

Paulo Alcantara (1):
  storage: Store BLE address type in "primary" file

 src/adapter.c |   10 +++++++---
 src/device.c  |    2 +-
 src/storage.c |   32 ++++++++++++++++++++++++--------
 src/storage.h |    5 +++--
 4 files changed, 35 insertions(+), 14 deletions(-)

-- 
1.7.7.6


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

* [PATCH BlueZ v2 1/2] storage: Store BLE address type in "primary" file
  2012-05-21 20:48 ` [PATCH BlueZ v2 0/2] Address type in keys on storage filesystem Paulo Alcantara
@ 2012-05-21 20:48   ` Paulo Alcantara
  2012-05-22  8:05     ` Johan Hedberg
  2012-05-21 20:48   ` [PATCH BlueZ v2 2/2] core: Fix creating device from " Paulo Alcantara
  1 sibling, 1 reply; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-21 20:48 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Paulo Alcantara

BLE addressing types can be either public or random so the entries in
the "primary" file did not contain enough information to distinguish
which addressing type it's supposed to be (LE public or LE random).
Entries will now contain both BLE address number and BLE address type
as a single key in every entry in the file.
---
 src/device.c  |    2 +-
 src/storage.c |   32 ++++++++++++++++++++++++--------
 src/storage.h |    5 +++--
 3 files changed, 28 insertions(+), 11 deletions(-)

diff --git a/src/device.c b/src/device.c
index b180579..2bb428c 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1759,7 +1759,7 @@ static void store_services(struct btd_device *device)
 	adapter_get_address(adapter, &sba);
 	device_get_address(device, &dba, NULL);
 
-	write_device_services(&sba, &dba, str);
+	write_device_services(&sba, &dba, device->bdaddr_type, str);
 
 	g_free(str);
 }
diff --git a/src/storage.c b/src/storage.c
index 14e5ac3..5603cb8 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -1162,17 +1162,21 @@ int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
 }
 
 int write_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
-							const char *services)
+			  uint8_t bdaddr_type, const char *services)
 {
-	char filename[PATH_MAX + 1], addr[18];
+	char filename[PATH_MAX + 1], key[20];
 
 	create_filename(filename, PATH_MAX, sba, "primary");
 
 	create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
 
-	ba2str(dba, addr);
+	memset(key, 0, sizeof(key));
+
+	/* New format: address#type */
+	ba2str(dba, key);
+	sprintf(&key[17], "#%hhu", bdaddr_type);
 
-	return textfile_put(filename, addr, services);
+	return textfile_put(filename, key, services);
 }
 
 static void filter_keys(char *key, char *value, void *data)
@@ -1228,15 +1232,27 @@ int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba)
 	return textfile_del(filename, address);
 }
 
-char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba)
+char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
+							uint8_t bdaddr_type)
 {
-	char filename[PATH_MAX + 1], addr[18];
+	char filename[PATH_MAX + 1], key[20], *str;
 
 	create_filename(filename, PATH_MAX, sba, "primary");
 
-	ba2str(dba, addr);
+	memset(key, 0, sizeof(key));
 
-	return textfile_caseget(filename, addr);
+	/* New format: address#type */
+	ba2str(dba, key);
+	sprintf(&key[17], "#%hhu", bdaddr_type);
+
+	str = textfile_caseget(filename, key);
+	if (str != NULL)
+		return str;
+
+	/* Old format: address only */
+	key[17] = '\0';
+
+	return textfile_caseget(filename, key);
 }
 
 int write_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
diff --git a/src/storage.h b/src/storage.h
index 6255ae8..745aff8 100644
--- a/src/storage.h
+++ b/src/storage.h
@@ -76,9 +76,10 @@ gboolean read_blocked(const bdaddr_t *local, const bdaddr_t *remote);
 int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
 							gboolean blocked);
 int write_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
-							const char *services);
+				uint8_t bdaddr_type, const char *services);
 int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba);
-char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba);
+char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
+							uint8_t bdaddr_type);
 int write_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
 					uint16_t handle, const char *chars);
 char *read_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
-- 
1.7.7.6


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

* [PATCH BlueZ v2 2/2] core: Fix creating device from "primary" file
  2012-05-21 20:48 ` [PATCH BlueZ v2 0/2] Address type in keys on storage filesystem Paulo Alcantara
  2012-05-21 20:48   ` [PATCH BlueZ v2 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
@ 2012-05-21 20:48   ` Paulo Alcantara
  2012-05-22  8:00     ` Johan Hedberg
  1 sibling, 1 reply; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-21 20:48 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Claudio Takahasi

From: Claudio Takahasi <claudio.takahasi@openbossa.org>

This patch removes the hard-coded address type for the BLE device
created from the storage.
---
 src/adapter.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/adapter.c b/src/adapter.c
index dafe595..1ca21e6 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1940,13 +1940,17 @@ static void create_stored_device_from_primary(char *key, char *value,
 	struct btd_adapter *adapter = user_data;
 	struct btd_device *device;
 	GSList *services, *uuids, *l;
+	char address[18];
+	uint8_t bdaddr_type;
+
+	if (sscanf(key, "%17s#%hhu", address, &bdaddr_type) < 2)
+		bdaddr_type = BDADDR_LE_PUBLIC;
 
 	if (g_slist_find_custom(adapter->devices,
-			key, (GCompareFunc) device_address_cmp))
+			address, (GCompareFunc) device_address_cmp))
 		return;
 
-	/* FIXME: Get the correct LE addr type (public/random) */
-	device = device_create(connection, adapter, key, BDADDR_LE_PUBLIC);
+	device = device_create(connection, adapter, address, bdaddr_type);
 	if (!device)
 		return;
 
-- 
1.7.7.6


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

* Re: [PATCH BlueZ 1/2] storage: Store BLE address type in "primary" file
  2012-05-19  6:41   ` Johan Hedberg
@ 2012-05-21 20:52     ` Paulo Alcantara
  0 siblings, 0 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-21 20:52 UTC (permalink / raw)
  To: johan.hedberg; +Cc: paulo.alcantara, linux-bluetooth

Hi Johan,

From: Johan Hedberg <johan.hedberg@gmail.com>
Date: Sat, 19 May 2012 09:41:24 +0300

> > +	/* New format: address#type */
> > +	ba2str(dba, key);
> > +	key[17] = '#';
> > +	key[18] = ba_type2char(bdaddr_type);
> 
> Wouldn't sprintf(&key[17], "#%hhu", bdaddr_type); be much simpler?

Agreed. Fixed it.

> > +	/* New format: address#type */
> > +	ba2str(dba, key);
> > +	key[17] = '#';
> > +	key[18] = ba_type2char(bdaddr_type);
> 
> Same here.

Fixed it too.


		Paulo

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

* Re: [PATCH BlueZ 2/2] core: Fix creating device from "primary" file
  2012-05-19  6:43   ` Johan Hedberg
@ 2012-05-21 20:56     ` Paulo Alcantara
  0 siblings, 0 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-21 20:56 UTC (permalink / raw)
  To: johan.hedberg; +Cc: paulo.alcantara, linux-bluetooth, claudio.takahasi

Hi Johan,

From: Johan Hedberg <johan.hedberg@gmail.com>
Date: Sat, 19 May 2012 09:43:41 +0300

> Hi,
> 
> On Fri, May 18, 2012, Paulo Alcantara wrote:
> > This patch removes the hard-coded address type for the BLE device
> > created from the storage.
> > ---
> >  src/adapter.c |   10 +++++++---
> >  1 files changed, 7 insertions(+), 3 deletions(-)
> > 
> > diff --git a/src/adapter.c b/src/adapter.c
> > index dafe595..8d86ca8 100644
> > --- a/src/adapter.c
> > +++ b/src/adapter.c
> > @@ -1940,13 +1940,17 @@ static void create_stored_device_from_primary(char *key, char *value,
> >  	struct btd_adapter *adapter = user_data;
> >  	struct btd_device *device;
> >  	GSList *services, *uuids, *l;
> > +	char address[18];
> > +	uint8_t bdaddr_type;
> > +
> > +	if (sscanf(key, "%17s#%hhu", address, &bdaddr_type) != 2)
> > +		return;
> 
> What about entries created by older bluetoothd versions? Will they be
> stuck in the storage forever without a way to remove them through the
> usual API? Instead of checking for != 2 maybe the check should instead
> be < 1 and bdaddr_type be pre-initialized to BDADDR_LE_PUBLIC.

I agree with you that we must keep backward compatibility here with older
entries. The check here would be "< 2" (in case we only have device address and
not its address type type) instead, and then pre-initialize bdaddr_type to
BDADDR_LE_PUBLIC.

Fixed it, thanks.


		Paulo

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

* Re: [PATCH BlueZ v2 2/2] core: Fix creating device from "primary" file
  2012-05-21 20:48   ` [PATCH BlueZ v2 2/2] core: Fix creating device from " Paulo Alcantara
@ 2012-05-22  8:00     ` Johan Hedberg
  2012-05-22 17:33       ` Claudio Takahasi
  0 siblings, 1 reply; 19+ messages in thread
From: Johan Hedberg @ 2012-05-22  8:00 UTC (permalink / raw)
  To: Paulo Alcantara; +Cc: linux-bluetooth, Claudio Takahasi

Hi,

On Mon, May 21, 2012, Paulo Alcantara wrote:
> From: Claudio Takahasi <claudio.takahasi@openbossa.org>
> 
> This patch removes the hard-coded address type for the BLE device
> created from the storage.
> ---
>  src/adapter.c |   10 +++++++---
>  1 files changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/src/adapter.c b/src/adapter.c
> index dafe595..1ca21e6 100644
> --- a/src/adapter.c
> +++ b/src/adapter.c
> @@ -1940,13 +1940,17 @@ static void create_stored_device_from_primary(char *key, char *value,
>  	struct btd_adapter *adapter = user_data;
>  	struct btd_device *device;
>  	GSList *services, *uuids, *l;
> +	char address[18];
> +	uint8_t bdaddr_type;
> +
> +	if (sscanf(key, "%17s#%hhu", address, &bdaddr_type) < 2)
> +		bdaddr_type = BDADDR_LE_PUBLIC;

That's not safe. What if sscanf returns 0 or a negative value? In that
case the address variable will remain uninitialized (which is why you
should have just followed my suggestion of testing for < 1 and returning
in such a case).

Thinking more about this situation I'm not sure if it's any better to
allow creation of old entries since you won't be able to remove them
anyway: the remove code looks for a bdaddr#type key which won't exist
and adding code to look for both types of keys is just bloating the code
base for a minor benefit.

So maybe your initial patch of failing in the case of sscanf returning < 2
is good enough after all.

Johan

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

* Re: [PATCH BlueZ v2 1/2] storage: Store BLE address type in "primary" file
  2012-05-21 20:48   ` [PATCH BlueZ v2 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
@ 2012-05-22  8:05     ` Johan Hedberg
  2012-05-22 17:08       ` Paulo Alcantara
  0 siblings, 1 reply; 19+ messages in thread
From: Johan Hedberg @ 2012-05-22  8:05 UTC (permalink / raw)
  To: Paulo Alcantara; +Cc: linux-bluetooth

Hi Paulo,

On Mon, May 21, 2012, Paulo Alcantara wrote:
> +	/* New format: address#type */
> +	ba2str(dba, key);
> +	sprintf(&key[17], "#%hhu", bdaddr_type);

Since BlueZ 4.100 will be the first user space version being able to use
mgmtops with a kernel where mgmt is enabled by default (3.4) I don't
think we need to worry about old format vs new format, i.e. the code
comment above is unnecessary.

> +	/* New format: address#type */
> +	ba2str(dba, key);
> +	sprintf(&key[17], "#%hhu", bdaddr_type);
> +
> +	str = textfile_caseget(filename, key);
> +	if (str != NULL)
> +		return str;
> +
> +	/* Old format: address only */
> +	key[17] = '\0';
> +
> +	return textfile_caseget(filename, key);

Same thing here. I think we can leave out any code that tries to work
with the old storage format since we can consider LE support as
experimental/unstable in all previous user space releases.

Johan

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

* Re: [PATCH BlueZ v2 1/2] storage: Store BLE address type in "primary" file
  2012-05-22  8:05     ` Johan Hedberg
@ 2012-05-22 17:08       ` Paulo Alcantara
  0 siblings, 0 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-22 17:08 UTC (permalink / raw)
  To: johan.hedberg; +Cc: paulo.alcantara, linux-bluetooth

Hi Johan,

From: Johan Hedberg <johan.hedberg@gmail.com>
Date: Tue, 22 May 2012 11:05:36 +0300

> > +	/* New format: address#type */
> > +	ba2str(dba, key);
> > +	sprintf(&key[17], "#%hhu", bdaddr_type);
> 
> Since BlueZ 4.100 will be the first user space version being able to use
> mgmtops with a kernel where mgmt is enabled by default (3.4) I don't
> think we need to worry about old format vs new format, i.e. the code
> comment above is unnecessary.

Ok. When we were implemeting this, our first thought was to just ignore the old
storage formats and then use the new storage one.

So, later we decided to keep backward compatibily with the old storage format
since one might not want to delete his old entries so that the patch wouldn't
work with this new storage format (the old keys would never be found).

I'll remove the comment above. Thanks for pointing it out.

> 
> > +	/* New format: address#type */
> > +	ba2str(dba, key);
> > +	sprintf(&key[17], "#%hhu", bdaddr_type);
> > +
> > +	str = textfile_caseget(filename, key);
> > +	if (str != NULL)
> > +		return str;
> > +
> > +	/* Old format: address only */
> > +	key[17] = '\0';
> > +
> > +	return textfile_caseget(filename, key);
> 
> Same thing here. I think we can leave out any code that tries to work
> with the old storage format since we can consider LE support as
> experimental/unstable in all previous user space releases.

Fair enough. I'll remove the comment above, as well the code that leads with the
old storage format. Thanks again!


		Paulo

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

* Re: [PATCH BlueZ v2 2/2] core: Fix creating device from "primary" file
  2012-05-22  8:00     ` Johan Hedberg
@ 2012-05-22 17:33       ` Claudio Takahasi
  0 siblings, 0 replies; 19+ messages in thread
From: Claudio Takahasi @ 2012-05-22 17:33 UTC (permalink / raw)
  To: Paulo Alcantara, linux-bluetooth, Johan Hedberg

Hi Johan,

On Tue, May 22, 2012 at 5:00 AM, Johan Hedberg <johan.hedberg@gmail.com> wrote:
> Hi,
>
> On Mon, May 21, 2012, Paulo Alcantara wrote:
>> From: Claudio Takahasi <claudio.takahasi@openbossa.org>
>>
>> This patch removes the hard-coded address type for the BLE device
>> created from the storage.
>> ---
>>  src/adapter.c |   10 +++++++---
>>  1 files changed, 7 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/adapter.c b/src/adapter.c
>> index dafe595..1ca21e6 100644
>> --- a/src/adapter.c
>> +++ b/src/adapter.c
>> @@ -1940,13 +1940,17 @@ static void create_stored_device_from_primary(char *key, char *value,
>>       struct btd_adapter *adapter = user_data;
>>       struct btd_device *device;
>>       GSList *services, *uuids, *l;
>> +     char address[18];
>> +     uint8_t bdaddr_type;
>> +
>> +     if (sscanf(key, "%17s#%hhu", address, &bdaddr_type) < 2)
>> +             bdaddr_type = BDADDR_LE_PUBLIC;
>
> That's not safe. What if sscanf returns 0 or a negative value? In that
> case the address variable will remain uninitialized (which is why you
> should have just followed my suggestion of testing for < 1 and returning
> in such a case).

IMO, it is not necessary to add extra verification since only
bluetoothd changes this file.
It will be an unnecessary overhead.

>
> Thinking more about this situation I'm not sure if it's any better to
> allow creation of old entries since you won't be able to remove them
> anyway: the remove code looks for a bdaddr#type key which won't exist
> and adding code to look for both types of keys is just bloating the code
> base for a minor benefit.
>
> So maybe your initial patch of failing in the case of sscanf returning < 2
> is good enough after all.
>
> Johan

As you mentioned in the reply for "v2 1/2" of this patch series, LE
was enabled by default recently, and there isn't releases supporting
officially LE. Keep the compatibility with the old format will not
give a valuable benefit.
We will fix the other issues that you pointed, and send the patch series again.

Claudio.

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

* [PATCH BlueZ v3 0/3] Store address type on storage
  2012-05-18 20:57 [PATCH BlueZ 0/2] Store address type on storage Paulo Alcantara
                   ` (2 preceding siblings ...)
  2012-05-21 20:48 ` [PATCH BlueZ v2 0/2] Address type in keys on storage filesystem Paulo Alcantara
@ 2012-05-22 19:45 ` Paulo Alcantara
  2012-05-22 19:45   ` [PATCH BlueZ v3 1/3] storage: Store BLE address type in "primary" file Paulo Alcantara
                     ` (3 more replies)
  3 siblings, 4 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-22 19:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Paulo Alcantara

BLE devices have two different address types: public or
random. So we need to provide this address type on keys
in the "primary" file to avoid duplicate BLE address types
around the BlueZ.

This series changes the storage to store the address type
together with the device address.

Hemant Gupta has been working on this on "Store LE device address
type with primary list" but his patch hasn't been accepted and
he didn't send a new reviewed version of that patch.

I have patches for the other storage files as well, I'll
send them soon. There is a potential problem in
device_address_cmp() function which checks the address only.
I am investigating how to fix it to compare address and type
without breaking the current code.

v3's changes:
     - (1/3): Remove unnecessary comment about the new storage
       	      format and code that leads with the old storage
	      format.

     - (2/3): Just use the initial version of this patch (the
       	      returning < 2 check in sscanf() function).

     - (3/3): New patch that fixes removing device services from
       	      "primary" file by passing a key with the new
	      storage format in delete_device_service(). Note
	      also that this function was modified to only treat
	      the primary case - since we have old storage format
	      still being used in the other LE-related storage
	      files. So, it will need to be modified in order to
	      delete device services of other files (characteristics,
	      ccc, etc) on other series.


Claudio Takahasi (1):
  core: Fix creating device from "primary" file

Paulo Alcantara (2):
  storage: Store BLE address type in "primary" file
  core: Fix removing device services from "primary" file

 src/adapter.c |   10 +++++++---
 src/device.c  |    4 ++--
 src/storage.c |   45 ++++++++++++++++++++++++++-------------------
 src/storage.h |    8 +++++---
 4 files changed, 40 insertions(+), 27 deletions(-)

-- 
1.7.7.6


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

* [PATCH BlueZ v3 1/3] storage: Store BLE address type in "primary" file
  2012-05-22 19:45 ` [PATCH BlueZ v3 0/3] Store address type on storage Paulo Alcantara
@ 2012-05-22 19:45   ` Paulo Alcantara
  2012-05-22 19:45   ` [PATCH BlueZ v3 2/3] core: Fix creating device from " Paulo Alcantara
                     ` (2 subsequent siblings)
  3 siblings, 0 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-22 19:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Paulo Alcantara

BLE addressing types can be either public or random so the entries in
the "primary" file did not contain enough information to distinguish
which addressing type it's supposed to be (LE public or LE random).
Entries will now contain both BLE address number and BLE address type
as a single key in every entry in the file.
---
 src/device.c  |    2 +-
 src/storage.c |   19 +++++++++++--------
 src/storage.h |    5 +++--
 3 files changed, 15 insertions(+), 11 deletions(-)

diff --git a/src/device.c b/src/device.c
index 2695b16..fd13bc3 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1759,7 +1759,7 @@ static void store_services(struct btd_device *device)
 	adapter_get_address(adapter, &sba);
 	device_get_address(device, &dba, NULL);
 
-	write_device_services(&sba, &dba, str);
+	write_device_services(&sba, &dba, device->bdaddr_type, str);
 
 	g_free(str);
 }
diff --git a/src/storage.c b/src/storage.c
index 14e5ac3..33934fb 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -1162,17 +1162,18 @@ int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
 }
 
 int write_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
-							const char *services)
+			  uint8_t bdaddr_type, const char *services)
 {
-	char filename[PATH_MAX + 1], addr[18];
+	char filename[PATH_MAX + 1], key[20];
 
 	create_filename(filename, PATH_MAX, sba, "primary");
 
 	create_file(filename, S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH);
 
-	ba2str(dba, addr);
+	ba2str(dba, key);
+	sprintf(&key[17], "#%hhu", bdaddr_type);
 
-	return textfile_put(filename, addr, services);
+	return textfile_put(filename, key, services);
 }
 
 static void filter_keys(char *key, char *value, void *data)
@@ -1228,15 +1229,17 @@ int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba)
 	return textfile_del(filename, address);
 }
 
-char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba)
+char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
+							uint8_t bdaddr_type)
 {
-	char filename[PATH_MAX + 1], addr[18];
+	char filename[PATH_MAX + 1], key[20];
 
 	create_filename(filename, PATH_MAX, sba, "primary");
 
-	ba2str(dba, addr);
+	ba2str(dba, key);
+	sprintf(&key[17], "#%hhu", bdaddr_type);
 
-	return textfile_caseget(filename, addr);
+	return textfile_caseget(filename, key);
 }
 
 int write_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
diff --git a/src/storage.h b/src/storage.h
index 6255ae8..745aff8 100644
--- a/src/storage.h
+++ b/src/storage.h
@@ -76,9 +76,10 @@ gboolean read_blocked(const bdaddr_t *local, const bdaddr_t *remote);
 int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
 							gboolean blocked);
 int write_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
-							const char *services);
+				uint8_t bdaddr_type, const char *services);
 int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba);
-char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba);
+char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
+							uint8_t bdaddr_type);
 int write_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
 					uint16_t handle, const char *chars);
 char *read_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
-- 
1.7.7.6


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

* [PATCH BlueZ v3 2/3] core: Fix creating device from "primary" file
  2012-05-22 19:45 ` [PATCH BlueZ v3 0/3] Store address type on storage Paulo Alcantara
  2012-05-22 19:45   ` [PATCH BlueZ v3 1/3] storage: Store BLE address type in "primary" file Paulo Alcantara
@ 2012-05-22 19:45   ` Paulo Alcantara
  2012-05-22 19:45   ` [PATCH BlueZ v3 3/3] core: Fix removing device services " Paulo Alcantara
  2012-05-23 14:05   ` [PATCH BlueZ v3 0/3] Store address type on storage Johan Hedberg
  3 siblings, 0 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-22 19:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Claudio Takahasi

From: Claudio Takahasi <claudio.takahasi@openbossa.org>

This patch removes the hard-coded address type for the BLE device
created from the storage.
---
 src/adapter.c |   10 +++++++---
 1 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/adapter.c b/src/adapter.c
index dafe595..18dd5b6 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -1940,13 +1940,17 @@ static void create_stored_device_from_primary(char *key, char *value,
 	struct btd_adapter *adapter = user_data;
 	struct btd_device *device;
 	GSList *services, *uuids, *l;
+	char address[18];
+	uint8_t bdaddr_type;
+
+	if (sscanf(key, "%17s#%hhu", address, &bdaddr_type) < 2)
+		return;
 
 	if (g_slist_find_custom(adapter->devices,
-			key, (GCompareFunc) device_address_cmp))
+			address, (GCompareFunc) device_address_cmp))
 		return;
 
-	/* FIXME: Get the correct LE addr type (public/random) */
-	device = device_create(connection, adapter, key, BDADDR_LE_PUBLIC);
+	device = device_create(connection, adapter, address, bdaddr_type);
 	if (!device)
 		return;
 
-- 
1.7.7.6


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

* [PATCH BlueZ v3 3/3] core: Fix removing device services from "primary" file
  2012-05-22 19:45 ` [PATCH BlueZ v3 0/3] Store address type on storage Paulo Alcantara
  2012-05-22 19:45   ` [PATCH BlueZ v3 1/3] storage: Store BLE address type in "primary" file Paulo Alcantara
  2012-05-22 19:45   ` [PATCH BlueZ v3 2/3] core: Fix creating device from " Paulo Alcantara
@ 2012-05-22 19:45   ` Paulo Alcantara
  2012-05-23 14:05   ` [PATCH BlueZ v3 0/3] Store address type on storage Johan Hedberg
  3 siblings, 0 replies; 19+ messages in thread
From: Paulo Alcantara @ 2012-05-22 19:45 UTC (permalink / raw)
  To: linux-bluetooth; +Cc: Paulo Alcantara

The BLE address type needs to be passed as parameter in
delete_device_service() function in order to remove a device from
"primary" file. This is why the entries in "primary" file will be using
the new storage format.
---
 src/device.c  |    2 +-
 src/storage.c |   26 +++++++++++++++-----------
 src/storage.h |    3 ++-
 3 files changed, 18 insertions(+), 13 deletions(-)

diff --git a/src/device.c b/src/device.c
index fd13bc3..7cdd025 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1169,7 +1169,7 @@ static void device_remove_stored(struct btd_device *device)
 	delete_entry(&src, "profiles", addr);
 	delete_entry(&src, "trusts", addr);
 	delete_all_records(&src, &device->bdaddr);
-	delete_device_service(&src, &device->bdaddr);
+	delete_device_service(&src, &device->bdaddr, device->bdaddr_type);
 
 	if (device->blocked)
 		device_unblock(conn, device, TRUE, FALSE);
diff --git a/src/storage.c b/src/storage.c
index 33934fb..973d545 100644
--- a/src/storage.c
+++ b/src/storage.c
@@ -1206,27 +1206,31 @@ done:
 	g_slist_free_full(match.keys, g_free);
 }
 
-int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba)
+int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba,
+						uint8_t bdaddr_type)
 {
-	char filename[PATH_MAX + 1], address[18];
+	char filename[PATH_MAX + 1], key[20];
 
-	memset(address, 0, sizeof(address));
-	ba2str(dba, address);
+	memset(key, 0, sizeof(key));
+	ba2str(dba, key);
 
-	/* Deleting all characteristics of a given address */
+	/* Deleting all characteristics of a given key */
 	create_filename(filename, PATH_MAX, sba, "characteristic");
-	delete_by_pattern(filename, address);
+	delete_by_pattern(filename, key);
 
-	/* Deleting all attributes values of a given address */
+	/* Deleting all attributes values of a given key */
 	create_filename(filename, PATH_MAX, sba, "attributes");
-	delete_by_pattern(filename, address);
+	delete_by_pattern(filename, key);
 
-	/* Deleting all CCC values of a given address */
+	/* Deleting all CCC values of a given key */
 	create_filename(filename, PATH_MAX, sba, "ccc");
-	delete_by_pattern(filename, address);
+	delete_by_pattern(filename, key);
+
+	sprintf(&key[17], "#%hhu", bdaddr_type);
 
 	create_filename(filename, PATH_MAX, sba, "primary");
-	return textfile_del(filename, address);
+
+	return textfile_del(filename, key);
 }
 
 char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
diff --git a/src/storage.h b/src/storage.h
index 745aff8..d00976f 100644
--- a/src/storage.h
+++ b/src/storage.h
@@ -77,7 +77,8 @@ int write_blocked(const bdaddr_t *local, const bdaddr_t *remote,
 							gboolean blocked);
 int write_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
 				uint8_t bdaddr_type, const char *services);
-int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba);
+int delete_device_service(const bdaddr_t *sba, const bdaddr_t *dba,
+						uint8_t bdaddr_type);
 char *read_device_services(const bdaddr_t *sba, const bdaddr_t *dba,
 							uint8_t bdaddr_type);
 int write_device_characteristics(const bdaddr_t *sba, const bdaddr_t *dba,
-- 
1.7.7.6


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

* Re: [PATCH BlueZ v3 0/3] Store address type on storage
  2012-05-22 19:45 ` [PATCH BlueZ v3 0/3] Store address type on storage Paulo Alcantara
                     ` (2 preceding siblings ...)
  2012-05-22 19:45   ` [PATCH BlueZ v3 3/3] core: Fix removing device services " Paulo Alcantara
@ 2012-05-23 14:05   ` Johan Hedberg
  3 siblings, 0 replies; 19+ messages in thread
From: Johan Hedberg @ 2012-05-23 14:05 UTC (permalink / raw)
  To: Paulo Alcantara; +Cc: linux-bluetooth

Hi Paulo,

On Tue, May 22, 2012, Paulo Alcantara wrote:
> BLE devices have two different address types: public or
> random. So we need to provide this address type on keys
> in the "primary" file to avoid duplicate BLE address types
> around the BlueZ.
> 
> This series changes the storage to store the address type
> together with the device address.
> 
> Hemant Gupta has been working on this on "Store LE device address
> type with primary list" but his patch hasn't been accepted and
> he didn't send a new reviewed version of that patch.
> 
> I have patches for the other storage files as well, I'll
> send them soon. There is a potential problem in
> device_address_cmp() function which checks the address only.
> I am investigating how to fix it to compare address and type
> without breaking the current code.
> 
> v3's changes:
>      - (1/3): Remove unnecessary comment about the new storage
>        	      format and code that leads with the old storage
> 	      format.
> 
>      - (2/3): Just use the initial version of this patch (the
>        	      returning < 2 check in sscanf() function).
> 
>      - (3/3): New patch that fixes removing device services from
>        	      "primary" file by passing a key with the new
> 	      storage format in delete_device_service(). Note
> 	      also that this function was modified to only treat
> 	      the primary case - since we have old storage format
> 	      still being used in the other LE-related storage
> 	      files. So, it will need to be modified in order to
> 	      delete device services of other files (characteristics,
> 	      ccc, etc) on other series.
> 
> 
> Claudio Takahasi (1):
>   core: Fix creating device from "primary" file
> 
> Paulo Alcantara (2):
>   storage: Store BLE address type in "primary" file
>   core: Fix removing device services from "primary" file
> 
>  src/adapter.c |   10 +++++++---
>  src/device.c  |    4 ++--
>  src/storage.c |   45 ++++++++++++++++++++++++++-------------------
>  src/storage.h |    8 +++++---
>  4 files changed, 40 insertions(+), 27 deletions(-)

All three patches have been applied. Thanks.

Johan

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

end of thread, other threads:[~2012-05-23 14:05 UTC | newest]

Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-05-18 20:57 [PATCH BlueZ 0/2] Store address type on storage Paulo Alcantara
2012-05-18 20:57 ` [PATCH BlueZ 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
2012-05-19  6:41   ` Johan Hedberg
2012-05-21 20:52     ` Paulo Alcantara
2012-05-18 20:57 ` [PATCH BlueZ 2/2] core: Fix creating device from " Paulo Alcantara
2012-05-19  6:43   ` Johan Hedberg
2012-05-21 20:56     ` Paulo Alcantara
2012-05-21 20:48 ` [PATCH BlueZ v2 0/2] Address type in keys on storage filesystem Paulo Alcantara
2012-05-21 20:48   ` [PATCH BlueZ v2 1/2] storage: Store BLE address type in "primary" file Paulo Alcantara
2012-05-22  8:05     ` Johan Hedberg
2012-05-22 17:08       ` Paulo Alcantara
2012-05-21 20:48   ` [PATCH BlueZ v2 2/2] core: Fix creating device from " Paulo Alcantara
2012-05-22  8:00     ` Johan Hedberg
2012-05-22 17:33       ` Claudio Takahasi
2012-05-22 19:45 ` [PATCH BlueZ v3 0/3] Store address type on storage Paulo Alcantara
2012-05-22 19:45   ` [PATCH BlueZ v3 1/3] storage: Store BLE address type in "primary" file Paulo Alcantara
2012-05-22 19:45   ` [PATCH BlueZ v3 2/3] core: Fix creating device from " Paulo Alcantara
2012-05-22 19:45   ` [PATCH BlueZ v3 3/3] core: Fix removing device services " Paulo Alcantara
2012-05-23 14:05   ` [PATCH BlueZ v3 0/3] Store address type on storage Johan Hedberg

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).