diff --git a/src/adapter.c b/src/adapter.c
index 61f747d..d5c562d 100644
--- a/src/adapter.c
+++ b/src/adapter.c
#include "attrib/att.h"
#include "attrib/gatt.h"
#include "attrib-server.h"
+#include "gatt-database.h"
#include "eir.h"
#define ADAPTER_INTERFACE "org.bluez.Adapter1"
struct btd_device *connect_le; /* LE device waiting to be connected */
sdp_list_t *services; /* Services associated to adapter */
+ struct btd_gatt_database *database;
+
gboolean initialized;
GSList *pin_callbacks;
{
struct btd_adapter *adapter = user_data;
const struct mgmt_cod *rp = param;
- uint8_t appearance[3];
uint32_t dev_class;
if (length < sizeof(*rp)) {
g_dbus_emit_property_changed(dbus_conn, adapter->path,
ADAPTER_INTERFACE, "Class");
-
- appearance[0] = rp->val[0];
- appearance[1] = rp->val[1] & 0x1f; /* removes service class */
- appearance[2] = rp->val[2];
-
- /* TODO: Do this through btd_gatt_database instead */
- attrib_gap_set(adapter, GATT_CHARAC_APPEARANCE, appearance, 2);
}
static void set_dev_class_complete(uint8_t status, uint16_t length,
return false;
}
+struct btd_gatt_database *btd_adapter_get_database(struct btd_adapter *adapter)
+{
+ if (!adapter)
+ return NULL;
+
+ return adapter->database;
+}
+
uint32_t btd_adapter_get_class(struct btd_adapter *adapter)
{
return adapter->dev_class;
adapter->devices = NULL;
unload_drivers(adapter);
- btd_adapter_gatt_server_stop(adapter);
+ btd_gatt_database_destroy(adapter->database);
g_slist_free(adapter->pin_callbacks);
adapter->pin_callbacks = NULL;
agent_unref(agent);
}
- /* TODO: Migrate to use btd_gatt_database */
- btd_adapter_gatt_server_start(adapter);
+ adapter->database = btd_gatt_database_new(adapter);
+ if (!adapter->database)
+ error("Failed to create GATT database for adapter");
load_config(adapter);
fix_storage(adapter);
diff --git a/src/adapter.h b/src/adapter.h
index 737479f..867f4e3 100644
--- a/src/adapter.h
+++ b/src/adapter.h
bool btd_adapter_get_powered(struct btd_adapter *adapter);
bool btd_adapter_get_connectable(struct btd_adapter *adapter);
+struct btd_gatt_database *btd_adapter_get_database(struct btd_adapter *adapter);
+
uint32_t btd_adapter_get_class(struct btd_adapter *adapter);
const char *btd_adapter_get_name(struct btd_adapter *adapter);
void btd_adapter_remove_device(struct btd_adapter *adapter,