From 06459139095163ef44ca4e6ef439a1fa66e9a5c4 Mon Sep 17 00:00:00 2001 From: Wootak Jung Date: Fri, 15 May 2020 11:13:55 +0900 Subject: [PATCH] Start enable timer when enabling adapter Change-Id: Id6ed4665f57ec8b4578935de6b4f73b1956ee6c5 Signed-off-by: Deokhyun Kim Signed-off-by: Wootak Jung --- .../services/adapter/bt-service-core-adapter.c | 26 +++++++++++++++++++++- .../services/bt-request-handler.c | 1 + .../services/include/bt-service-core-adapter.h | 2 ++ 3 files changed, 28 insertions(+), 1 deletion(-) diff --git a/bt-service-adaptation/services/adapter/bt-service-core-adapter.c b/bt-service-adaptation/services/adapter/bt-service-core-adapter.c index a1b9e88..3228d89 100644 --- a/bt-service-adaptation/services/adapter/bt-service-core-adapter.c +++ b/bt-service-adaptation/services/adapter/bt-service-core-adapter.c @@ -451,6 +451,30 @@ void _bt_service_unregister_vconf_handler(void) (vconf_callback_fn)__bt_service_flight_ps_mode_cb); } +static gboolean __bt_enable_timeout_cb(gpointer user_data) +{ + timer_id = 0; + adapter_disable(); + _bt_set_disabled(BLUETOOTH_ERROR_TIMEOUT); +#ifndef USB_BLUETOOTH + _bt_terminate_service(NULL); +#endif + return FALSE; +} + +void _bt_adapter_start_enable_timer(void) +{ + if (timer_id > 0) { + g_source_remove(timer_id); + timer_id = 0; + } + + timer_id = g_timeout_add(BT_ENABLE_TIMEOUT, + __bt_enable_timeout_cb, NULL); + + return; +} + int _bt_get_local_address(void) { int result; @@ -1663,7 +1687,7 @@ static int __bt_adapter_state_handle_request(gboolean enable) } result = adapter_disable(); if (result != OAL_STATUS_SUCCESS) { - BT_ERR("adapter_enable failed: [%d]", result); + BT_ERR("adapter_disable failed: [%d]", result); result = BLUETOOTH_ERROR_INTERNAL; /*TODO: perform if anything more needs to be done to handle failure */ } else { diff --git a/bt-service-adaptation/services/bt-request-handler.c b/bt-service-adaptation/services/bt-request-handler.c index 8bb740e..15cb4d2 100644 --- a/bt-service-adaptation/services/bt-request-handler.c +++ b/bt-service-adaptation/services/bt-request-handler.c @@ -479,6 +479,7 @@ int __bt_bluez_request(int function_name, switch (function_name) { case BT_ENABLE_ADAPTER: { result = _bt_enable_adapter(); + _bt_adapter_start_enable_timer(); break; } case BT_DISABLE_ADAPTER: { diff --git a/bt-service-adaptation/services/include/bt-service-core-adapter.h b/bt-service-adaptation/services/include/bt-service-core-adapter.h index 77beddf..74d75d3 100644 --- a/bt-service-adaptation/services/include/bt-service-core-adapter.h +++ b/bt-service-adaptation/services/include/bt-service-core-adapter.h @@ -114,6 +114,8 @@ int _bt_set_le_request_state(int enable); int _bt_get_energy_info(unsigned int *tx_time, unsigned int *rx_time, unsigned int *idle_time, unsigned int *energy_used); +void _bt_adapter_start_enable_timer(void); + #ifdef __cplusplus } #endif /* __cplusplus */ -- 2.7.4