From 4963a4c6aed7610da3f6c5a69c5fadc51ceaafc4 Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Thu, 3 Jan 2013 16:57:28 +0200 Subject: [PATCH] core: Introduce initial hooks to new mgmt code for adapter.c --- Makefile.am | 4 +++- src/adapter.c | 41 ++++++++++++++++++++++++++++++----------- src/adapter.h | 1 + src/main.c | 5 +++++ 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/Makefile.am b/Makefile.am index bbaa4e043..aff19fb0b 100644 --- a/Makefile.am +++ b/Makefile.am @@ -142,7 +142,9 @@ src_bluetoothd_SOURCES = $(gdbus_sources) $(builtin_sources) \ 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 019e56d43..61464e30f 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -50,6 +50,8 @@ #include "log.h" #include "textfile.h" +#include "src/shared/mgmt.h" + #include "hcid.h" #include "sdpd.h" #include "adapter.h" @@ -86,6 +88,8 @@ 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; @@ -165,6 +169,8 @@ struct btd_adapter { GSList *profiles; struct oob_handler *oob_handler; + + struct mgmt *mgmt; }; static gboolean process_auth_queue(gpointer user_data); @@ -3617,17 +3623,6 @@ void btd_adapter_for_each_device(struct btd_adapter *adapter, 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; @@ -3733,3 +3728,27 @@ int adapter_unregister(int id) 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 d3adace79..fe6916626 100644 --- a/src/adapter.h +++ b/src/adapter.h @@ -74,6 +74,7 @@ struct smp_ltk_info { }; 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 8c3570f85..550d9bbd6 100644 --- a/src/main.c +++ b/src/main.c @@ -517,6 +517,11 @@ int main(int argc, char *argv[]) exit(1); } + if (adapter_init() < 0) { + error("adapter init failed"); + exit(1); + } + btd_agent_init(); btd_profile_init(); -- 2.47.3