diff options
| -rw-r--r-- | src/adapter.c | 2 | ||||
| -rw-r--r-- | src/dbus-common.c | 31 | ||||
| -rw-r--r-- | src/dbus-common.h | 6 | ||||
| -rw-r--r-- | src/device.c | 2 | 
4 files changed, 37 insertions, 4 deletions
| diff --git a/src/adapter.c b/src/adapter.c index 9cd26b08..f0b60d49 100644 --- a/src/adapter.c +++ b/src/adapter.c @@ -1625,7 +1625,7 @@ static DBusMessage *get_properties(DBusConnection *conn,  		struct btd_device *dev = l->data;  		devices[i] = (char *) device_get_path(dev);  	} -	dict_append_entry(&dict, "Devices", DBUS_TYPE_ARRAY, &devices); +	dict_append_array(&dict, "Devices", DBUS_TYPE_OBJECT_PATH, &devices, i);  	g_free(devices);  	dbus_message_iter_close_container(&iter, &dict); diff --git a/src/dbus-common.c b/src/dbus-common.c index a27d99a3..fdf384f2 100644 --- a/src/dbus-common.c +++ b/src/dbus-common.c @@ -316,6 +316,37 @@ void dict_append_entry(DBusMessageIter *dict,  	dbus_message_iter_close_container(dict, &entry);  } +void dict_append_array(DBusMessageIter *dict, const char *key, int type, +			void *val, int n_elements) +{ +	DBusMessageIter entry, variant, array; +	char type_sig[2] = { type, '\0' }; +	char array_sig[3] = { DBUS_TYPE_ARRAY, type, '\0' }; +	const char ***str_array = val; +	int i; + +	dbus_message_iter_open_container(dict, DBUS_TYPE_DICT_ENTRY, +						NULL, &entry); + +	dbus_message_iter_append_basic(&entry, DBUS_TYPE_STRING, &key); + +	dbus_message_iter_open_container(&entry, DBUS_TYPE_VARIANT, +						array_sig, &variant); + +	dbus_message_iter_open_container(&variant, DBUS_TYPE_ARRAY, +						type_sig, &array); + +	for (i = 0; (*str_array)[i]; i++) +		dbus_message_iter_append_basic(&array, type, +						&((*str_array)[i])); + +	dbus_message_iter_close_container(&variant, &array); + +	dbus_message_iter_close_container(&entry, &variant); + +	dbus_message_iter_close_container(dict, &entry); +} +  dbus_bool_t dbus_connection_emit_property_changed(DBusConnection *conn,  						const char *path,  						const char *interface, diff --git a/src/dbus-common.h b/src/dbus-common.h index 82438eca..83f77191 100644 --- a/src/dbus-common.h +++ b/src/dbus-common.h @@ -1,5 +1,4 @@ -/* - * +/* *   *  BlueZ - Bluetooth protocol stack for Linux   *   *  Copyright (C) 2006-2007  Nokia Corporation @@ -33,6 +32,9 @@ void hcid_dbus_unregister(void);  void dict_append_entry(DBusMessageIter *dict,  			const char *key, int type, void *val); +void dict_append_array(DBusMessageIter *dict, const char *key, int type, +			void *val, int n_elements); +  dbus_bool_t dbus_connection_emit_property_changed(DBusConnection *conn,  						const char *path,  						const char *interface, diff --git a/src/device.c b/src/device.c index 729a846c..80d655f3 100644 --- a/src/device.c +++ b/src/device.c @@ -254,7 +254,7 @@ static DBusMessage *get_properties(DBusConnection *conn,  	uuids = g_new0(char *, g_slist_length(device->uuids) + 1);  	for (i = 0, l = device->uuids; l; l = l->next, i++)  		uuids[i] = l->data; -	dict_append_entry(&dict, "UUIDs", DBUS_TYPE_ARRAY, &uuids); +	dict_append_array(&dict, "UUIDs", DBUS_TYPE_STRING, &uuids, i);  	g_free(uuids);  	/* Adapter */ | 
