From 3159ba1d5ac822a9ebe6ee51cc970c246cd5e7ae Mon Sep 17 00:00:00 2001 From: Rahul Tank Date: Tue, 1 Jun 2021 15:28:37 +0530 Subject: [PATCH] Add esp_timer_is_active function for Nimble stack to use esp_timer instead of FreeRTOS timer --- components/bt/host/nimble/Kconfig.in | 6 ++++++ components/bt/host/nimble/nimble | 2 +- .../bt/host/nimble/port/include/esp_nimble_cfg.h | 8 ++++++++ components/esp_timer/include/esp_timer.h | 12 ++++++++++++ components/esp_timer/src/esp_timer.c | 5 +++++ 5 files changed, 32 insertions(+), 1 deletion(-) diff --git a/components/bt/host/nimble/Kconfig.in b/components/bt/host/nimble/Kconfig.in index 8bb92e882d..dac35641e8 100644 --- a/components/bt/host/nimble/Kconfig.in +++ b/components/bt/host/nimble/Kconfig.in @@ -500,3 +500,9 @@ config BT_NIMBLE_BLUFI_ENABLE default n help Set this option to enable blufi functionality. + +config BT_NIMBLE_USE_ESP_TIMER + bool "Enable Esp Timer for Nimble" + default y + help + Set this option to use Esp Timer which has higher priority timer instead of FreeRTOS timer diff --git a/components/bt/host/nimble/nimble b/components/bt/host/nimble/nimble index 5bb7b40227..a90d8e46b8 160000 --- a/components/bt/host/nimble/nimble +++ b/components/bt/host/nimble/nimble @@ -1 +1 @@ -Subproject commit 5bb7b402275210ed6f97fe4bd6e452bf0f659452 +Subproject commit a90d8e46b87ea026182b97d8311dafc15c577714 diff --git a/components/bt/host/nimble/port/include/esp_nimble_cfg.h b/components/bt/host/nimble/port/include/esp_nimble_cfg.h index 582d4a42e1..1f4b3302b3 100644 --- a/components/bt/host/nimble/port/include/esp_nimble_cfg.h +++ b/components/bt/host/nimble/port/include/esp_nimble_cfg.h @@ -1374,4 +1374,12 @@ #define MYNEWT_VAL_NEWT_FEATURE_LOGCFG (1) #endif +#ifndef MYNEWT_VAL_BLE_USE_ESP_TIMER +#ifdef CONFIG_BT_NIMBLE_USE_ESP_TIMER +#define MYNEWT_VAL_BLE_USE_ESP_TIMER (1) +#else +#define MYNEWT_VAL_BLE_USE_ESP_TIMER (0) +#endif +#endif + #endif diff --git a/components/esp_timer/include/esp_timer.h b/components/esp_timer/include/esp_timer.h index cbda4dfe66..8c94298947 100644 --- a/components/esp_timer/include/esp_timer.h +++ b/components/esp_timer/include/esp_timer.h @@ -242,6 +242,18 @@ esp_err_t esp_timer_dump(FILE* stream); void esp_timer_isr_dispatch_need_yield(void); #endif // CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD +/** + * @brief Returns status of a timer, active or not + * + * This function is used to identify if the timer is still active or not. + * + * @param timer timer handle created using esp_timer_create + * @return + * - 1 if timer is still active + * - 0 if timer is not active. + */ +bool esp_timer_is_active(esp_timer_handle_t timer); + #ifdef __cplusplus } #endif diff --git a/components/esp_timer/src/esp_timer.c b/components/esp_timer/src/esp_timer.c index 3be8b257b8..ff45b58147 100644 --- a/components/esp_timer/src/esp_timer.c +++ b/components/esp_timer/src/esp_timer.c @@ -621,3 +621,8 @@ int64_t IRAM_ATTR esp_timer_get_next_alarm_for_wake_up(void) } return next_alarm; } + +bool esp_timer_is_active(esp_timer_handle_t timer) +{ + return timer_armed(timer); +}