summaryrefslogtreecommitdiff
path: root/client/main.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2018-07-30 14:11:38 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2018-08-01 14:55:40 +0300
commit151a80b6accb33dd7713e550b42afcf303cc87f1 (patch)
tree80aa2b5b217607eacde30a34b6f6a30f97138d39 /client/main.c
parent4f162b557a963cc21f7f1933e9abf3876f283b38 (diff)
downloadbluez-151a80b6accb33dd7713e550b42afcf303cc87f1.tar.gz
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.
Diffstat (limited to 'client/main.c')
-rw-r--r--client/main.c55
1 files changed, 38 insertions, 17 deletions
diff --git a/client/main.c b/client/main.c
index 1a66a3ab4..4d848176c 100644
--- a/client/main.c
+++ b/client/main.c
@@ -1139,6 +1139,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);
@@ -1154,26 +1172,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;
@@ -1302,6 +1305,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[])
@@ -1316,6 +1322,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[])
@@ -1331,6 +1340,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[])
@@ -1346,6 +1358,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[])
@@ -1366,6 +1381,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[])
@@ -1386,6 +1404,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)