diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2012-12-20 03:43:38 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-12-20 03:43:38 +0100 |
commit | a3155051a0b0b3332803afd770670f8d8f1e1d40 (patch) | |
tree | 2cde78728b2f4dddec3b271024bfbd4f3272cad9 /client | |
parent | bfcf49e534b6d478faf42d415b44c12eb2bdf2ff (diff) |
client: Add support for requesting default agent
Diffstat (limited to 'client')
-rw-r--r-- | client/agent.c | 38 | ||||
-rw-r--r-- | client/agent.h | 1 | ||||
-rw-r--r-- | client/main.c | 6 |
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 }, |