From 90e290c7eb1e83558aa4a959b692e957457d3041 Mon Sep 17 00:00:00 2001 From: Luiz Augusto von Dentz Date: Mon, 30 Jul 2018 14:11:38 +0300 Subject: [PATCH] client: Commit changes to scan filter if active This detects if the command scan has been triggered and if so commit changes to filter immediately so they take effect in the current session. Change-Id: Iec94318c40a7fd17d281dbc7ccfc54be740e0f60 Signed-off-by: himanshu --- client/main.c | 55 ++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 38 insertions(+), 17 deletions(-) diff --git a/client/main.c b/client/main.c index 1cd19f5..772e3bc 100644 --- a/client/main.c +++ b/client/main.c @@ -1142,6 +1142,24 @@ static void cmd_default_agent(int argc, char *argv[]) agent_default(dbus_conn, agent_manager); } +#define DISTANCE_VAL_INVALID 0x7FFF + +static struct set_discovery_filter_args { + char *transport; + dbus_uint16_t rssi; + dbus_int16_t pathloss; + char **uuids; + size_t uuids_len; + dbus_bool_t duplicate; + dbus_bool_t discoverable; + bool set; + bool active; +} filter = { + .rssi = DISTANCE_VAL_INVALID, + .pathloss = DISTANCE_VAL_INVALID, + .set = true, +}; + static void start_discovery_reply(DBusMessage *message, void *user_data) { dbus_bool_t enable = GPOINTER_TO_UINT(user_data); @@ -1157,26 +1175,11 @@ static void start_discovery_reply(DBusMessage *message, void *user_data) } bt_shell_printf("Discovery %s\n", enable ? "started" : "stopped"); + + filter.active = enable; /* Leave the discovery running even on noninteractive mode */ } -#define DISTANCE_VAL_INVALID 0x7FFF - -static struct set_discovery_filter_args { - char *transport; - dbus_uint16_t rssi; - dbus_int16_t pathloss; - char **uuids; - size_t uuids_len; - dbus_bool_t duplicate; - dbus_bool_t discoverable; - bool set; -} filter = { - .rssi = DISTANCE_VAL_INVALID, - .pathloss = DISTANCE_VAL_INVALID, - .set = true, -}; - static void set_discovery_filter_setup(DBusMessageIter *iter, void *user_data) { struct set_discovery_filter_args *args = user_data; @@ -1305,6 +1308,9 @@ static void cmd_scan_filter_uuids(int argc, char *argv[]) commit: filter.set = false; + + if (filter.active) + set_discovery_filter(); } static void cmd_scan_filter_rssi(int argc, char *argv[]) @@ -1319,6 +1325,9 @@ static void cmd_scan_filter_rssi(int argc, char *argv[]) filter.rssi = atoi(argv[1]); filter.set = false; + + if (filter.active) + set_discovery_filter(); } static void cmd_scan_filter_pathloss(int argc, char *argv[]) @@ -1334,6 +1343,9 @@ static void cmd_scan_filter_pathloss(int argc, char *argv[]) filter.pathloss = atoi(argv[1]); filter.set = false; + + if (filter.active) + set_discovery_filter(); } static void cmd_scan_filter_transport(int argc, char *argv[]) @@ -1349,6 +1361,9 @@ static void cmd_scan_filter_transport(int argc, char *argv[]) filter.transport = g_strdup(argv[1]); filter.set = false; + + if (filter.active) + set_discovery_filter(); } static void cmd_scan_filter_duplicate_data(int argc, char *argv[]) @@ -1369,6 +1384,9 @@ static void cmd_scan_filter_duplicate_data(int argc, char *argv[]) } filter.set = false; + + if (filter.active) + set_discovery_filter(); } static void cmd_scan_filter_discoverable(int argc, char *argv[]) @@ -1389,6 +1407,9 @@ static void cmd_scan_filter_discoverable(int argc, char *argv[]) } filter.set = false; + + if (filter.active) + set_discovery_filter(); } static void filter_clear_uuids(void) -- 2.7.4