diff --git a/Makefile.am b/Makefile.am
index bbaa4e0..aff19fb 100644
--- a/Makefile.am
+++ b/Makefile.am
src/profile.h src/profile.c \
src/device.h src/device.c src/attio.h \
src/dbus-common.c src/dbus-common.h \
- src/eir.h src/eir.c src/mgmt.c src/mgmt.h
+ src/eir.h src/eir.c src/mgmt.c src/mgmt.h \
+ src/shared/util.h src/shared/util.c \
+ src/shared/mgmt.h src/shared/mgmt.c
src_bluetoothd_LDADD = lib/libbluetooth-private.la @GLIB_LIBS@ @DBUS_LIBS@ \
-ldl -lrt
src_bluetoothd_LDFLAGS = $(AM_LDFLAGS) -Wl,--export-dynamic \
diff --git a/src/adapter.c b/src/adapter.c
index 019e56d..61464e3 100644
--- a/src/adapter.c
+++ b/src/adapter.c
#include "log.h"
#include "textfile.h"
+#include "src/shared/mgmt.h"
+
#include "hcid.h"
#include "sdpd.h"
#include "adapter.h"
static GSList *adapters = NULL;
static int default_adapter_id = -1;
+struct mgmt *mgmt = NULL;
+
static const char *base_path = "/org/bluez";
static GSList *adapter_drivers = NULL;
GSList *profiles;
struct oob_handler *oob_handler;
+
+ struct mgmt *mgmt;
};
static gboolean process_auth_queue(gpointer user_data);
g_slist_foreach(adapter->devices, (GFunc) cb, data);
}
-void adapter_cleanup(void)
-{
- while (adapters) {
- struct btd_adapter *adapter = adapters->data;
-
- adapter_remove(adapter);
- adapters = g_slist_remove(adapters, adapter);
- btd_adapter_unref(adapter);
- }
-}
-
static int adapter_cmp(gconstpointer a, gconstpointer b)
{
struct btd_adapter *adapter = (struct btd_adapter *) a;
return 0;
}
+
+int adapter_init(void)
+{
+ mgmt = mgmt_new_default();
+ if (!mgmt)
+ return -EIO;
+
+ return 0;
+}
+
+void adapter_cleanup(void)
+{
+ while (adapters) {
+ struct btd_adapter *adapter = adapters->data;
+
+ adapter_remove(adapter);
+ adapters = g_slist_remove(adapters, adapter);
+ btd_adapter_unref(adapter);
+ }
+
+ mgmt_unregister_all(mgmt);
+ mgmt_unref(mgmt);
+ mgmt = NULL;
+}
diff --git a/src/adapter.h b/src/adapter.h
index d3adace..fe69166 100644
--- a/src/adapter.h
+++ b/src/adapter.h
};
void adapter_cleanup(void);
+int adapter_init(void);
struct btd_adapter *adapter_find(const bdaddr_t *sba);
struct btd_adapter *adapter_find_by_id(int id);
struct btd_adapter *adapter_get_default(void);
diff --git a/src/main.c b/src/main.c
index 8c3570f..550d9bb 100644
--- a/src/main.c
+++ b/src/main.c
exit(1);
}
+ if (adapter_init() < 0) {
+ error("adapter init failed");
+ exit(1);
+ }
+
btd_agent_init();
btd_profile_init();