+ 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;
+
+ manager_proxy = g_dbus_proxy_new_sync(conn,
+ G_DBUS_PROXY_FLAGS_NONE, NULL,
+ "org.bluez",
+ "/",
+ "org.freedesktop.DBus.ObjectManager",
+ NULL, &err);
+
+ if (!manager_proxy) {
+ if (err != NULL) {
+ BT_ERR("Unable to create proxy: %s", err->message);
+ g_clear_error(&err);
+ } else {
+ BT_ERR("Fail to create proxy");
+ }
+ goto fail;
+ }
+
+ result = g_dbus_proxy_call_sync(manager_proxy, "DefaultAdapter", NULL,
+ G_DBUS_CALL_FLAGS_NONE, 1000, NULL, &err);
+ if (!result) {
+ if (err != NULL) {
+ BT_ERR("Fail to get DefaultAdapter (Error: %s)", err->message);
+ g_clear_error(&err);
+ } else{
+ BT_ERR("Fail to get DefaultAdapter");
+ }
+ goto fail;
+ }
+
+ if (g_strcmp0(g_variant_get_type_string(result), "(o)")) {
+ BT_ERR("Incorrect result\n");
+ goto fail;
+ }
+
+ g_variant_get(result, "(&o)", &adapter_path);
+
+ if (adapter_path == NULL ||
+ strlen(adapter_path) >= BT_CORE_CHECK_ADAPTER_OBJECT_PATH_MAX) {
+ BT_ERR("Adapter path is inproper\n");
+ goto fail;
+ }
+
+ g_variant_unref(result);
+ g_object_unref(manager_proxy);
+
+ return TRUE;