@@ -486,9 +486,21 @@ static struct db_stats {
486486 size_t ccc_cfg ;
487487} stats ;
488488
489+ struct show_data {
490+ const struct shell * shell ;
491+ struct bt_uuid_16 uuid ;
492+ };
493+
489494static u8_t print_attr (const struct bt_gatt_attr * attr , void * user_data )
490495{
491- const struct shell * shell = user_data ;
496+ struct show_data * data = user_data ;
497+
498+ if (data -> uuid .val ) {
499+ if (!bt_uuid_cmp (& data -> uuid .uuid , attr -> uuid )) {
500+ goto print ;
501+ }
502+ return BT_GATT_ITER_CONTINUE ;
503+ }
492504
493505 stats .attr_count ++ ;
494506
@@ -509,21 +521,33 @@ static u8_t print_attr(const struct bt_gatt_attr *attr, void *user_data)
509521 stats .ccc_cfg += cfg -> cfg_len ;
510522 }
511523
512- shell_print (shell , "attr %p handle 0x%04x uuid %s perm 0x%02x" ,
524+ print :
525+ shell_print (data -> shell , "attr %p handle 0x%04x uuid %s perm 0x%02x" ,
513526 attr , attr -> handle , bt_uuid_str (attr -> uuid ), attr -> perm );
514527
515528 return BT_GATT_ITER_CONTINUE ;
516529}
517530
518531static int cmd_show_db (const struct shell * shell , size_t argc , char * argv [])
519532{
533+ struct show_data data ;
520534 size_t total_len ;
521535
522536 memset (& stats , 0 , sizeof (stats ));
523537
524- bt_gatt_foreach_attr (0x0001 , 0xffff , print_attr , (void * )shell );
538+ data .shell = shell ;
539+
540+ if (argc > 1 ) {
541+ data .uuid .uuid .type = BT_UUID_TYPE_16 ;
542+ data .uuid .val = strtoul (argv [1 ], NULL , 16 );
543+ } else {
544+ data .uuid .val = 0 ;
545+ }
546+
547+ bt_gatt_foreach_attr (0x0001 , 0xffff , print_attr , & data );
525548
526549 if (!stats .attr_count ) {
550+ shell_print (shell , "No attribute found" );
527551 return 0 ;
528552 }
529553
@@ -848,7 +872,7 @@ SHELL_STATIC_SUBCMD_SET_CREATE(gatt_cmds,
848872 SHELL_CMD_ARG (register , NULL ,
849873 "register pre-predefined test service" ,
850874 cmd_register_test_svc , 1 , 0 ),
851- SHELL_CMD_ARG (show - db , NULL , HELP_NONE , cmd_show_db , 1 , 0 ),
875+ SHELL_CMD_ARG (show - db , NULL , "[uuid]" , cmd_show_db , 1 , 1 ),
852876 SHELL_CMD_ARG (unregister , NULL ,
853877 "unregister pre-predefined test service" ,
854878 cmd_unregister_test_svc , 1 , 0 ),
0 commit comments