adapter: Fix initializing GATT server for BR/EDR only controllers 05/204905/1
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Wed, 14 Feb 2018 13:58:15 +0000 (15:58 +0200)
committerAmit Purwar <amit.purwar@samsung.com>
Mon, 15 Apr 2019 03:28:01 +0000 (08:58 +0530)
Controller that do not support LE bearer shall not use GATT server for
anything.

Change-Id: Iffde6329966bb828a43262f3af41f6f294ce5667
Signed-off-by: Amit Purwar <amit.purwar@samsung.com>
src/adapter.c

index 4c7af56..866e34a 100644 (file)
@@ -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)