Skip to content

Commit 3856f65

Browse files
committed
Bluetooth: shell: Add shell arguments to control scanning phys
Add shell arguments to control scanning phys for scanner and initiator. This allows to scan on coded or create connections on coded. Signed-off-by: Joakim Andersson <[email protected]>
1 parent 965db79 commit 3856f65

File tree

1 file changed

+77
-4
lines changed
  • subsys/bluetooth/shell

1 file changed

+77
-4
lines changed

subsys/bluetooth/shell/bt.c

Lines changed: 77 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -658,6 +658,10 @@ static int cmd_scan(const struct shell *shell, size_t argc, char *argv[])
658658
options &= ~BT_LE_SCAN_OPT_FILTER_DUPLICATE;
659659
} else if (!strcmp(arg, "wl")) {
660660
options |= BT_LE_SCAN_OPT_FILTER_WHITELIST;
661+
} else if (!strcmp(arg, "coded")) {
662+
options |= BT_LE_SCAN_OPT_CODED;
663+
} else if (!strcmp(arg, "no1m")) {
664+
options |= BT_LE_SCAN_OPT_NO_1M;
661665
} else {
662666
shell_help(shell);
663667
return SHELL_CMD_HELP_PRINTED;
@@ -1032,6 +1036,35 @@ static int cmd_connect_le(const struct shell *shell, size_t argc, char *argv[])
10321036
return err;
10331037
}
10341038

1039+
#if defined(CONFIG_BT_ADV_EXT)
1040+
u32_t options = 0;
1041+
1042+
for (size_t argn = 3; argn < argc; argn++) {
1043+
const char *arg = argv[argn];
1044+
1045+
if (!strcmp(arg, "coded")) {
1046+
options |= BT_LE_CONN_OPT_CODED;
1047+
} else if (!strcmp(arg, "2m")) {
1048+
options |= BT_LE_CONN_OPT_2M;
1049+
} else if (!strcmp(arg, "no1m")) {
1050+
options |= BT_LE_CONN_OPT_NO_1M;
1051+
} else {
1052+
shell_help(shell);
1053+
return SHELL_CMD_HELP_PRINTED;
1054+
}
1055+
}
1056+
1057+
struct bt_conn_scan_param conn_scan_params = {
1058+
.options = options,
1059+
.interval = BT_GAP_SCAN_FAST_INTERVAL,
1060+
.window = BT_GAP_SCAN_FAST_WINDOW,
1061+
.interval_coded = 0,
1062+
.window_coded = 0,
1063+
};
1064+
1065+
bt_conn_set_scan_params(&conn_scan_params);
1066+
#endif /* defined(CONFIG_BT_ADV_EXT) */
1067+
10351068
conn = bt_conn_create_le(&addr, BT_LE_CONN_PARAM_DEFAULT);
10361069

