ソースを参照

Add esp_timer_is_active function for Nimble stack to use esp_timer instead of FreeRTOS timer

Rahul Tank 4 年 前
コミット
3159ba1d5a

+ 6 - 0
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

+ 1 - 1
components/bt/host/nimble/nimble

@@ -1 +1 @@
-Subproject commit 5bb7b402275210ed6f97fe4bd6e452bf0f659452
+Subproject commit a90d8e46b87ea026182b97d8311dafc15c577714

+ 8 - 0
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

+ 12 - 0
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

+ 5 - 0
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);
+}