Fix the bug in LE enable / disable scenario 36/42736/1
authorseungku kim <seungku.kim@samsung.com>
Thu, 2 Jul 2015 03:58:27 +0000 (12:58 +0900)
committerseungku kim <seungku.kim@samsung.com>
Thu, 2 Jul 2015 04:10:51 +0000 (13:10 +0900)
Change-Id: I6049433f05b78e40c60d6f5ce0c8be168c714408

bt-core/bt-core-adapter.c
bt-core/bt-core-main.c
bt-core/include/bt-core-adapter.h
bt-service/bt-service-adapter.c

index e0a318b..4b68909 100644 (file)
@@ -34,6 +34,8 @@
 #include "bt-core-dbus-handler.h"
 #include "bt-core-noti-handler.h"
 
+#define BT_CORE_IDLE_TERM_TIME 200 /* 200ms */
+
 static bt_status_t adapter_status = BT_DEACTIVATED;
 static bt_le_status_t adapter_le_status = BT_LE_DEACTIVATED;
 static gboolean is_recovery_mode = FALSE;
@@ -88,6 +90,13 @@ gboolean _bt_core_is_recovery_mode(void)
        return is_recovery_mode;
 }
 
+static gboolean __bt_core_idle_terminate(gpointer data)
+{
+       BT_DBG("+");
+       _bt_core_terminate();
+       return FALSE;
+}
+
 gboolean _bt_core_is_flight_mode_enabled(void)
 {
 #ifdef TIZEN_BT_FLIGHTMODE_ENABLED
@@ -192,6 +201,7 @@ int _bt_disable_adapter(void)
                /* Return with 0 for the Disabled response. */
                __bt_core_set_status(BT_DEACTIVATED);
                BT_INFO("BR/EDR is disabled. now LE only mode");
+               g_timeout_add(BT_CORE_IDLE_TERM_TIME, __bt_core_idle_terminate, NULL);
                return 0;
        }
 
@@ -256,6 +266,7 @@ int _bt_enable_adapter_le(void)
                }
        } else {
                __bt_core_set_le_status(BT_LE_ACTIVATED);
+               g_timeout_add(BT_CORE_IDLE_TERM_TIME, __bt_core_idle_terminate, NULL);
        }
 
        return 0;
@@ -287,6 +298,8 @@ int _bt_disable_adapter_le(void)
                        __bt_core_set_le_status(BT_LE_ACTIVATED);
                        return -1;
                }
+       } else {
+               g_timeout_add(BT_CORE_IDLE_TERM_TIME, __bt_core_idle_terminate, NULL);
        }
 
        __bt_core_set_le_status(BT_LE_DEACTIVATED);
@@ -317,7 +330,7 @@ int _bt_core_service_request_adapter(int service_function)
        return ret;
 }
 
-static void __bt_core_update_status(void)
+void _bt_core_update_status(void)
 {
        int bt_status = VCONFKEY_BT_STATUS_OFF;
        int bt_le_status = 0;
@@ -384,7 +397,7 @@ gboolean _bt_core_recover_adapter(void)
 
        is_recovery_mode = TRUE;
 
-       __bt_core_update_status();
+       _bt_core_update_status();
 
        if (_bt_core_get_status() == BT_ACTIVATED) {
                _bt_core_set_bt_status(BT_RECOVERY_MODE, 1);
@@ -453,7 +466,7 @@ gboolean _bt_core_enable_core(void)
 {
        BT_DBG("+");
 
-       __bt_core_update_status();
+       _bt_core_update_status();
 
        g_timeout_add(200, (GSourceFunc)__bt_core_enable_core_timeout_cb, NULL);
 
index d7c03f8..0d70d04 100644 (file)
@@ -157,6 +157,8 @@ int main(void)
        g_type_init();
        BT_INFO_C("Starting bt-core daemeon");
 
+       _bt_core_update_status();
+
        ret = _bt_core_register_dbus();
        if (!ret) {
                BT_ERR("_bt_core_register_dbus failed");
index 57703dc..465cc3e 100644 (file)
@@ -91,6 +91,8 @@ gboolean __bt_core_reset_adapter(void);
 gboolean _bt_core_enable_core(void);
 gboolean _bt_core_factory_test_mode(const char *type, const char *arg);
 
+void _bt_core_update_status(void);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
index 6be1d05..6d2676f 100644 (file)
@@ -758,7 +758,7 @@ void _bt_service_unregister_vconf_handler(void)
                        (vconf_callback_fn)__bt_service_flight_ps_mode_cb);
 #endif
 
-#ifndef TIZEN_WEARABLEi
+#ifndef TIZEN_WEARABLE
 #ifdef ENABLE_TIZEN_2_4
        vconf_ignore_key_changed(VCONFKEY_SETAPPL_PSMODE,
                        (vconf_callback_fn)__bt_service_flight_ps_mode_cb);