summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLukasz Rymanowski <lukasz.rymanowski@tieto.com>2015-02-16 13:36:44 +0100
committerSzymon Janc <szymon.janc@tieto.com>2015-02-22 20:56:07 +0100
commitbfb77271fff96e2292cd562481520ef3f8700c91 (patch)
tree273ef5f99ee18e7c091557173f3e4d5f320ce3ff /src
parent5a052da1529915d43d535827c0800b93bf65e66a (diff)
downloadbluez-bfb77271fff96e2292cd562481520ef3f8700c91.tar.gz
shared/gatt-db: Extend API for find attribute requests
At the moment if there is no entries matching in data base for find_by_type or find_by_type_value, user will not be notified about that fact. With this patch gatt_db_find_by_type and gatt_db_find_by_type_value will return number of found matching entries
Diffstat (limited to 'src')
-rw-r--r--src/shared/gatt-db.c11
-rw-r--r--src/shared/gatt-db.h5
2 files changed, 12 insertions, 4 deletions
diff --git a/src/shared/gatt-db.c b/src/shared/gatt-db.c
index 606ae8424..eb81372ca 100644
--- a/src/shared/gatt-db.c
+++ b/src/shared/gatt-db.c
@@ -894,6 +894,7 @@ struct find_by_type_value_data {
void *user_data;
const void *value;
size_t value_len;
+ unsigned int num_of_res;
};
static void find_by_type(void *data, void *user_data)
@@ -925,11 +926,12 @@ static void find_by_type(void *data, void *user_data)
search_data->value_len))
continue;
+ search_data->num_of_res++;
search_data->func(attribute, search_data->user_data);
}
}
-void gatt_db_find_by_type(struct gatt_db *db, uint16_t start_handle,
+unsigned int gatt_db_find_by_type(struct gatt_db *db, uint16_t start_handle,
uint16_t end_handle,
const bt_uuid_t *type,
gatt_db_attribute_cb_t func,
@@ -946,9 +948,12 @@ void gatt_db_find_by_type(struct gatt_db *db, uint16_t start_handle,
data.user_data = user_data;
queue_foreach(db->services, find_by_type, &data);
+
+ return data.num_of_res;
}
-void gatt_db_find_by_type_value(struct gatt_db *db, uint16_t start_handle,
+unsigned int gatt_db_find_by_type_value(struct gatt_db *db,
+ uint16_t start_handle,
uint16_t end_handle,
const bt_uuid_t *type,
const void *value,
@@ -967,6 +972,8 @@ void gatt_db_find_by_type_value(struct gatt_db *db, uint16_t start_handle,
data.value_len = value_len;
queue_foreach(db->services, find_by_type, &data);
+
+ return data.num_of_res;
}
struct read_by_type_data {
diff --git a/src/shared/gatt-db.h b/src/shared/gatt-db.h
index 75f066809..74b37bc18 100644
--- a/src/shared/gatt-db.h
+++ b/src/shared/gatt-db.h
@@ -95,13 +95,14 @@ void gatt_db_read_by_group_type(struct gatt_db *db, uint16_t start_handle,
const bt_uuid_t type,
struct queue *queue);
-void gatt_db_find_by_type(struct gatt_db *db, uint16_t start_handle,
+unsigned int gatt_db_find_by_type(struct gatt_db *db, uint16_t start_handle,
uint16_t end_handle,
const bt_uuid_t *type,
gatt_db_attribute_cb_t func,
void *user_data);
-void gatt_db_find_by_type_value(struct gatt_db *db, uint16_t start_handle,
+unsigned int gatt_db_find_by_type_value(struct gatt_db *db,
+ uint16_t start_handle,
uint16_t end_handle,
const bt_uuid_t *type,
const void *value,