+void _bt_obex_pbap_client_disconnect(char *path)
+{
+ if (g_strcmp0(g_pbap_session_path, path) == 0) {
+ int result = BLUETOOTH_ERROR_NONE;
+ GVariant *signal = g_variant_new("(is)", result,
+ g_pbap_server_address);
+
+ _bt_send_event(BT_PBAP_CLIENT_EVENT,
+ BLUETOOTH_PBAP_DISCONNECTED,
+ signal);
+
+ g_free(g_pbap_session_path);
+ g_pbap_session_path = NULL;
+
+ g_free(g_pbap_server_address);
+ g_pbap_server_address = NULL;
+
+ g_object_unref(g_pbap_proxy);
+ g_pbap_proxy = NULL;
+
+ selected_path.folder = -1;
+ selected_path.type = -1;
+ }
+ BT_DBG("-");
+}
+
+static int __bt_pbap_get_error(const char *error_message)
+{
+ if (error_message == NULL) {
+ BT_ERR("Error message NULL");
+ return BLUETOOTH_ERROR_INTERNAL;
+ }
+
+ BT_ERR("Error message = %s", error_message);
+ if (g_strcmp0(error_message, "Unable to find service record") == 0)
+ return BLUETOOTH_ERROR_SERVICE_NOT_FOUND;
+ else if (g_strcmp0(error_message, "Transport got disconnected") == 0)
+ return BLUETOOTH_ERROR_AUTHORIZATION_REJECTED;
+ else if (g_str_has_prefix(error_message, "Connection refused") == 0)
+ return BLUETOOTH_ERROR_AUTHENTICATION_REJECTED;
+ else if (g_strcmp0(error_message, "Timed out waiting for response") == 0)
+ return BLUETOOTH_ERROR_TIMEOUT;
+ else
+ return BLUETOOTH_ERROR_INTERNAL;
+}
+
+void __bt_pbap_connect_cb(GDBusProxy *proxy,
+ GAsyncResult *res, gpointer user_data)