return ret;
}
-static gboolean __bt_core_check_the_adapter_path(GDBusConnection *conn)
+static gboolean __bt_core_check_the_adapter_path(void)
{
GError *err = NULL;
GDBusProxy *manager_proxy = NULL;
GVariant *result = NULL;
char *adapter_path = NULL;
+ GDBusConnection *conn = NULL;
+ conn = _bt_core_get_gdbus_connection();
if (conn == NULL)
return FALSE;
}
result = g_dbus_proxy_call_sync(manager_proxy, "DefaultAdapter", NULL,
- G_DBUS_CALL_FLAGS_NONE, -1, NULL, &err);
+ G_DBUS_CALL_FLAGS_NONE, 1000, NULL, &err);
if (!result) {
if (err != NULL) {
BT_ERR("Fail to get DefaultAdapter (Error: %s)", err->message);
int bt_le_status = VCONFKEY_BT_LE_STATUS_OFF;
gboolean ret = FALSE;
- ret = __bt_core_check_the_adapter_path(_bt_core_get_gdbus_connection());
+ ret = __bt_core_check_the_adapter_path();
BT_INFO("check the real status of bt_adapter");
if (ret != TRUE) {
gboolean _bt_core_disable_adapter(void)
{
int ret;
+ gboolean adapter_state;
_bt_set_flightmode_request(FALSE);
if (vconf_set_int(BT_OFF_DUE_TO_FLIGHT_MODE, 0) != 0)
BT_ERR("Set vconf failed");
- g_idle_add((GSourceFunc)__bt_core_terminate_cb, NULL);
+ adapter_state = __bt_core_check_the_adapter_path();
+ if (adapter_state == FALSE)
+ BT_INFO("Default adapter is NOT normal.");
ret = _bt_disable_adapter();
- if (ret < 0)
- return FALSE;
- else
+ if (adapter_state == FALSE) {
+ g_timeout_add(BT_CORE_IDLE_TERM_TIME,
+ __bt_core_terminate_cb, NULL);
return TRUE;
+ } else {
+ if (ret < 0)
+ return FALSE;
+ else
+ return TRUE;
+ }
}
gboolean _bt_core_recover_adapter(void)