GATT: Initialise service discovery handle range to support GATT-caching 50/253450/1 accepted/tizen/unified/20210218.042152 submit/tizen/20210216.223518
authorAyush Garg <ayush.garg@samsung.com>
Wed, 10 Feb 2021 06:40:38 +0000 (12:10 +0530)
committerAyush Garg <ayush.garg@samsung.com>
Wed, 10 Feb 2021 06:40:38 +0000 (12:10 +0530)
This change will initialise handle range based on
whether GATT database is empty or not.
This is done to properly handle GATT-Cached data and
prevent resetting it in case when same database-hash
is received from GATT-Server during service discovery.

Change-Id: Ic2a8dc4ff9a5ccf563615156b7b5e97d1e2b3bca
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
src/shared/gatt-client.c

index 53ac836..95cb9dd 100644 (file)
@@ -482,7 +482,12 @@ static struct discovery_op *discovery_op_create(struct bt_gatt_client *client,
        op->start = start;
        op->end = end;
 #ifdef TIZEN_FEATURE_BLUEZ_MODIFY
-       op->last = start;
+       /*
+       * Initialise this parameter based on whether db is empty or not.
+       * This will handle GATT caching and prevent resetting whole db
+       * in case when same database-hash received from GATT-Server.
+       */
+       op->last = gatt_db_isempty(client->db) ? start : UINT16_MAX;
 #else
        op->last = gatt_db_isempty(client->db) ? 0 : UINT16_MAX;
 #endif