client: Commit changes to scan filter if active
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 30 Jul 2018 11:11:38 +0000 (14:11 +0300)
committerhimanshu <h.himanshu@samsung.com>
Tue, 14 Jan 2020 08:53:35 +0000 (14:23 +0530)
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 <h.himanshu@samsung.com>
client/main.c

index 1cd19f5..772e3bc 100644 (file)
@@ -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)