Fix BT enable issue on XU3 TV profile 69/223369/1 accepted/tizen/unified/20200130.215032 submit/tizen/20200129.235732
authorDoHyun Pyun <dh79.pyun@samsung.com>
Wed, 29 Jan 2020 06:18:36 +0000 (15:18 +0900)
committerDoHyun Pyun <dh79.pyun@samsung.com>
Wed, 29 Jan 2020 06:18:36 +0000 (15:18 +0900)
Change-Id: I3cb7e00890057a354032365ff34c0b3deb2c8902
Signed-off-by: DoHyun Pyun <dh79.pyun@samsung.com>
bt-core/bt-core-adapter.c
bt-oal/CMakeLists.txt
bt-oal/bluez_hal/src/bt-hal-adapter-dbus-handler.c
bt-oal/bluez_hal/src/bt-hal-event-receiver.c
bt-service-adaptation/services/adapter/bt-service-core-adapter.c

index 8481d86..3dcd9a8 100644 (file)
@@ -353,6 +353,7 @@ int _bt_disable_adapter(void)
                        __bt_core_set_status(BT_ACTIVATED);
                        return -1;
                }
+               g_timeout_add(BT_CORE_IDLE_TERM_TIME, __bt_core_idle_terminate, NULL);
        } else {
 #ifdef TIZEN_FEATURE_RADIO
                int radio_status = VCONFKEY_RADIO_STATUS_OFF;
index 4d95d2c..a84da6f 100755 (executable)
@@ -12,6 +12,7 @@ ELSE("$ENV{BT_INCLUDE_OAL_BLUEZ}" STREQUAL "ENABLED")
 ENDIF("$ENV{BT_INCLUDE_OAL_BLUEZ}" STREQUAL "ENABLED")
 
 SET(SRCS
+../include/bt-internal-types.c
 oal-hardware.c
 oal-manager.c
 oal-adapter-mgr.c
index f14ca79..8c71c01 100644 (file)
 #include "bt-hal-msg.h"
 #include "bt-hal-utils.h"
 #include "bt-hal-adapter-le.h"
+#include "bt-hal-adapter-dbus-handler.h"
+#include "bt-hal-dbus-common-utils.h"
 
-#include <bt-hal-adapter-dbus-handler.h>
-#include <bt-hal-dbus-common-utils.h>
+#include "bt-internal-types.h"
 
 #define BT_ENABLE_TIMEOUT 20000 /* 20 seconds */
 #define BT_CORE_NAME "org.projectx.bt_core"
@@ -198,6 +199,14 @@ int _bt_hal_dbus_enable_adapter(void)
                g_idle_add(__bt_hal_send_adapter_event, (gpointer)user_data);
                return BT_STATUS_SUCCESS;
        }
+
+       if (TIZEN_FEATURE_BT_USB_DONGLE && powered == 1) {
+               gboolean *user_data = g_new0(int, 1);
+               *user_data = TRUE;
+               g_idle_add(__bt_hal_send_adapter_event, (gpointer)user_data);
+               return BT_STATUS_SUCCESS;
+       }
+
        proxy = __bt_get_core_proxy();
 
        if (!proxy) {
index 824a7ab..654560f 100644 (file)
@@ -41,6 +41,8 @@
 #include "bt-hal-gatt-client.h"
 #include "bt-hal-adapter-dbus-handler.h"
 
+#include "bt-internal-types.h"
+
 #define BASELEN_PROP_CHANGED (sizeof(struct hal_ev_adapter_props_changed) \
                + sizeof(struct hal_property))
 
@@ -288,21 +290,21 @@ static void __bt_hal_adapter_property_changed_event(GVariant *msg)
                        /* TODO: Need to check this operation!! */
                        if (powered == FALSE) {
                                DBG("###### Adapter Powered Down ######");
-                               DBG("Pending disalbed event after bluetoothd is terminated");
-#if 0
-                               /* We should send the disable event for USB dongle type's target in here. So remain thie code */
 
-                               struct hal_ev_adapter_state_changed ev;
-                               ev.state = HAL_POWER_OFF;
-                               event_cb(HAL_EV_ADAPTER_STATE_CHANGED, &ev, sizeof(ev));
+                               if (TIZEN_FEATURE_BT_USB_DONGLE) {
+                                       struct hal_ev_adapter_state_changed ev;
+                                       ev.state = HAL_POWER_OFF;
+                                       event_cb(HAL_EV_ADAPTER_STATE_CHANGED, &ev, sizeof(ev));
 #ifdef TIZEN_BT_HAL
-                               struct hal_ev_le_state_changed le_ev;
-                               le_ev.state = HAL_POWER_OFF;
-                               event_cb(HAL_EV_LE_STATE_CHANGED, &le_ev, sizeof(le_ev));
-#endif
-                               /* Destroy Agent */
-                               _bt_hal_destroy_adapter_agent();
+                                       struct hal_ev_le_state_changed le_ev;
+                                       le_ev.state = HAL_POWER_OFF;
+                                       event_cb(HAL_EV_LE_STATE_CHANGED, &le_ev, sizeof(le_ev));
 #endif
+                                       /* Destroy Agent */
+                                       _bt_hal_destroy_adapter_agent();
+                               } else {
+                                       DBG("Pending disalbed event after bluetoothd is terminated");
+                               }
                        } else {
                                DBG("###### Adapter Powered Up ######");
                                if (_bt_hal_get_adapter_request_state()) {
index 83ca1d2..777aa2b 100644 (file)
@@ -1388,6 +1388,8 @@ static gboolean __bt_adapter_post_set_disabled(gpointer user_data)
        if (!TIZEN_FEATURE_BT_USB_DONGLE) {
                /* TODO: Implement to check if it is the recovery mode or not */
                _bt_reliable_terminate_service(NULL);
+       } else {
+               _bt_set_disabled(BLUETOOTH_ERROR_NONE);
        }
 
        return FALSE;