diff --git a/src/adapter.c b/src/adapter.c
index c112047..3353297 100644
--- a/src/adapter.c
+++ b/src/adapter.c
unsigned int pair_device_id;
guint pair_device_timeout;
+ unsigned int db_id; /* Service event handler for GATT db */
+
bool is_default; /* true if adapter is default one */
};
static void adapter_remove(struct btd_adapter *adapter)
{
GSList *l;
+ struct gatt_db *db;
DBG("Removing adapter %s", adapter->path);
adapter->devices = NULL;
unload_drivers(adapter);
+
+ db = btd_gatt_database_get_db(adapter->database);
+ gatt_db_unregister(db, adapter->db_id);
+ adapter->db_id = 0;
+
btd_gatt_database_destroy(adapter->database);
g_slist_free(adapter->pin_callbacks);
return -EIO;
}
+static void services_modified(struct gatt_db_attribute *attrib, void *user_data)
+{
+ struct btd_adapter *adapter = user_data;
+
+ g_dbus_emit_property_changed(dbus_conn, adapter->path,
+ ADAPTER_INTERFACE, "UUIDs");
+}
+
static int adapter_register(struct btd_adapter *adapter)
{
struct agent *agent;
+ struct gatt_db *db;
if (powering_down)
return -EBUSY;
if (!adapter->database)
error("Failed to create GATT database for adapter");
+ db = btd_gatt_database_get_db(adapter->database);
+ adapter->db_id = gatt_db_register(db, services_modified,
+ services_modified,
+ adapter, NULL);
+
load_config(adapter);
fix_storage(adapter);
load_drivers(adapter);