From 6e1e8ebc4affc8cd47c01bc0d930fdb205e11542 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Fri, 22 Jun 2007 20:33:51 +0000 Subject: Add new files error.{c,h} so erros can be cleanly accessed in others files. --- audio/error.c | 99 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ audio/error.h | 36 ++++++++++++++++++++++ 2 files changed, 135 insertions(+) create mode 100644 audio/error.c create mode 100644 audio/error.h diff --git a/audio/error.c b/audio/error.c new file mode 100644 index 00000000..97ffb907 --- /dev/null +++ b/audio/error.c @@ -0,0 +1,99 @@ +/* + * + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2004-2007 Marcel Holtmann + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifdef HAVE_CONFIG_H +#include +#endif + +#include "error.h" +#include "logging.h" + +#define AUDIO_ERROR_INTERFACE "org.bluez.audio.Error" + +/* FIXME: Remove these once global error functions exist */ +static DBusHandlerResult error_reply(DBusConnection *conn, DBusMessage *msg, + const char *name, const char *descr) +{ + DBusMessage *derr; + + if (!conn || !msg) + return DBUS_HANDLER_RESULT_HANDLED; + + derr = dbus_message_new_error(msg, name, descr); + if (!derr) { + error("Unable to allocate new error return"); + return DBUS_HANDLER_RESULT_NEED_MEMORY; + } + + return send_message_and_unref(conn, derr); +} + +DBusHandlerResult err_invalid_args(DBusConnection *conn, DBusMessage *msg, + const char *descr) +{ + return error_reply(conn, msg, AUDIO_ERROR_INTERFACE ".InvalidArguments", + descr ? descr : "Invalid arguments in method call"); +} + +DBusHandlerResult err_already_connected(DBusConnection *conn, DBusMessage *msg) +{ + return error_reply(conn, msg, AUDIO_ERROR_INTERFACE ".AlreadyConnected", + "Already connected to a device"); +} + +DBusHandlerResult err_not_connected(DBusConnection *conn, DBusMessage *msg) +{ + return error_reply(conn, msg, AUDIO_ERROR_INTERFACE ".NotConnected", + "Not connected to any device"); +} + +DBusHandlerResult err_not_supported(DBusConnection *conn, DBusMessage *msg) +{ + return error_reply(conn, msg, AUDIO_ERROR_INTERFACE ".NotSupported", + "The service is not supported by the remote device"); +} + +DBusHandlerResult err_connect_failed(DBusConnection *conn, + DBusMessage *msg, const char *err) +{ + return error_reply(conn, msg, AUDIO_ERROR_INTERFACE ".ConnectFailed", + err); +} + +DBusHandlerResult err_does_not_exist(DBusConnection *conn, DBusMessage *msg) +{ + return error_reply(conn, msg, AUDIO_ERROR_INTERFACE ".DoesNotExist", + "Does not exist"); +} + +DBusHandlerResult err_not_available(DBusConnection *conn, DBusMessage *msg) +{ + return error_reply(conn, msg, ".NotAvailable", + "Not available"); +} + +DBusHandlerResult err_failed(DBusConnection *conn, DBusMessage *msg, + const char *dsc) +{ + return error_reply(conn, msg, AUDIO_ERROR_INTERFACE ".Failed", dsc); +} diff --git a/audio/error.h b/audio/error.h new file mode 100644 index 00000000..82f19801 --- /dev/null +++ b/audio/error.h @@ -0,0 +1,36 @@ +/* + * + * BlueZ - Bluetooth protocol stack for Linux + * + * Copyright (C) 2004-2007 Marcel Holtmann + * + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#include "dbus.h" + +DBusHandlerResult err_invalid_args(DBusConnection *conn, DBusMessage *msg, + const char *descr); +DBusHandlerResult err_already_connected(DBusConnection *conn, DBusMessage *msg); +DBusHandlerResult err_not_connected(DBusConnection *conn, DBusMessage *msg); +DBusHandlerResult err_not_supported(DBusConnection *conn, DBusMessage *msg); +DBusHandlerResult err_connect_failed(DBusConnection *conn, + DBusMessage *msg, const char *err); +DBusHandlerResult err_does_not_exist(DBusConnection *conn, DBusMessage *msg); +DBusHandlerResult err_not_available(DBusConnection *conn, DBusMessage *msg); +DBusHandlerResult err_failed(DBusConnection *conn, DBusMessage *msg, + const char *dsc); -- cgit