summaryrefslogtreecommitdiff
path: root/client/main.c
diff options
context:
space:
mode:
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2018-07-26 15:26:30 +0300
committerLuiz Augusto von Dentz <luiz.von.dentz@intel.com>2018-08-01 14:55:39 +0300
commit170ff3b81fdd9902c0b41bfd37ea0090cdb22830 (patch)
tree58f1aad54bcc4cd78346dbbd348e4ebd600b97f5 /client/main.c
parentd04eb02f9bad8795297210ef80e262be16ea8f07 (diff)
downloadbluez-170ff3b81fdd9902c0b41bfd37ea0090cdb22830.tar.gz
client: Add scan.discoverable command
This adds discoverable command to scan menu which can be used to set if adapter should become discoverable while scanning: [bluetooth]# scan.discoverable on [bluetooth]# scan on SetDiscoveryFilter success [CHG] Controller XX:XX:XX:XX:XX:XX Discoverable: yes Discovery started [CHG] Controller XX:XX:XX:XX:XX:XX Discovering: yes [bluetooth]# scan off Discovery stopped [CHG] Controller XX:XX:XX:XX:XX:XX Discoverable: no
Diffstat (limited to 'client/main.c')
-rw-r--r--client/main.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/client/main.c b/client/main.c
index 6f472d050..6e6f6d2fb 100644
--- a/client/main.c
+++ b/client/main.c
@@ -1166,6 +1166,7 @@ static struct set_discovery_filter_args {
char **uuids;
size_t uuids_len;
dbus_bool_t duplicate;
+ dbus_bool_t discoverable;
bool set;
} filter = {
.rssi = DISTANCE_VAL_INVALID,
@@ -1205,6 +1206,11 @@ static void set_discovery_filter_setup(DBusMessageIter *iter, void *user_data)
DBUS_TYPE_BOOLEAN,
&args->duplicate);
+ if (args->discoverable)
+ g_dbus_dict_append_entry(&dict, "Discoverable",
+ DBUS_TYPE_BOOLEAN,
+ &args->discoverable);
+
dbus_message_iter_close_container(iter, &dict);
}
@@ -1362,6 +1368,26 @@ static void cmd_scan_filter_duplicate_data(int argc, char *argv[])
filter.set = false;
}
+static void cmd_scan_filter_discoverable(int argc, char *argv[])
+{
+ if (argc < 2 || !strlen(argv[1])) {
+ bt_shell_printf("Discoverable: %s\n",
+ filter.discoverable ? "on" : "off");
+ return bt_shell_noninteractive_quit(EXIT_SUCCESS);
+ }
+
+ if (!strcmp(argv[1], "on"))
+ filter.discoverable = true;
+ else if (!strcmp(argv[1], "off"))
+ filter.discoverable = false;
+ else {
+ bt_shell_printf("Invalid option: %s\n", argv[1]);
+ return bt_shell_noninteractive_quit(EXIT_FAILURE);
+ }
+
+ filter.set = false;
+}
+
static void filter_clear_uuids(void)
{
g_strfreev(filter.uuids);
@@ -2510,6 +2536,9 @@ static const struct bt_shell_menu scan_menu = {
{ "duplicate-data", "[on/off]", cmd_scan_filter_duplicate_data,
"Set/Get duplicate data filter",
NULL },
+ { "discoverable", "[on/off]", cmd_scan_filter_discoverable,
+ "Set/Get discoverable filter",
+ NULL },
{ "clear", "[uuids/rssi/pathloss/transport/duplicate-data]",
cmd_scan_filter_clear,
"Clears discovery filter.",