@@ -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+
821890static 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+
16171691SHELL_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