10371070
if (!conn) {
@@ -1936,6 +1969,35 @@ static int cmd_wl_connect(const struct shell *shell, size_t argc, char *argv[])
19361969
int err;
19371970
const char *action = argv[1];
19381971

1972+
#if defined(CONFIG_BT_ADV_EXT)
1973+
u32_t options = 0;
1974+
1975+
for (size_t argn = 2; argn < argc; argn++) {
1976+
const char *arg = argv[argn];
1977+
1978+
if (!strcmp(arg, "coded")) {
1979+
options |= BT_LE_CONN_OPT_CODED;
1980+
} else if (!strcmp(arg, "2m")) {
1981+
options |= BT_LE_CONN_OPT_2M;
1982+
} else if (!strcmp(arg, "no1m")) {
1983+
options |= BT_LE_CONN_OPT_NO_1M;
1984+
} else {
1985+
shell_help(shell);
1986+
return SHELL_CMD_HELP_PRINTED;
1987+
}
1988+
}
1989+
1990+
struct bt_conn_scan_param conn_scan_params = {
1991+
.options = options,
1992+
.interval = BT_GAP_SCAN_FAST_INTERVAL,
1993+
.window = BT_GAP_SCAN_FAST_WINDOW,
1994+
.interval_coded = 0,
1995+
.window_coded = 0,
1996+
};
1997+
1998+
bt_conn_set_scan_params(&conn_scan_params);
1999+
#endif /* defined(CONFIG_BT_ADV_EXT) */
2000+
19392001
if (!strcmp(action, "on")) {
19402002
err = bt_conn_create_auto_le(BT_LE_CONN_PARAM_DEFAULT);
19412003

@@ -2010,6 +2072,14 @@ static int cmd_auth_passkey(const struct shell *shell,
20102072
#define HELP_NONE "[none]"
20112073
#define HELP_ADDR_LE "<address: XX:XX:XX:XX:XX:XX> <type: (public|random)>"
20122074

2075+
#if defined(CONFIG_BT_ADV_EXT)
2076+
#define ADV_EXT_SCAN_OPT " [coded] [no1m]"
2077+
#define ADV_EXT_CONN_OPT " [coded] [2m] [no1m]"
2078+
#else
2079+
#define ADV_EXT_SCAN_OPT ""
2080+
#define ADV_EXT_CONN_OPT ""
2081+
#endif /* defined(CONFIG_BT_ADV_EXT) */
2082+
20132083
SHELL_STATIC_SUBCMD_SET_CREATE(bt_cmds,
20142084
SHELL_CMD_ARG(init, NULL, HELP_ADDR_LE, cmd_init, 1, 0),
20152085
#if defined(CONFIG_BT_HCI)
@@ -2023,8 +2093,9 @@ SHELL_STATIC_SUBCMD_SET_CREATE(bt_cmds,
20232093
SHELL_CMD_ARG(name, NULL, "[name]", cmd_name, 1, 1),
20242094
#if defined(CONFIG_BT_OBSERVER)
20252095
SHELL_CMD_ARG(scan, NULL,
2026-
"<value: on, passive, off> [filter: dups, nodups] [wl]",
2027-
cmd_scan, 2, 2),
2096+
"<value: on, passive, off> [filter: dups, nodups] [wl]"
2097+
ADV_EXT_SCAN_OPT,
2098+
cmd_scan, 2, 4),
20282099
#endif /* CONFIG_BT_OBSERVER */
20292100
#if defined(CONFIG_BT_BROADCASTER)
20302101
SHELL_CMD_ARG(advertise, NULL,
@@ -2052,7 +2123,8 @@ SHELL_STATIC_SUBCMD_SET_CREATE(bt_cmds,
20522123
#endif /* CONFIG_BT_BROADCASTER */
20532124
#if defined(CONFIG_BT_CONN)
20542125
#if defined(CONFIG_BT_CENTRAL)
2055-
SHELL_CMD_ARG(connect, NULL, HELP_ADDR_LE, cmd_connect_le, 3, 0),
2126+
SHELL_CMD_ARG(connect, NULL, HELP_ADDR_LE ADV_EXT_CONN_OPT,
2127+
cmd_connect_le, 3, 3),
20562128
#if !defined(CONFIG_BT_WHITELIST)
20572129
SHELL_CMD_ARG(auto-conn, NULL, HELP_ADDR_LE, cmd_auto_conn, 3, 0),
20582130
#endif /* !defined(CONFIG_BT_WHITELIST) */
@@ -2094,7 +2166,8 @@ SHELL_STATIC_SUBCMD_SET_CREATE(bt_cmds,
20942166
SHELL_CMD_ARG(wl-add, NULL, HELP_ADDR_LE, cmd_wl_add, 3, 0),
20952167
SHELL_CMD_ARG(wl-rem, NULL, HELP_ADDR_LE, cmd_wl_rem, 3, 0),
20962168
SHELL_CMD_ARG(wl-clear, NULL, HELP_NONE, cmd_wl_clear, 1, 0),
2097-
SHELL_CMD_ARG(wl-connect, NULL, "<on, off>", cmd_wl_connect, 2, 0),
2169+
SHELL_CMD_ARG(wl-connect, NULL, "<on, off>" ADV_EXT_CONN_OPT,
2170+
cmd_wl_connect, 2, 3),
20982171
#endif /* defined(CONFIG_BT_WHITELIST) */
20992172
#if defined(CONFIG_BT_FIXED_PASSKEY)
21002173
SHELL_CMD_ARG(fixed-passkey, NULL, "[passkey]", cmd_fixed_passkey,

0 commit comments

Comments
 (0)