[PATCH v2 1/5] device : Add EndGroupHandle key in attributes storage

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



End group handle should also be converted/saved for each
group in device's attributes file.
---
 doc/settings-storage.txt |    8 +++++---
 src/adapter.c            |    8 +++++---
 src/device.c             |   10 ++++++++++
 3 files changed, 20 insertions(+), 6 deletions(-)

diff --git a/doc/settings-storage.txt b/doc/settings-storage.txt
index 351b17e..11b127f 100644
--- a/doc/settings-storage.txt
+++ b/doc/settings-storage.txt
@@ -94,10 +94,12 @@ Attributes are stored using their handle as group name (decimal format).
 
 Each group contains:
 
-  UUID		String		128-bit UUID of the attribute
+  UUID			String		128-bit UUID of the attribute
 
-  Value		String		Value of the attribute as hexadecimal encoded
-				string
+  Value			String		Value of the attribute as hexadecimal encoded
+					string
+
+  EndGroupHandle	Integer		End group handle in decimal format
 
 Sample:
   [1]
diff --git a/src/adapter.c b/src/adapter.c
index b962bc1..37e85ed 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2419,7 +2419,8 @@ static gboolean record_has_uuid(const sdp_record_t *rec,
 }
 
 static void store_attribute_uuid(GKeyFile *key_file, uint16_t start,
-					char *att_uuid, uuid_t uuid)
+					uint16_t end, char *att_uuid,
+					uuid_t uuid)
 {
 	char handle[6], uuid_str[33];
 	int i;
@@ -2443,6 +2444,7 @@ static void store_attribute_uuid(GKeyFile *key_file, uint16_t start,
 	sprintf(handle, "%hu", start);
 	g_key_file_set_string(key_file, handle, "UUID", att_uuid);
 	g_key_file_set_string(key_file, handle, "Value", uuid_str);
+	g_key_file_set_integer(key_file, handle, "EndGroupHandle", end);
 }
 
 static void store_sdp_record(char *local, char *peer, int handle, char *value)
@@ -2535,7 +2537,7 @@ static void convert_sdp_entry(char *key, char *value, void *user_data)
 	key_file = g_key_file_new();
 	g_key_file_load_from_file(key_file, filename, 0, NULL);
 
-	store_attribute_uuid(key_file, start, prim_uuid, uuid);
+	store_attribute_uuid(key_file, start, end, prim_uuid, uuid);
 
 	data = g_key_file_to_data(key_file, &length, NULL);
 	if (length > 0) {
@@ -2597,7 +2599,7 @@ static void convert_primaries_entry(char *key, char *value, void *user_data)
 		bt_string2uuid(&uuid, uuid_str);
 		sdp_uuid128_to_uuid(&uuid);
 
-		store_attribute_uuid(key_file, start, prim_uuid, uuid);
+		store_attribute_uuid(key_file, start, end, prim_uuid, uuid);
 	}
 
 	g_strfreev(services);
diff --git a/src/device.c b/src/device.c
index 77466ff..780a496 100644
--- a/src/device.c
+++ b/src/device.c
@@ -1907,6 +1907,7 @@ static void load_att_info(struct btd_device *device, const gchar *local,
 
 	for (handle = groups; *handle; handle++) {
 		gboolean uuid_ok;
+		gint end;
 
 		str = g_key_file_get_string(key_file, *handle, "UUID", NULL);
 		if (!str)
@@ -1922,8 +1923,16 @@ static void load_att_info(struct btd_device *device, const gchar *local,
 		if (!str)
 			continue;
 
+		end = g_key_file_get_integer(key_file, *handle,
+						"EndGroupHandle", NULL);
+		if (end == 0) {
+			g_free(str);
+			continue;
+		}
+
 		prim = g_new0(struct gatt_primary, 1);
 		prim->range.start = atoi(*handle);
+		prim->range.end = end;
 
 		switch (strlen(str)) {
 		case 4:
@@ -2524,6 +2533,7 @@ static void store_primaries_from_sdp_record(GKeyFile *key_file,
 
 	g_key_file_set_string(key_file, handle, "UUID", prim_uuid);
 	g_key_file_set_string(key_file, handle, "Value", uuid_str);
+	g_key_file_set_integer(key_file, handle, "EndGroupHandle", end);
 
 done:
 	g_free(prim_uuid);
-- 
1.7.9.5

--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux