Diff between bfcf49e534b6d478faf42d415b44c12eb2bdf2ff and a3155051a0b0b3332803afd770670f8d8f1e1d40

Changed Files

File Additions Deletions Status
client/agent.c +38 -0 modified
client/agent.h +1 -0 modified
client/main.c +6 -0 modified

Full Patch

diff --git a/client/agent.c b/client/agent.c
index 2fe203f..b0ac2f8 100644
--- a/client/agent.c
+++ b/client/agent.c
@@ -322,3 +322,41 @@ void agent_unregister(DBusConnection *conn, GDBusProxy *manager)
 		return;
 	}
 }
+
+static void request_default_setup(DBusMessageIter *iter, void *user_data)
+{
+	const char *path = AGENT_PATH;
+
+	dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &path);
+}
+
+static void request_default_reply(DBusMessage *message, void *user_data)
+{
+	DBusError error;
+
+	dbus_error_init(&error);
+
+	if (dbus_set_error_from_message(&error, message) == TRUE) {
+		rl_printf("Failed to request default agent: %s\n", error.name);
+		dbus_error_free(&error);
+		return;
+	}
+
+	rl_printf("Default agent request successful\n");
+}
+
+void agent_default(DBusConnection *conn, GDBusProxy *manager)
+{
+	if (agent_registered == FALSE) {
+		rl_printf("No agent is registered\n");
+		return;
+	}
+
+	if (g_dbus_proxy_method_call(manager, "RequestDefaultAgent",
+						request_default_setup,
+						request_default_reply,
+						NULL, NULL) == FALSE) {
+		rl_printf("Failed to call request default agent method\n");
+		return;
+	}
+}
diff --git a/client/agent.h b/client/agent.h
index c86d0d5..0fbe8e5 100644
--- a/client/agent.h
+++ b/client/agent.h
@@ -24,6 +24,7 @@
 void agent_register(DBusConnection *conn, GDBusProxy *manager,
 						const char *capability);
 void agent_unregister(DBusConnection *conn, GDBusProxy *manager);
+void agent_default(DBusConnection *conn, GDBusProxy *manager);
 
 dbus_bool_t agent_completion(void);
 dbus_bool_t agent_input(DBusConnection *conn, const char *input);
diff --git a/client/main.c b/client/main.c
index de3b203..a6782da 100644
--- a/client/main.c
+++ b/client/main.c
@@ -573,6 +573,11 @@ static void cmd_agent(const char *arg)
 	}
 }
 
+static void cmd_default_agent(const char *arg)
+{
+	agent_default(dbus_conn, agent_manager);
+}
+
 static void start_discovery_reply(DBusMessage *message, void *user_data)
 {
 	dbus_bool_t enable = GPOINTER_TO_UINT(user_data);
@@ -857,6 +862,7 @@ static const struct {
 	{ "discoverable", "<on/off>", cmd_discoverable,
 					"Set controller discoverable mode" },
 	{ "agent",        "<on/off>", cmd_agent, "Enable/disable agent" },
+	{ "default-agent",NULL,       cmd_default_agent },
 	{ "scan",         "<on/off>", cmd_scan, "Scan for devices" },
 	{ "pair",         "<dev>",    cmd_pair, "Pair with device",
 							dev_generator },