Skip to content

Commit 090f95d

Browse files
Vudentznashif
authored andcommitted
Bluetooth: Shell: Add option UUID parameter to GATT show-db
This enables locating specific attribute in the database: uart:~$ gatt show-db 0x2a00 attr 0x004235a8 handle 0x000b uuid 2a00 perm 0x09 Signed-off-by: Luiz Augusto von Dentz <[email protected]>
1 parent 26fea23 commit 090f95d

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

subsys/bluetooth/shell/gatt.c

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
489494
static 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

518531
static 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

Comments
 (0)