From: Taejin Woo Date: Thu, 10 Nov 2016 01:41:50 +0000 (+0900) Subject: Fix to recover bt_adapter when turn on flight mode X-Git-Tag: submit/tizen/20161110.000647 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=refs%2Ftags%2Fsubmit%2Ftizen%2F20161110.000647;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git Fix to recover bt_adapter when turn on flight mode - When turn on and off flight mode, don't recovery BT's before state Change-Id: Ie58ceb5a4a8e3e1c339cef6a2fade9e9a99ff94d Signed-off-by: Taejin Woo --- diff --git a/bt-core/bt-core-adapter.c b/bt-core/bt-core-adapter.c index 7fbb10d..a502856 100644 --- a/bt-core/bt-core-adapter.c +++ b/bt-core/bt-core-adapter.c @@ -34,6 +34,8 @@ 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; +static guint core_enable_timer_id; + static int bt_status_before[BT_MODE_MAX] = { VCONFKEY_BT_STATUS_OFF, }; static int bt_le_status_before[BT_MODE_MAX] = { VCONFKEY_BT_LE_STATUS_OFF, }; @@ -381,10 +383,6 @@ 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; @@ -403,7 +401,6 @@ 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) @@ -533,7 +530,7 @@ gboolean _bt_core_disable_adapter(void) gboolean _bt_core_recover_adapter(void) { int ret; -#ifdef TIZEN_FEATURE_BUSACT +#if 0 int ret_le; #endif BT_INFO_C("Recover bt adapter"); @@ -548,11 +545,15 @@ gboolean _bt_core_recover_adapter(void) if (_bt_core_get_status() == BT_ACTIVATED) { _bt_core_set_bt_status(BT_RECOVERY_MODE, 1); +#ifdef TIZEN_FEATURE_BUSACT _bt_core_service_request_adapter(BT_DISABLE_ADAPTER); +#endif } if (_bt_core_get_le_status() == BT_LE_ACTIVATED) { _bt_core_set_bt_le_status(BT_RECOVERY_MODE, 1); +#ifdef TIZEN_FEATURE_BUSACT _bt_core_service_request_adapter(BT_DISABLE_ADAPTER_LE); +#endif } ret = _bt_disable_adapter(); @@ -607,6 +608,8 @@ static gboolean __bt_core_enable_core_timeout_cb(gpointer data) { BT_DBG("+"); + core_enable_timer_id = 0; + _bt_core_init_vconf_value(); return FALSE; @@ -618,7 +621,10 @@ gboolean _bt_core_enable_core(void) _bt_core_update_status(); - g_timeout_add(200, (GSourceFunc)__bt_core_enable_core_timeout_cb, NULL); + if (core_enable_timer_id > 0) + g_source_remove(core_enable_timer_id); + + core_enable_timer_id = g_timeout_add(200, (GSourceFunc)__bt_core_enable_core_timeout_cb, NULL); BT_DBG("-"); return TRUE; @@ -797,7 +803,9 @@ static gboolean __bt_core_disable_timeout_cb(gpointer data) if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_status_before_mode) == 0) _bt_core_set_bt_status(BT_FLIGHT_MODE, bt_status_before_mode); +#ifdef TIZEN_FEATURE_BUSACT _bt_core_service_request_adapter(BT_DISABLE_ADAPTER); +#endif _bt_disable_adapter(); } @@ -807,7 +815,9 @@ static gboolean __bt_core_disable_timeout_cb(gpointer data) if (vconf_get_int(VCONFKEY_BT_LE_STATUS, &bt_le_status_before_mode) == 0) _bt_core_set_bt_le_status(BT_FLIGHT_MODE, bt_le_status_before_mode); +#ifdef TIZEN_FEATURE_BUSACT _bt_core_service_request_adapter(BT_DISABLE_ADAPTER_LE); +#endif _bt_disable_adapter_le(); } diff --git a/bt-core/bt-core-noti-handler.c b/bt-core/bt-core-noti-handler.c index 153ef44..fe49f4e 100644 --- a/bt-core/bt-core-noti-handler.c +++ b/bt-core/bt-core-noti-handler.c @@ -84,7 +84,9 @@ static void __bt_core_handle_adapter_with_flight_mode(gboolean flight_mode) if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_status_before_mode) == 0) _bt_core_set_bt_status(BT_FLIGHT_MODE, bt_status_before_mode); +#ifdef TIZEN_FEATURE_BUSACT _bt_core_service_request_adapter(BT_DISABLE_ADAPTER); +#endif #ifndef USB_BLUETOOTH _bt_disable_adapter(); #endif @@ -96,7 +98,9 @@ static void __bt_core_handle_adapter_with_flight_mode(gboolean flight_mode) if (vconf_get_int(VCONFKEY_BT_LE_STATUS, &bt_le_status_before_mode) == 0) _bt_core_set_bt_le_status(BT_FLIGHT_MODE, bt_le_status_before_mode); +#ifdef TIZEN_FEATURE_BUSACT _bt_core_service_request_adapter(BT_DISABLE_ADAPTER_LE); +#endif #ifndef USB_BLUETOOTH _bt_disable_adapter_le(); #endif @@ -165,7 +169,9 @@ static void __bt_core_handle_adapter_with_power_saving_mode(int power_saving_mod if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_status_before_mode) == 0) _bt_core_set_bt_status(BT_POWER_SAVING_MODE, bt_status_before_mode); +#ifdef TIZEN_FEATURE_BUSACT _bt_core_service_request_adapter(BT_DISABLE_ADAPTER); +#endif #ifndef USB_BLUETOOTH _bt_disable_adapter(); #endif @@ -176,8 +182,10 @@ static void __bt_core_handle_adapter_with_power_saving_mode(int power_saving_mod if (vconf_get_int(VCONFKEY_BT_LE_STATUS, &bt_le_status_before_mode) == 0) _bt_core_set_bt_le_status(BT_POWER_SAVING_MODE, bt_le_status_before_mode); +#ifdef TIZEN_FEATURE_BUSACT /* Disable the BT LE */ _bt_core_service_request_adapter(BT_DISABLE_ADAPTER_LE); +#endif #ifndef USB_BLUETOOTH _bt_disable_adapter_le(); #endif diff --git a/bt-service/bt-service-adapter.c b/bt-service/bt-service-adapter.c index 93dee47..656595f 100644 --- a/bt-service/bt-service-adapter.c +++ b/bt-service/bt-service-adapter.c @@ -839,8 +839,6 @@ void _bt_handle_adapter_added(void) _bt_adapter_set_status(BT_ACTIVATED); } - _bt_service_register_vconf_handler(); - /* eventsystem */ if (eventsystem_register_event(SYS_EVENT_BT_STATE, &status_reg_id, (eventsystem_handler)__bt_state_event_handler, NULL) != ES_R_OK) { diff --git a/bt-service/bt-service-event-receiver.c b/bt-service/bt-service-event-receiver.c index 639e932..428e5f3 100644 --- a/bt-service/bt-service-event-receiver.c +++ b/bt-service/bt-service-event-receiver.c @@ -430,6 +430,22 @@ static void __bt_device_remote_connected_properties( BT_DBG("-"); } +gboolean __bt_handle_is_flight_mode_enabled(void) +{ +#ifdef TIZEN_FEATURE_FLIGHTMODE_ENABLED + int is_flight_mode = 0; + int ret = -1; + + ret = vconf_get_bool(VCONFKEY_TELEPHONY_FLIGHT_MODE, &is_flight_mode); + if (ret != 0) + BT_ERR("vconf_get_bool failed"); + + return (is_flight_mode == 0) ? FALSE : TRUE; +#else + return FALSE; +#endif +} + void _bt_handle_adapter_event(GVariant *msg, const char *member) { BT_DBG("+"); @@ -774,7 +790,10 @@ static void __bt_adapter_property_changed_event(GVariant *msg, const char *path) #else if (vconf_get_int(VCONFKEY_BT_STATUS, &bt_state) == 0 && bt_state != VCONFKEY_BT_STATUS_OFF) { - _bt_disable_adapter(); + if (__bt_handle_is_flight_mode_enabled() == FALSE) + _bt_disable_adapter(); + else + _bt_handle_adapter_removed(); } #endif if (vconf_get_int(VCONFKEY_BT_LE_STATUS, &bt_state) == 0 &&