diff --git a/examples/bluetooth/nimble/power_save/main/Kconfig.projbuild b/examples/bluetooth/nimble/power_save/main/Kconfig.projbuild index ecba9e9e62..8f011b1260 100644 --- a/examples/bluetooth/nimble/power_save/main/Kconfig.projbuild +++ b/examples/bluetooth/nimble/power_save/main/Kconfig.projbuild @@ -57,6 +57,13 @@ menu "Example Configuration" default 20 if EXAMPLE_MIN_CPU_FREQ_20M default 10 if EXAMPLE_MIN_CPU_FREQ_10M + config EXAMPLE_ADVERTISE_INTERVAL + int "BLE Advertise interval" + range 0 5000 + default 100 + help + Wake up interval for BLE advertising. Unit: 1 microsecond. + choice EXAMPLE_USE_IO_TYPE prompt "I/O Capability" default BLE_SM_IO_CAP_NO_IO diff --git a/examples/bluetooth/nimble/power_save/main/main.c b/examples/bluetooth/nimble/power_save/main/main.c index 4838f5027d..1df20a3738 100644 --- a/examples/bluetooth/nimble/power_save/main/main.c +++ b/examples/bluetooth/nimble/power_save/main/main.c @@ -30,6 +30,7 @@ #include "console/console.h" #include "services/gap/ble_svc_gap.h" #include "bleprph.h" +#include "driver/gpio.h" static const char *tag = "NimBLE_BLE_PRPH"; static int bleprph_gap_event(struct ble_gap_event *event, void *arg); @@ -122,6 +123,9 @@ bleprph_advertise(void) memset(&adv_params, 0, sizeof adv_params); adv_params.conn_mode = BLE_GAP_CONN_MODE_UND; adv_params.disc_mode = BLE_GAP_DISC_MODE_GEN; + adv_params.itvl_min = (CONFIG_EXAMPLE_ADVERTISE_INTERVAL*1000/625); + adv_params.itvl_max = (CONFIG_EXAMPLE_ADVERTISE_INTERVAL*1000/625); + rc = ble_gap_adv_start(own_addr_type, NULL, BLE_HS_FOREVER, &adv_params, bleprph_gap_event, NULL); if (rc != 0) { @@ -416,6 +420,14 @@ app_main(void) nimble_port_freertos_init(bleprph_host_task); + #if CONFIG_IDF_TARGET_ESP32C3 + gpio_sleep_set_direction(20, GPIO_MODE_INPUT); + gpio_sleep_set_pull_mode(20, GPIO_PULLUP_ONLY); + #elif CONFIG_IDF_TARGET_ESP32S3 + gpio_sleep_set_direction(44, GPIO_MODE_INPUT); + gpio_sleep_set_pull_mode(44, GPIO_PULLUP_ONLY); + #endif + /* Initialize command line interface to accept input from user */ rc = scli_init(); if (rc != ESP_OK) {