Skip to content

Commit

Permalink
NimBLE : Init deinit nimble stack in a loop
Browse files Browse the repository at this point in the history
  • Loading branch information
IshaESP committed Oct 20, 2022
1 parent 28f9dde commit ff29f5c
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 0 deletions.
6 changes: 6 additions & 0 deletions examples/bluetooth/nimble/blecent/main/Kconfig.projbuild
Original file line number Diff line number Diff line change
Expand Up @@ -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
37 changes: 37 additions & 0 deletions examples/bluetooth/nimble/blecent/main/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
{
Expand Down Expand Up @@ -621,4 +654,8 @@ app_main(void)

nimble_port_freertos_init(blecent_host_task);

#if CONFIG_EXAMPLE_INIT_DEINIT_LOOP
stack_init_deinit();
#endif

}

0 comments on commit ff29f5c

Please sign in to comment.