From c4b6d0376785a5ec433400b52727f2e779e1d75e Mon Sep 17 00:00:00 2001 From: Johan Hedberg Date: Fri, 9 Nov 2012 12:29:33 +0200 Subject: [PATCH] core: Add fd_properties parameter to Profile.NewConnection --- doc/profile-api.txt | 2 +- src/profile.c | 14 +++++++++++--- test/test-profile | 4 ++-- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/doc/profile-api.txt b/doc/profile-api.txt index 639202fbf..d41075045 100644 --- a/doc/profile-api.txt +++ b/doc/profile-api.txt @@ -19,7 +19,7 @@ Methods void Release() profile, because when this method gets called it has already been unregistered. - void NewConnection(object device, fd) + void NewConnection(object device, fd, dict fd_properties) This method gets called when a new service level connection has been made and authorized. diff --git a/src/profile.c b/src/profile.c index eb63e1ed7..f756fcfea 100644 --- a/src/profile.c +++ b/src/profile.c @@ -270,6 +270,7 @@ static bool send_new_connection(struct ext_profile *ext, struct ext_io *conn, struct btd_device *dev) { DBusMessage *msg; + DBusMessageIter iter, dict; const char *path; int fd; @@ -281,12 +282,19 @@ static bool send_new_connection(struct ext_profile *ext, struct ext_io *conn, return false; } + dbus_message_iter_init_append(msg, &iter); + path = device_get_path(dev); + dbus_message_iter_append_basic(&iter, DBUS_TYPE_OBJECT_PATH, &path); + fd = g_io_channel_unix_get_fd(conn->io); + dbus_message_iter_append_basic(&iter, DBUS_TYPE_UNIX_FD, &fd); + + dbus_message_iter_open_container(&iter, DBUS_TYPE_ARRAY, "{sv}", &dict); + + /* fd properties go here */ - dbus_message_append_args(msg, DBUS_TYPE_OBJECT_PATH, &path, - DBUS_TYPE_UNIX_FD, &fd, - DBUS_TYPE_INVALID); + dbus_message_iter_close_container(&iter, &dict); if (!dbus_connection_send_with_reply(btd_get_dbus_connection(), msg, &conn->new_conn, -1)) { diff --git a/test/test-profile b/test/test-profile index 2d664445f..1c361c90e 100755 --- a/test/test-profile +++ b/test/test-profile @@ -24,8 +24,8 @@ class Profile(dbus.service.Object): print("Cancel") @dbus.service.method("org.bluez.Profile", - in_signature="oh", out_signature="") - def NewConnection(self, path, fd): + in_signature="oha{sv}", out_signature="") + def NewConnection(self, path, fd, properties): fd = fd.take() print("NewConnection(%s, %d)" % (path, fd)) os.close(fd) -- 2.47.3