From 5bca65d03c7d53da153c948850df923144b1bf35 Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Sat, 15 Dec 2012 04:28:45 +0100 Subject: [PATCH] client: Add support for running discovery --- client/main.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 53 insertions(+), 4 deletions(-) diff --git a/client/main.c b/client/main.c index c6fa0d8ea..45264f81b 100644 --- a/client/main.c +++ b/client/main.c @@ -299,7 +299,7 @@ static void cmd_info(const char *arg) print_property(proxy, "Pairable"); if (g_dbus_proxy_get_property(proxy, "UUIDs", &iter) == FALSE) - return; + goto done; dbus_message_iter_recurse(&iter, &value); @@ -309,6 +309,9 @@ static void cmd_info(const char *arg) printf("\tUUID: %s\n", str); dbus_message_iter_next(&value); } + +done: + print_property(proxy, "Discovering"); } static void cmd_select(const char *arg) @@ -432,6 +435,53 @@ static void cmd_agent(const char *arg) } } +static void start_discovery_reply(DBusMessage *message, void *user_data) +{ + dbus_bool_t enable = GPOINTER_TO_UINT(user_data); + DBusError error; + + begin_message(); + + dbus_error_init(&error); + + if (dbus_set_error_from_message(&error, message) == TRUE) { + printf("Failed to %s discovery: %s\n", + enable == TRUE ? "start" : "stop", error.name); + dbus_error_free(&error); + goto done; + } + + printf("Discovery %s\n", enable == TRUE ? "started" : "stopped"); + +done: + end_message(); +} + +static void cmd_scan(const char *arg) +{ + dbus_bool_t enable; + const char *method; + + if (parse_argument_on_off(arg, &enable) == FALSE) + return; + + if (check_default_ctrl() == FALSE) + return; + + if (enable == TRUE) + method = "StartDiscovery"; + else + method = "StopDiscovery"; + + if (g_dbus_proxy_method_call(default_ctrl, method, + NULL, start_discovery_reply, + GUINT_TO_POINTER(enable), NULL) == FALSE) { + printf("Failed to %s discovery\n", + enable == TRUE ? "start" : "stop"); + return; + } +} + static void cmd_name(const char *arg) { char *name; @@ -441,10 +491,8 @@ static void cmd_name(const char *arg) return; } - if (!default_ctrl) { - printf("No default controller available\n"); + if (check_default_ctrl() == FALSE) return; - } name = g_strdup(arg); @@ -511,6 +559,7 @@ static const struct { { "discoverable", "", cmd_discoverable, "Set controller discoverable mode" }, { "agent", "", cmd_agent, "Enable/disable agent" }, + { "scan", "", cmd_scan, "Scan for devices" }, { "quit", NULL, cmd_quit, "Quit program" }, { "exit", NULL, cmd_quit }, { "help" }, -- 2.47.3