From 5db3506c26eb6306047af16818319b5d7fb65fe1 Mon Sep 17 00:00:00 2001 From: seungku kim Date: Thu, 2 Jul 2015 12:58:27 +0900 Subject: [PATCH] Fix the bug in LE enable / disable scenario Change-Id: I6049433f05b78e40c60d6f5ce0c8be168c714408 --- bt-core/bt-core-adapter.c | 19 ++++++++++++++++--- bt-core/bt-core-main.c | 2 ++ bt-core/include/bt-core-adapter.h | 2 ++ bt-service/bt-service-adapter.c | 2 +- 4 files changed, 21 insertions(+), 4 deletions(-) diff --git a/bt-core/bt-core-adapter.c b/bt-core/bt-core-adapter.c index e0a318b..4b68909 100644 --- a/bt-core/bt-core-adapter.c +++ b/bt-core/bt-core-adapter.c @@ -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); diff --git a/bt-core/bt-core-main.c b/bt-core/bt-core-main.c index d7c03f8..0d70d04 100644 --- a/bt-core/bt-core-main.c +++ b/bt-core/bt-core-main.c @@ -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"); diff --git a/bt-core/include/bt-core-adapter.h b/bt-core/include/bt-core-adapter.h index 57703dc..465cc3e 100644 --- a/bt-core/include/bt-core-adapter.h +++ b/bt-core/include/bt-core-adapter.h @@ -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 */ diff --git a/bt-service/bt-service-adapter.c b/bt-service/bt-service-adapter.c index 6be1d05..6d2676f 100644 --- a/bt-service/bt-service-adapter.c +++ b/bt-service/bt-service-adapter.c @@ -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); -- 2.7.4