bool gatt_db_clear(struct gatt_db *db)
{
- if (!db)
- return false;
-
- queue_remove_all(db->services, NULL, NULL, gatt_db_service_destroy);
-
- db->next_handle = 0;
-
- return true;
+ return gatt_db_clear_range(db, 1, UINT16_MAX);
}
static void gatt_db_service_get_handles(const struct gatt_db_service *service,
if (!db || start_handle > end_handle)
return false;
+ /* Check if it is a full clear */
+ if (start_handle == 1 && end_handle == UINT16_MAX) {
+ queue_remove_all(db->services, NULL, NULL,
+ gatt_db_service_destroy);
+ goto done;
+ }
+
range.start = start_handle;
range.end = end_handle;
queue_remove_all(db->services, match_range, &range,
gatt_db_service_destroy);
+done:
+ if (gatt_db_isempty(db))
+ db->next_handle = 0;
+
return true;
}