diff options
Diffstat (limited to 'src/dbus-gsm.h')
-rw-r--r-- | src/dbus-gsm.h | 131 |
1 files changed, 131 insertions, 0 deletions
diff --git a/src/dbus-gsm.h b/src/dbus-gsm.h new file mode 100644 index 00000000..8396c4b4 --- /dev/null +++ b/src/dbus-gsm.h @@ -0,0 +1,131 @@ +/* + * + * oFono - Open Source Telephony + * + * Copyright (C) 2008-2009 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * 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/dbus.h> +#include <gdbus.h> + +DBusConnection *dbus_gsm_connection(); +void dbus_gsm_set_connection(DBusConnection *conn); + +int dbus_gsm_init(); +void dbus_gsm_exit(); + +#define MAX_DBUS_PATH_LEN 64 + +void dbus_gsm_free_string_array(char **array); + +/* Essentially a{sv} */ +#define PROPERTIES_ARRAY_SIGNATURE DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING \ + DBUS_TYPE_STRING_AS_STRING \ + DBUS_TYPE_VARIANT_AS_STRING \ + DBUS_DICT_ENTRY_END_CHAR_AS_STRING + +void dbus_gsm_dict_append(DBusMessageIter *dict, const char *key, int type, + void *value); + +void dbus_gsm_append_variant(DBusMessageIter *iter, int type, void *value); + +void dbus_gsm_append_array_variant(DBusMessageIter *iter, int type, void *val); + +void dbus_gsm_dict_append_array(DBusMessageIter *dict, const char *key, + int type, void *val); + + +int dbus_gsm_signal_property_changed(DBusConnection *conn, const char *path, + const char *interface, const char *name, + int type, void *value); + +int dbus_gsm_signal_array_property_changed(DBusConnection *conn, + const char *path, + const char *interface, + const char *name, int type, + void *value); + +#define DBUS_GSM_ERROR_INTERFACE "org.ofono.Error" + +static inline DBusMessage *dbus_gsm_invalid_args(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE + ".InvalidArguments", + "Invalid arguments in method call"); +} + +static inline DBusMessage *dbus_gsm_invalid_format(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE + ".InvalidFormat", + "Argument format is not recognized"); +} + +static inline DBusMessage *dbus_gsm_not_implemented(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE + ".NotImplemented", + "Implementation not provided"); +} + +static inline DBusMessage *dbus_gsm_failed(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE ".Failed", + "Operation failed"); +} + +static inline DBusMessage *dbus_gsm_busy(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE ".InProgress", + "Operation already in progress"); +} + +static inline DBusMessage *dbus_gsm_not_found(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE ".NotFound", + "Object is not found or not valid for this operation"); +} + +static inline DBusMessage *dbus_gsm_not_active(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE ".NotActive", + "Operation is not active or in progress"); +} + +static inline DBusMessage *dbus_gsm_not_supported(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE + ".NotSupported", + "Operation is not supported by the" + " network / modem"); +} + +static inline DBusMessage *dbus_gsm_timed_out(DBusMessage *msg) +{ + return g_dbus_create_error(msg, DBUS_GSM_ERROR_INTERFACE ".Timedout", + "Operation failure due to timeout"); +} + +static inline void dbus_gsm_pending_reply(DBusMessage **msg, DBusMessage *reply) +{ + DBusConnection *conn = dbus_gsm_connection(); + + g_dbus_send_message(conn, reply); + + dbus_message_unref(*msg); + *msg = NULL; +} |