summaryrefslogtreecommitdiffstats
path: root/src/manager.c
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2008-12-01 17:56:32 +0100
committerMarcel Holtmann <marcel@holtmann.org>2008-12-01 17:56:32 +0100
commit7b932e3d0d5007885c5a83cd741e754cebf4cc2d (patch)
treef2909514ee9ed7184288aef548a11ef6ab73b05b /src/manager.c
parent1d61103039ce53b996e19b1a60bbf693106dc1c4 (diff)
Add support for global properties
Diffstat (limited to 'src/manager.c')
-rw-r--r--src/manager.c37
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" },