diff options
author | Lukasz Rymanowski <lukasz.rymanowski@tieto.com> | 2015-02-16 13:36:44 +0100 |
---|---|---|
committer | Szymon Janc <szymon.janc@tieto.com> | 2015-02-22 20:56:07 +0100 |
commit | bfb77271fff96e2292cd562481520ef3f8700c91 (patch) | |
tree | 273ef5f99ee18e7c091557173f3e4d5f320ce3ff /src | |
parent | 5a052da1529915d43d535827c0800b93bf65e66a (diff) | |
download | bluez-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.c | 11 | ||||
-rw-r--r-- | src/shared/gatt-db.h | 5 |
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, |