Fix BT enable / disable problem in the odroid target
[platform/core/connectivity/bluetooth-frwk.git] / bt-service / bt-service-adapter.c
index 5d075ad..5482ef4 100644 (file)
@@ -545,6 +545,7 @@ static int __bt_set_enabled(void)
 #endif
 
        __bt_set_local_name();
+       _bt_set_discovery_status(FALSE);
 
        return BLUETOOTH_ERROR_NONE;
 }
@@ -585,12 +586,17 @@ void _bt_set_disabled(int result)
 
        _bt_cancel_queued_transfers();
        _bt_adapter_set_status(BT_DEACTIVATED);
+       _bt_set_discovery_status(FALSE);
 
+#ifndef USB_BLUETOOTH
        if (_bt_adapter_get_le_status() != BT_LE_DEACTIVATED) {
+#endif
                /* Send disabled event */
                _bt_send_event(BT_ADAPTER_EVENT, BLUETOOTH_EVENT_DISABLED,
                                g_variant_new("(i)", result));
+#ifndef USB_BLUETOOTH
        }
+#endif
 
        BT_INFO("Adapter disabled");
 }
@@ -790,11 +796,21 @@ void _bt_handle_adapter_added(void)
        BT_DBG("status : %d", status);
        BT_DBG("le_status : %d", le_status);
 
+#ifndef USB_BLUETOOTH
        adapter_agent = _bt_create_agent(BT_ADAPTER_AGENT_PATH, TRUE);
        if (!adapter_agent) {
                BT_ERR("Fail to register agent");
                return;
        }
+#else
+       if (adapter_agent == NULL) {
+               adapter_agent = _bt_create_agent(BT_ADAPTER_AGENT_PATH, TRUE);
+               if (!adapter_agent) {
+                       BT_ERR("Fail to register agent");
+                       return;
+               }
+       }
+#endif
 
        if (_bt_register_media_player() != BLUETOOTH_ERROR_NONE)
                BT_ERR("Fail to register media player");
@@ -858,11 +874,13 @@ void _bt_handle_adapter_removed(void)
                ERR("vconf_ignore_key_changed failed\n");
        }
 
+#ifndef USB_BLUETOOTH
        _bt_destroy_agent(adapter_agent);
        adapter_agent = NULL;
 
-#ifndef USB_BLUETOOTH
        _bt_reliable_terminate_service(NULL);
+#else
+       _bt_set_disabled(BLUETOOTH_ERROR_NONE);
 #endif
 
        if (eventsystem_unregister_event(status_reg_id) != ES_R_OK) {
@@ -1079,8 +1097,10 @@ int _bt_enable_adapter(void)
                                g_clear_error(&error);
                }
                g_variant_unref(result);
+#ifndef USB_BLUETOOTH
                /* Terminate myself */
                g_idle_add((GSourceFunc)_bt_terminate_service, NULL);
+#endif
                return BLUETOOTH_ERROR_INTERNAL;
        }
        g_variant_unref(result);