diff options
| -rw-r--r-- | doc/manager-api.txt | 24 | ||||
| -rw-r--r-- | network/manager.c | 2 | ||||
| -rw-r--r-- | src/adapter.c | 3 | ||||
| -rw-r--r-- | src/manager.c | 37 | 
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"	},  | 
