From 4d74cb0630ebeb035323d191f96c76a47c50f9d9 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Wed, 14 Feb 2018 15:58:15 +0200 Subject: [PATCH] adapter: Fix initializing GATT server for BR/EDR only controllers Controller that do not support LE bearer shall not use GATT server for anything. Change-Id: Iffde6329966bb828a43262f3af41f6f294ce5667 Signed-off-by: Amit Purwar --- src/adapter.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/src/adapter.c b/src/adapter.c index 4c7af56..866e34a 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -13141,6 +13141,13 @@ static int adapter_register(struct btd_adapter *adapter) agent_unref(agent); } + /* Don't start GATT database and advertising managers on + * non-LE controllers. + */ + if (!(adapter->supported_settings & MGMT_SETTING_LE) || + main_opts.mode == BT_MODE_BREDR) + goto load; + adapter->database = btd_gatt_database_new(adapter); if (!adapter->database) { btd_error(adapter->dev_id, @@ -13149,12 +13156,7 @@ static int adapter_register(struct btd_adapter *adapter) return -EINVAL; } - /* Don't start advertising managers on non-LE controllers. */ - if (adapter->supported_settings & MGMT_SETTING_LE) - adapter->adv_manager = btd_adv_manager_new(adapter); - else - btd_info(adapter->dev_id, - "LEAdvertisingManager skipped, LE unavailable"); + adapter->adv_manager = btd_adv_manager_new(adapter); db = btd_gatt_database_get_db(adapter->database); adapter->db_id = gatt_db_register(db, services_modified, @@ -13166,12 +13168,6 @@ static int adapter_register(struct btd_adapter *adapter) snprintf(filename, PATH_MAX, STORAGEDIR "/%s", address); delete_tempfiles(filename); #endif - load_config(adapter); - fix_storage(adapter); - load_drivers(adapter); - btd_profile_foreach(probe_profile, adapter); - clear_blocked(adapter); - load_devices(adapter); #ifdef TIZEN_FEATURE_BLUEZ_MODIFY adapter_print_devices(adapter); @@ -13197,6 +13193,14 @@ static int adapter_register(struct btd_adapter *adapter) } #endif +load: + load_config(adapter); + fix_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) -- 2.7.4