summaryrefslogtreecommitdiffstats
path: root/hcid/adapter.c
diff options
context:
space:
mode:
Diffstat (limited to 'hcid/adapter.c')
-rw-r--r--hcid/adapter.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/hcid/adapter.c b/hcid/adapter.c
index e58cb87a..31eb8309 100644
--- a/hcid/adapter.c
+++ b/hcid/adapter.c
@@ -3180,6 +3180,7 @@ static void discover_services_cb(gpointer user_data, sdp_list_t *recs, int err)
{
struct adapter *adapter = user_data;
DBusMessage *reply;
+ const char *path;
if (err < 0) {
error_connection_attempt_failed(adapter->create->conn,
@@ -3187,11 +3188,20 @@ static void discover_services_cb(gpointer user_data, sdp_list_t *recs, int err)
goto failed;
}
- /* FIXME: Register the device object path */
+ path = device_create(adapter, adapter->create->address, recs);
+ if (!path)
+ goto failed;
reply = dbus_message_new_method_return(adapter->create->msg);
+ if (!reply)
+ goto failed;
+
+ dbus_message_append_args(reply, DBUS_TYPE_STRING, &path,
+ DBUS_TYPE_INVALID);
send_message_and_unref(adapter->create->conn, reply);
+ adapter->devices = g_slist_append(adapter->devices, g_strdup(path));
+
failed:
dbus_connection_unref(adapter->create->conn);
dbus_message_unref(adapter->create->msg);
@@ -3233,6 +3243,7 @@ static DBusHandlerResult create_device(DBusConnection *conn,
create = g_malloc0(sizeof(struct create_device_req));
create->conn = dbus_connection_ref(conn);
create->msg = dbus_message_ref(msg);
+ strcpy(create->address, address);
adapter->create = create;
return DBUS_HANDLER_RESULT_HANDLED;