Skip to content

Commit 575c243

Browse files
committed
Blueooth: Classic: add page scan shell
add BR/EDR page scan test shell Signed-off-by: Kai Cheng <[email protected]>
1 parent 26a3874 commit 575c243

File tree

1 file changed

+75
-0
lines changed
  • subsys/bluetooth/host/classic/shell

1 file changed

+75
-0
lines changed

subsys/bluetooth/host/classic/shell/bredr.c

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -818,6 +818,75 @@ static int cmd_connectable(const struct shell *sh, size_t argc, char *argv[])
818818
return 0;
819819
}
820820

821+
static int cmd_pscan_param(const struct shell *sh, size_t argc, char *argv[])
822+
{
823+
int err = 0;
824+
825+
if (!strcmp(argv[1], "iscan-r0")) {
826+
err = bt_br_page_scan_update_param(BT_BR_PAGE_SCAN_PARAM_R0);
827+
if (err) {
828+
shell_print(sh, "BR/EDR update page scan param failed (err %d)", err);
829+
return -ENOEXEC;
830+
}
831+
} else if (!strcmp(argv[1], "iscan-fr1")) {
832+
err = bt_br_page_scan_update_param(BT_BR_PAGE_SCAN_PARAM_FAST_R1);
833+
if (err) {
834+
shell_print(sh, "BR/EDR update page scan param failed (err %d)", err);
835+
return -ENOEXEC;
836+
}
837+
} else if (!strcmp(argv[1], "iscan-mr1")) {
838+
err = bt_br_page_scan_update_param(BT_BR_PAGE_SCAN_PARAM_MEDIUM_R1);
839+
if (err) {
840+
shell_print(sh, "BR/EDR update page scan param failed (err %d)", err);
841+
return -ENOEXEC;
842+
}
843+
} else if (!strcmp(argv[1], "iscan-sr1")) {
844+
err = bt_br_page_scan_update_param(BT_BR_PAGE_SCAN_PARAM_SLOW_R1);
845+
if (err) {
846+
shell_print(sh, "BR/EDR update page scan param failed (err %d)", err);
847+
return -ENOEXEC;
848+
}
849+
} else if (!strcmp(argv[1], "iscan-fr2")) {
850+
err = bt_br_page_scan_update_param(BT_BR_PAGE_SCAN_PARAM_FAST_R2);
851+
if (err) {
852+
shell_print(sh, "BR/EDR update page scan param failed (err %d)", err);
853+
return -ENOEXEC;
854+
}
855+
} else if (!strcmp(argv[1], "iscan-sr2")) {
856+
err = bt_br_page_scan_update_param(BT_BR_PAGE_SCAN_PARAM_SLOW_R2);
857+
if (err) {
858+
shell_print(sh, "BR/EDR update page scan param failed (err %d)", err);
859+
return -ENOEXEC;
860+
}
861+
} else if (!strcmp(argv[1], "defined")) {
862+
uint16_t interval;
863+
uint16_t window;
864+
enum bt_br_scan_type type;
865+
struct bt_br_page_scan_param param = {0};
866+
867+
interval = strtoul(argv[2], NULL, 16);
868+
window = strtoul(argv[3], NULL, 16);
869+
type = strtoul(argv[4], NULL, 16);
870+
871+
param.interval = interval;
872+
param.window = window;
873+
param.type = type;
874+
875+
err = bt_br_page_scan_update_param(&param);
876+
if (err) {
877+
shell_print(sh, "BR/EDR update page scan param failed (err %d)", err);
878+
return -ENOEXEC;
879+
}
880+
} else {
881+
shell_help(sh);
882+
return SHELL_CMD_HELP_PRINTED;
883+
}
884+
885+
shell_print(sh, "BR/EDR update page scan param done");
886+
887+
return 0;
888+
}
889+
821890
static int cmd_oob(const struct shell *sh, size_t argc, char *argv[])
822891
{
823892
char addr[BT_ADDR_STR_LEN];
@@ -1614,6 +1683,11 @@ static int cmd_default_handler(const struct shell *sh, size_t argc, char **argv)
16141683
"<psm> <mode: none, ret, fc, eret, stream> [hold_credit] " \
16151684
"[mode_optional] [extended_control]"
16161685

1686+
#define HELP_PSCAN_PARAM \
1687+
"<type: iscan-r0, iscan-fr1, iscan-mr1, iscan-sr1, iscan-fr2, iscan-sr2, defined>\n" \
1688+
"[<interval>] [<window>] [<type>]\n" \
1689+
"<interval>: scan interval in units of 0.625 ms"
1690+
16171691
SHELL_STATIC_SUBCMD_SET_CREATE(echo_cmds,
16181692
SHELL_CMD_ARG(register, NULL, HELP_NONE, cmd_l2cap_echo_reg, 1, 0),
16191693
SHELL_CMD_ARG(unregister, NULL, HELP_NONE, cmd_l2cap_echo_unreg, 1, 0),
@@ -1666,6 +1740,7 @@ SHELL_STATIC_SUBCMD_SET_CREATE(br_cmds,
16661740
SHELL_CMD(l2cap, &l2cap_cmds, HELP_NONE, cmd_default_handler),
16671741
SHELL_CMD_ARG(oob, NULL, NULL, cmd_oob, 1, 0),
16681742
SHELL_CMD_ARG(pscan, NULL, "<value: on, off>", cmd_connectable, 2, 0),
1743+
SHELL_CMD_ARG(pscan-param, NULL, HELP_PSCAN_PARAM, cmd_pscan_param, 2, 3),
16691744
SHELL_CMD_ARG(sdp-find, NULL, "<HFPAG, HFPHF, A2SRC, A2SNK, PNP, AVRCP_CT, AVRCP_TG>",
16701745
cmd_sdp_find_record, 2, 0),
16711746
SHELL_CMD_ARG(switch-role, NULL, "<value: central, peripheral>", cmd_switch_role, 2, 0),

0 commit comments

Comments
 (0)