Enable bt_adapter_recover function in the platform 78/94278/2
authorDoHyun Pyun <dh79.pyun@samsung.com>
Fri, 28 Oct 2016 04:03:17 +0000 (13:03 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Fri, 28 Oct 2016 04:38:46 +0000 (13:38 +0900)
Change-Id: Iadf775ef2f726cff72c3acfe262ff38362a279e9
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
bt-core/bt-core-adapter.c
bt-service/bt-service-adapter.c

index 5a82fe5..6da94b1 100644 (file)
@@ -382,6 +382,10 @@ int _bt_disable_adapter_le(void)
 
 int _bt_core_service_request_adapter(int service_function)
 {
+       /* busact module is not in platform */
+#ifndef TIZEN_FEATURE_BUSACT
+       return BLUETOOTH_ERROR_NONE;
+#else
        int ret = -1;
 
        GArray *in_param1 = NULL;
@@ -400,6 +404,7 @@ int _bt_core_service_request_adapter(int service_function)
        BT_FREE_PARAMS(in_param1, in_param2, in_param3, in_param4, out_param);
 
        return ret;
+#endif
 }
 
 static gboolean __bt_core_check_the_adapter_path(GDBusConnection *conn)
@@ -529,8 +534,9 @@ gboolean _bt_core_disable_adapter(void)
 gboolean _bt_core_recover_adapter(void)
 {
        int ret;
+#ifdef TIZEN_FEATURE_BUSACT
        int ret_le;
-
+#endif
        BT_INFO_C("Recover bt adapter");
 
        _bt_set_flightmode_request(FALSE);
@@ -553,10 +559,13 @@ gboolean _bt_core_recover_adapter(void)
        ret = _bt_disable_adapter();
        if (ret < 0)
                BT_ERR("_bt_disable_adapter() failed");
+
+/* In platform, don't seperate BR/EDR and LE status */
+#if 0
        ret_le = _bt_disable_adapter_le();
        if (ret_le < 0)
                BT_ERR("_bt_disable_adapter_le() failed");
-
+#endif
        return TRUE;
 }
 
@@ -685,11 +694,14 @@ gboolean _bt_core_factory_test_mode(const char *type, const char *arg)
 static gboolean __bt_core_recovery_cb(gpointer data)
 {
        int ret = 0;
+#ifdef TIZEN_FEATURE_BUSACT
        gboolean is_request_failed = FALSE;
        static gboolean is_first_failure = TRUE;
+#endif
 
        BT_DBG("+");
 
+#ifdef TIZEN_FEATURE_BUSACT
        if (_bt_core_get_bt_status(BT_RECOVERY_MODE) == 1) {
                ret = _bt_core_service_request_adapter(BT_ENABLE_ADAPTER);
                if (ret < 0)
@@ -714,6 +726,7 @@ static gboolean __bt_core_recovery_cb(gpointer data)
                }
        } else
                is_first_failure = TRUE;
+#endif
 
        if (_bt_core_get_bt_status(BT_RECOVERY_MODE) == 1) {
                _bt_core_set_bt_status(BT_RECOVERY_MODE, 0);
@@ -721,13 +734,15 @@ static gboolean __bt_core_recovery_cb(gpointer data)
                if (ret < 0)
                        BT_ERR("_bt_enable_adapter() failed");
        }
+
+#if 0
        if (_bt_core_get_bt_le_status(BT_RECOVERY_MODE) == 1) {
                _bt_core_set_bt_le_status(BT_RECOVERY_MODE, 0);
                ret = _bt_enable_adapter_le();
                if (ret < 0)
                        BT_ERR("_bt_enable_adapter_le() failed");
        }
-
+#endif
        is_recovery_mode = FALSE;
 
        BT_DBG("-");
@@ -864,7 +879,7 @@ void _bt_core_adapter_removed_cb(void)
        gboolean flight_mode_status;
        static int timer_id = -1;
 
-       BT_DBG("");
+       BT_DBG("is_recovery_mode: %d", is_recovery_mode);
 
        __bt_core_set_status(BT_DEACTIVATED);
        __bt_core_set_le_status(BT_LE_DEACTIVATED);
index 5b95282..722482a 100644 (file)
@@ -78,6 +78,7 @@ static void *adapter_agent = NULL;
 static GDBusProxy *core_proxy = NULL;
 static guint timer_id = 0;
 static guint le_timer_id = 0;
+static gboolean is_recovery_mode;
 
 static uint status_reg_id;
 
@@ -878,15 +879,22 @@ void _bt_handle_adapter_removed(void)
        _bt_destroy_agent(adapter_agent);
        adapter_agent = NULL;
 
-       _bt_reliable_terminate_service(NULL);
+       if (is_recovery_mode == TRUE) {
+               /* Send disabled event */
+               _bt_set_disabled(BLUETOOTH_ERROR_NONE);
+
+               /* Will recover BT by bt-core, so set the mode as activating */
+               _bt_adapter_set_status(BT_ACTIVATING);
+               is_recovery_mode = FALSE;
+       } else {
+               _bt_reliable_terminate_service(NULL);
+       }
 #else
        _bt_set_disabled(BLUETOOTH_ERROR_NONE);
 #endif
 
-       if (eventsystem_unregister_event(status_reg_id) != ES_R_OK) {
+       if (eventsystem_unregister_event(status_reg_id) != ES_R_OK)
                BT_ERR("Fail to unregister system event");
-       }
-
 }
 
 static gboolean __bt_enable_timeout_cb(gpointer user_data)
@@ -1328,6 +1336,8 @@ int _bt_recover_adapter(void)
                return BLUETOOTH_ERROR_INTERNAL;
        }
 
+       is_recovery_mode = TRUE;
+
        g_variant_unref(result);
        __bt_disconnect_all();