From 135bcd339b4cf7a16a6dd85cd434dc4a7450f074 Mon Sep 17 00:00:00 2001 From: Emil Gydesen Date: Tue, 27 Sep 2022 14:14:09 +0200 Subject: [PATCH] Bluetooth: Shell: Remove ad_mode_parse The function did not provide anything that could not just as easily have been done in the existing loops. This just required moving the call to ad_init to after the param parsing loop. Signed-off-by: Emil Gydesen --- subsys/bluetooth/shell/bt.c | 63 ++++++++++++++----------------------- 1 file changed, 24 insertions(+), 39 deletions(-) diff --git a/subsys/bluetooth/shell/bt.c b/subsys/bluetooth/shell/bt.c index 7221f5a80f4..d686b1d0e23 100644 --- a/subsys/bluetooth/shell/bt.c +++ b/subsys/bluetooth/shell/bt.c @@ -1186,21 +1186,6 @@ static int cmd_scan_filter_clear_addr(const struct shell *sh, size_t argc, #endif /* CONFIG_BT_OBSERVER */ #if defined(CONFIG_BT_BROADCASTER) -static void ad_mode_parse(const struct shell *sh, size_t argc, char *argv[], bool *discov) -{ - for (size_t argn = 0; argn < argc; argn++) { - const char *arg = argv[argn]; - - if (!strcmp(arg, "discov")) { - *discov = true; - break; - } else if (!strcmp(arg, "non_discov")) { - *discov = false; - break; - } - } -} - static ssize_t ad_init(struct bt_data *data_array, const size_t data_array_size, const atomic_t *adv_opt) { @@ -1294,23 +1279,13 @@ static int cmd_advertise(const struct shell *sh, size_t argc, char *argv[]) goto fail; } - ad_mode_parse(sh, argc - 2, &argv[2], &discoverable); - - atomic_clear(adv_opt); - atomic_set_bit_to(adv_opt, SHELL_ADV_OPT_CONNECTABLE, - (param.options & BT_LE_ADV_OPT_CONNECTABLE) > 0); - atomic_set_bit_to(adv_opt, SHELL_ADV_OPT_DISCOVERABLE, discoverable); - - ad_len = ad_init(ad, ARRAY_SIZE(ad), adv_opt); - if (ad_len < 0) { - return -ENOEXEC; - } - for (size_t argn = 2; argn < argc; argn++) { const char *arg = argv[argn]; - if (!strcmp(arg, "discov") || !strcmp(arg, "non_discov")) { - /* Skip */ + if (!strcmp(arg, "discov")) { + discoverable = true; + } else if (!strcmp(arg, "non_discov")) { + discoverable = false; } else if (!strcmp(arg, "fal")) { param.options |= BT_LE_ADV_OPT_FILTER_SCAN_REQ; param.options |= BT_LE_ADV_OPT_FILTER_CONN; @@ -1338,6 +1313,16 @@ static int cmd_advertise(const struct shell *sh, size_t argc, char *argv[]) } } + atomic_clear(adv_opt); + atomic_set_bit_to(adv_opt, SHELL_ADV_OPT_CONNECTABLE, + (param.options & BT_LE_ADV_OPT_CONNECTABLE) > 0); + atomic_set_bit_to(adv_opt, SHELL_ADV_OPT_DISCOVERABLE, discoverable); + + ad_len = ad_init(ad, ARRAY_SIZE(ad), adv_opt); + if (ad_len < 0) { + return -ENOEXEC; + } + err = bt_le_adv_start(¶m, ad_len > 0 ? ad : NULL, ad_len, NULL, 0); if (err < 0) { shell_error(sh, "Failed to start advertising (err %d)", @@ -1568,15 +1553,6 @@ static int cmd_adv_data(const struct shell *sh, size_t argc, char *argv[]) data = ad; data_len = &ad_len; - ad_mode_parse(sh, argc - 1, &argv[1], &discoverable); - - atomic_set_bit_to(adv_set_opt[selected_adv], SHELL_ADV_OPT_DISCOVERABLE, discoverable); - - ad_len = ad_init(ad, ARRAY_SIZE(ad), adv_set_opt[selected_adv]); - if (ad_len < 0) { - return -ENOEXEC; - } - for (size_t argn = 1; argn < argc; argn++) { const char *arg = argv[argn]; @@ -1590,7 +1566,9 @@ static int cmd_adv_data(const struct shell *sh, size_t argc, char *argv[]) } if (!strcmp(arg, "discov")) { - /* Skip */ + discoverable = true; + } else if (!strcmp(arg, "non_discov")) { + discoverable = false; } else if (!strcmp(arg, "scan-response")) { if (data == sd) { shell_print(sh, "Failed to set advertising data: " @@ -1620,6 +1598,13 @@ static int cmd_adv_data(const struct shell *sh, size_t argc, char *argv[]) } } + atomic_set_bit_to(adv_set_opt[selected_adv], SHELL_ADV_OPT_DISCOVERABLE, discoverable); + + ad_len = ad_init(ad, ARRAY_SIZE(ad), adv_set_opt[selected_adv]); + if (ad_len < 0) { + return -ENOEXEC; + } + err = bt_le_ext_adv_set_data(adv, ad_len > 0 ? ad : NULL, ad_len, sd_len > 0 ? sd : NULL, sd_len); if (err) {