From 1aaeb091349e85c5d0950afb6366b1127a1b45fa Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 5 Jan 2013 10:07:29 -0800 Subject: [PATCH] core: Combine adapter registration and setup into on function The setup is actually fully procedural and can not even fail. So no point in splitting that code accross multiple locations. --- src/adapter.c | 65 ++++++++++++++++++++++----------------------------- 1 file changed, 28 insertions(+), 37 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 6f8db4aba..b86e6dd0c 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -3250,38 +3250,6 @@ static void load_config(struct btd_adapter *adapter) g_key_file_free(key_file); } -static gboolean adapter_setup(struct btd_adapter *adapter) -{ - struct agent *agent; - - agent = agent_get(NULL); - if (agent) { - uint8_t io_cap = agent_get_io_capability(agent); - adapter_set_io_capability(adapter, io_cap); - agent_unref(agent); - } - - sdp_init_services_list(&adapter->bdaddr); - - btd_adapter_gatt_server_start(adapter); - - load_config(adapter); - convert_device_storage(adapter); - load_drivers(adapter); - btd_profile_foreach(probe_profile, adapter); - clear_blocked(adapter); - load_devices(adapter); - - /* retrieve the active connections: address the scenario where - * the are active connections before the daemon've started */ - if (adapter->current_settings & MGMT_SETTING_POWERED) - load_connections(adapter); - - adapter->initialized = TRUE; - - return TRUE; -} - static struct btd_adapter *btd_adapter_new(uint16_t index) { struct btd_adapter *adapter; @@ -4073,6 +4041,8 @@ void adapter_foreach(adapter_cb func, gpointer user_data) static int adapter_register(struct btd_adapter *adapter) { + struct agent *agent; + adapter->path = g_strdup_printf("/org/bluez/hci%d", adapter->dev_id); if (!g_dbus_register_interface(btd_get_dbus_connection(), @@ -4082,17 +4052,38 @@ static int adapter_register(struct btd_adapter *adapter) adapter_free)) { error("Adapter interface init failed on path %s", adapter->path); + g_free(adapter->path); + adapter->path = NULL; return -EINVAL; } - adapters = g_slist_append(adapters, btd_adapter_ref(adapter)); + adapters = g_slist_append(adapters, adapter); - if (!adapter_setup(adapter)) { - adapters = g_slist_remove(adapters, adapter); - btd_adapter_unref(adapter); - return -EIO; + agent = agent_get(NULL); + if (agent) { + uint8_t io_cap = agent_get_io_capability(agent); + adapter_set_io_capability(adapter, io_cap); + agent_unref(agent); } + sdp_init_services_list(&adapter->bdaddr); + + btd_adapter_gatt_server_start(adapter); + + load_config(adapter); + convert_device_storage(adapter); + load_drivers(adapter); + btd_profile_foreach(probe_profile, adapter); + clear_blocked(adapter); + load_devices(adapter); + + /* retrieve the active connections: address the scenario where + * the are active connections before the daemon've started */ + if (adapter->current_settings & MGMT_SETTING_POWERED) + load_connections(adapter); + + adapter->initialized = TRUE; + if (default_adapter_id < 0) default_adapter_id = adapter->dev_id; -- 2.47.3