summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/manager-api.txt24
-rw-r--r--network/manager.c2
-rw-r--r--src/adapter.c3
-rw-r--r--src/manager.c37
4 files changed, 60 insertions, 6 deletions
diff --git a/doc/manager-api.txt b/doc/manager-api.txt
index ba45504a..e045cad2 100644
--- a/doc/manager-api.txt
+++ b/doc/manager-api.txt
@@ -14,7 +14,15 @@ Service org.bluez
Interface org.bluez.Manager
Object path /
-Methods object DefaultAdapter()
+Methods dict GetProperties()
+
+ Returns all global properties. See the
+ properties section for available properties.
+
+ Possible Errors: org.bluez.Error.DoesNotExist
+ org.bluez.Error.InvalidArguments
+
+ object DefaultAdapter()
Returns object path for the default adapter.
@@ -37,7 +45,12 @@ Methods object DefaultAdapter()
org.bluez.Error.Failed
org.bluez.Error.OutOfMemory
-Signals AdapterAdded(object adapter)
+Signals PropertyChanged(string name, variant value)
+
+ This signal indicates a changed value of the given
+ property.
+
+ AdapterAdded(object adapter)
Parameter is object path of added adapter.
@@ -47,10 +60,13 @@ Signals AdapterAdded(object adapter)
DefaultAdapterChanged(object adapter)
- Parameter is object path of the new default adapter,
- or an empty string if there is no available adapters.
+ Parameter is object path of the new default adapter.
In case all adapters are removed this signal will not
be emitted. The AdapterRemoved signal has to be used
to detect that no default adapter is selected or
available anymore.
+
+Properties array{object} Adapters [readonly]
+
+ List of adapter object paths.
diff --git a/network/manager.c b/network/manager.c
index 1b68ea2a..3a702260 100644
--- a/network/manager.c
+++ b/network/manager.c
@@ -122,6 +122,7 @@ static void read_config(const char *file)
g_clear_error(&err);
}
+#if 0
conf.panu_script = g_key_file_get_string(keyfile, "PANU Role",
"Script", &err);
if (err) {
@@ -142,6 +143,7 @@ static void read_config(const char *file)
debug("%s: %s", file, err->message);
g_clear_error(&err);
}
+#endif
conf.iface_prefix = g_key_file_get_string(keyfile, "PANU Role",
"Interface", &err);
diff --git a/src/adapter.c b/src/adapter.c
index 607f2415..b9bd74ab 100644
--- a/src/adapter.c
+++ b/src/adapter.c
@@ -2248,7 +2248,6 @@ static DBusMessage *unregister_agent(DBusConnection *conn,
return dbus_message_new_method_return(msg);
}
-/* BlueZ 4.0 API */
static GDBusMethodTable adapter_methods[] = {
{ "GetProperties", "", "a{sv}",get_properties },
{ "SetProperty", "sv", "", set_property,
@@ -2274,10 +2273,10 @@ static GDBusMethodTable adapter_methods[] = {
};
static GDBusSignalTable adapter_signals[] = {
+ { "PropertyChanged", "sv" },
{ "DeviceCreated", "o" },
{ "DeviceRemoved", "o" },
{ "DeviceFound", "sa{sv}" },
- { "PropertyChanged", "sv" },
{ "DeviceDisappeared", "s" },
{ }
};
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" },