From 561d1cba1b3802da2dd70fb93a8d25b6985a36a9 Mon Sep 17 00:00:00 2001 From: "isha.pardikar@espressif.com" Date: Wed, 19 Oct 2022 15:23:21 +0530 Subject: [PATCH] NimBLE : Init deinit nimble stack in a loop --- .../nimble/blecent/main/Kconfig.projbuild | 6 +++ examples/bluetooth/nimble/blecent/main/main.c | 37 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/examples/bluetooth/nimble/blecent/main/Kconfig.projbuild b/examples/bluetooth/nimble/blecent/main/Kconfig.projbuild index 932c796848..411d97254b 100644 --- a/examples/bluetooth/nimble/blecent/main/Kconfig.projbuild +++ b/examples/bluetooth/nimble/blecent/main/Kconfig.projbuild @@ -12,4 +12,10 @@ menu "Example Configuration" prompt "Enable Extended Adv" help Use this option to enable extended advertising in the example + + config EXAMPLE_INIT_DEINIT_LOOP + bool + prompt "Perform init deinit of nimble stack in a loop" + help + Enable this flag, to perform only stack Init and Deinit in a loop. endmenu diff --git a/examples/bluetooth/nimble/blecent/main/main.c b/examples/bluetooth/nimble/blecent/main/main.c index c1afc07bea..8e4efe6095 100644 --- a/examples/bluetooth/nimble/blecent/main/main.c +++ b/examples/bluetooth/nimble/blecent/main/main.c @@ -577,8 +577,10 @@ blecent_on_sync(void) rc = ble_hs_util_ensure_addr(0); assert(rc == 0); +#if !CONFIG_EXAMPLE_INIT_DEINIT_LOOP /* Begin scanning for a peripheral to connect to. */ blecent_scan(); +#endif } void blecent_host_task(void *param) @@ -590,6 +592,37 @@ void blecent_host_task(void *param) nimble_port_freertos_deinit(); } +#if CONFIG_EXAMPLE_INIT_DEINIT_LOOP +/* This function showcases stack init and deinit procedure. */ +static void stack_init_deinit(void) +{ + int rc; + while(1) { + + vTaskDelay(1000); + + ESP_LOGI(tag, "Deinit host"); + + rc = nimble_port_stop(); + if (rc == 0) { + nimble_port_deinit(); + } else { + ESP_LOGI(tag, "Nimble port stop failed, rc = %d", rc); + break; + } + + vTaskDelay(1000); + + ESP_LOGI(tag, "Init host"); + + nimble_port_init(); + nimble_port_freertos_init(blecent_host_task); + + ESP_LOGI(tag, "Waiting for 1 second"); + } +} +#endif + void app_main(void) { @@ -621,4 +654,8 @@ app_main(void) nimble_port_freertos_init(blecent_host_task); +#if CONFIG_EXAMPLE_INIT_DEINIT_LOOP + stack_init_deinit(); +#endif + }