summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2012-12-20 03:43:38 +0100
committerMarcel Holtmann <marcel@holtmann.org>2012-12-20 03:43:38 +0100
commita3155051a0b0b3332803afd770670f8d8f1e1d40 (patch)
tree2cde78728b2f4dddec3b271024bfbd4f3272cad9 /client
parentbfcf49e534b6d478faf42d415b44c12eb2bdf2ff (diff)
client: Add support for requesting default agent
Diffstat (limited to 'client')
-rw-r--r--client/agent.c38
-rw-r--r--client/agent.h1
-rw-r--r--client/main.c6
3 files changed, 45 insertions, 0 deletions
diff --git a/client/agent.c b/client/agent.c
index 2fe203f46..b0ac2f80d 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 c86d0d5ab..0fbe8e58e 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 de3b203e5..a6782dab9 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 },