diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2012-12-18 17:39:56 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2012-12-18 17:39:56 +0100 |
commit | 3a3074accbfc72126def9f8dc2cf92681512af7d (patch) | |
tree | 001001c15aae436668599ecc67ca5c853df577e4 /client/agent.c | |
parent | 0960fd397a99db1b35677b2cda89f1c1051c325d (diff) | |
download | bluez-3a3074accbfc72126def9f8dc2cf92681512af7d.tar.gz |
client: Add support for providing agent capability
Diffstat (limited to 'client/agent.c')
-rw-r--r-- | client/agent.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/client/agent.c b/client/agent.c index 6ab0d4dde..5f1a1ba72 100644 --- a/client/agent.c +++ b/client/agent.c @@ -36,6 +36,7 @@ #define AGENT_INTERFACE "org.bluez.Agent1" static gboolean agent_registered = FALSE; +static const char *agent_capability = NULL; static DBusMessage *pending_message = NULL; dbus_bool_t agent_completion(void) @@ -98,6 +99,7 @@ static DBusMessage *release_agent(DBusConnection *conn, rl_clear_message(); agent_registered = FALSE; + agent_capability = NULL; rl_printf("Agent released\n"); @@ -197,7 +199,7 @@ static const GDBusMethodTable methods[] = { static void register_agent_setup(DBusMessageIter *iter, void *user_data) { const char *path = AGENT_PATH; - const char *capability = ""; + const char *capability = agent_capability; dbus_message_iter_append_basic(iter, DBUS_TYPE_OBJECT_PATH, &path); dbus_message_iter_append_basic(iter, DBUS_TYPE_STRING, &capability); @@ -223,13 +225,17 @@ static void register_agent_reply(DBusMessage *message, void *user_data) } } -void agent_register(DBusConnection *conn, GDBusProxy *manager) +void agent_register(DBusConnection *conn, GDBusProxy *manager, + const char *capability) + { if (agent_registered == TRUE) { rl_printf("Agent is already registered\n"); return; } + agent_capability = capability; + if (g_dbus_register_interface(conn, AGENT_PATH, AGENT_INTERFACE, methods, NULL, NULL, NULL, NULL) == FALSE) { @@ -244,6 +250,8 @@ void agent_register(DBusConnection *conn, GDBusProxy *manager) rl_printf("Failed to call register agent method\n"); return; } + + agent_capability = NULL; } static void unregister_agent_setup(DBusMessageIter *iter, void *user_data) @@ -262,6 +270,7 @@ static void unregister_agent_reply(DBusMessage *message, void *user_data) if (dbus_set_error_from_message(&error, message) == FALSE) { agent_registered = FALSE; + agent_capability = NULL; rl_printf("Agent unregistered\n"); if (g_dbus_unregister_interface(conn, AGENT_PATH, |