diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2008-12-01 17:56:32 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2008-12-01 17:56:32 +0100 |
commit | 7b932e3d0d5007885c5a83cd741e754cebf4cc2d (patch) | |
tree | f2909514ee9ed7184288aef548a11ef6ab73b05b | |
parent | 1d61103039ce53b996e19b1a60bbf693106dc1c4 (diff) |
Add support for global properties
-rw-r--r-- | src/manager.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/manager.c b/src/manager.c index ad14e566..9714dfa3 100644 --- a/src/manager.c +++ b/src/manager.c @@ -43,6 +43,7 @@ #include <gdbus.h> +#include "dbus-common.h" #include "logging.h" #include "adapter.h" #include "error.h" @@ -264,7 +265,42 @@ static DBusMessage *list_adapters(DBusConnection *conn, return reply; } +static DBusMessage *get_properties(DBusConnection *conn, + DBusMessage *msg, void *data) +{ + DBusMessage *reply; + DBusMessageIter iter; + DBusMessageIter dict; + GSList *list; + char **array; + int i; + + reply = dbus_message_new_method_return(msg); + if (!reply) + return NULL; + + dbus_message_iter_init_append(reply, &iter); + + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, + DBUS_DICT_ENTRY_BEGIN_CHAR_AS_STRING + DBUS_TYPE_STRING_AS_STRING DBUS_TYPE_VARIANT_AS_STRING + DBUS_DICT_ENTRY_END_CHAR_AS_STRING, &dict); + + array = g_new0(char *, g_slist_length(adapters) + 1); + for (i = 0, list = adapters; list; list = list->next, i++) { + struct btd_adapter *adapter = list->data; + array[i] = (char *) adapter_get_path(adapter); + } + dict_append_array(&dict, "Adapters", DBUS_TYPE_OBJECT_PATH, &array, i); + g_free(array); + + dbus_message_iter_close_container(&iter, &dict); + + return reply; +} + static GDBusMethodTable manager_methods[] = { + { "GetProperties", "", "a{sv}",get_properties }, { "DefaultAdapter", "", "o", default_adapter }, { "FindAdapter", "s", "o", find_adapter }, { "ListAdapters", "", "ao", list_adapters }, @@ -272,6 +308,7 @@ static GDBusMethodTable manager_methods[] = { }; static GDBusSignalTable manager_signals[] = { + { "PropertyChanged", "sv" }, { "AdapterAdded", "o" }, { "AdapterRemoved", "o" }, { "DefaultAdapterChanged", "o" }, |