[PATCH] test/agent.c: Wait for reply from CreatePairedDevice before exiting

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This matches the behavior of the Python sample agent, and is needed to
get my Bluetooth keyboard to pair.

Signed-off-by: Steven Luo <steven@xxxxxxxxxxxxx>
---

diff -urpN a/test/agent.c b/test/agent.c
--- a/test/agent.c	2011-03-28 11:10:44.000000000 -0700
+++ b/test/agent.c	2011-06-19 03:19:12.000000000 -0700
@@ -41,6 +41,7 @@ static int do_reject = 0;
 
 static volatile sig_atomic_t __io_canceled = 0;
 static volatile sig_atomic_t __io_terminated = 0;
+static volatile sig_atomic_t exit_on_release = 1;
 
 static void sig_term(int sig)
 {
@@ -286,7 +287,8 @@ static DBusHandlerResult release_message
 	if (!__io_canceled)
 		fprintf(stderr, "Agent has been released\n");
 
-	__io_terminated = 1;
+	if (exit_on_release)
+		__io_terminated = 1;
 
 	reply = dbus_message_new_method_return(msg);
 	if (!reply) {
@@ -414,6 +416,13 @@ static int unregister_agent(DBusConnecti
 	return 0;
 }
 
+static void create_paired_device_reply(DBusPendingCall *pending,
+						void *user_data)
+{
+	__io_terminated = 1;
+	return;
+}
+
 static int create_paired_device(DBusConnection *conn, const char *adapter_path,
 						const char *agent_path,
 						const char *capabilities,
@@ -421,6 +430,7 @@ static int create_paired_device(DBusConn
 {
 	dbus_bool_t success;
 	DBusMessage *msg;
+	DBusPendingCall *pending;
 
 	msg = dbus_message_new_method_call("org.bluez", adapter_path,
 						"org.bluez.Adapter",
@@ -435,7 +445,12 @@ static int create_paired_device(DBusConn
 					DBUS_TYPE_STRING, &capabilities,
 					DBUS_TYPE_INVALID);
 
-	success = dbus_connection_send(conn, msg, NULL);
+	exit_on_release = 0;
+	success = dbus_connection_send_with_reply(conn, msg, &pending, -1);
+	if (pending)
+		dbus_pending_call_set_notify(pending,
+						create_paired_device_reply,
+						NULL, NULL);
 
 	dbus_message_unref(msg);
 
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux