mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-09 20:41:14 +00:00
esp32: Deactivate wakeup trigger after first wakeup
Added function esp_sleep_disable_wakeup_source() to deactivate wakeup trigger for selected source. Updated documentation for this function in sleep_modes.rst file. Updated unit test to check this functionality for light sleep. The test_sleep.c unit test is updated to add reliability for unit testing. (TW#18952) Closes https://github.com/espressif/esp-idf/issues/1677
This commit is contained in:
@@ -37,6 +37,11 @@ typedef esp_sleep_pd_option_t esp_deep_sleep_pd_option_t;
|
||||
typedef esp_sleep_ext1_wakeup_mode_t esp_ext1_wakeup_mode_t;
|
||||
typedef esp_sleep_wakeup_cause_t esp_deep_sleep_wakeup_cause_t;
|
||||
|
||||
inline static esp_err_t esp_deep_sleep_disable_wakeup_source(esp_sleep_source_t source)
|
||||
{
|
||||
return esp_sleep_disable_wakeup_source(source);
|
||||
}
|
||||
|
||||
inline static esp_err_t esp_deep_sleep_enable_ulp_wakeup(void)
|
||||
{
|
||||
return esp_sleep_enable_ulp_wakeup();
|
||||
@@ -47,11 +52,6 @@ inline static esp_err_t esp_deep_sleep_enable_timer_wakeup(uint64_t time_in_us)
|
||||
return esp_sleep_enable_timer_wakeup(time_in_us);
|
||||
}
|
||||
|
||||
inline static esp_err_t esp_deep_sleep_disable_timer_wakeup(void)
|
||||
{
|
||||
return esp_sleep_disable_timer_wakeup();
|
||||
}
|
||||
|
||||
inline static esp_err_t esp_deep_sleep_enable_touchpad_wakeup(void)
|
||||
{
|
||||
return esp_sleep_enable_touchpad_wakeup();
|
||||
|
@@ -18,6 +18,7 @@
|
||||
#include "esp_err.h"
|
||||
#include "driver/gpio.h"
|
||||
#include "driver/touch_pad.h"
|
||||
#include "soc/rtc.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
@@ -62,6 +63,35 @@ typedef enum {
|
||||
ESP_SLEEP_WAKEUP_ULP, //!< Wakeup caused by ULP program
|
||||
} esp_sleep_wakeup_cause_t;
|
||||
|
||||
/**
|
||||
* @brief Sleep wakeup sources for esp_sleep_disable_wakeup_source function
|
||||
*/
|
||||
typedef enum {
|
||||
ESP_SLEEP_SOURCE_UNDEFINED, //!< Wakeup source is not defined
|
||||
ESP_SLEEP_SOURCE_EXT0, //!< Wakeup source for external signal using RTC_IO
|
||||
ESP_SLEEP_SOURCE_EXT1, //!< Wakeup source for external signal using RTC_CNTL
|
||||
ESP_SLEEP_SOURCE_TIMER, //!< Wakeup source for timer
|
||||
ESP_SLEEP_SOURCE_TOUCHPAD, //!< Wakeup source for touchpad
|
||||
ESP_SLEEP_SOURCE_ULP, //!< Wakeup source for ULP program
|
||||
} esp_sleep_source_t;
|
||||
|
||||
/**
|
||||
* @brief Disable wakeup source
|
||||
*
|
||||
* This function is used to deactivate wake up trigger for source
|
||||
* defined as parameter of the function.
|
||||
*
|
||||
* @note This function does not modify wake up configuration in RTC.
|
||||
* It will be performed in esp_sleep_start function.
|
||||
*
|
||||
* See docs/sleep-modes.rst for details.
|
||||
*
|
||||
* @param source - number of source to disable of type esp_sleep_source_t
|
||||
* @return
|
||||
* - ESP_OK on success
|
||||
* - ESP_ERR_INVALID_STATE if trigger was not active
|
||||
*/
|
||||
esp_err_t esp_sleep_disable_wakeup_source(esp_sleep_source_t source);
|
||||
|
||||
/**
|
||||
* @brief Enable wakeup by ULP coprocessor
|
||||
@@ -75,7 +105,7 @@ typedef enum {
|
||||
*/
|
||||
esp_err_t esp_sleep_enable_ulp_wakeup();
|
||||
|
||||
/**
|
||||
/**
|
||||
* @brief Enable wakeup by timer
|
||||
* @param time_in_us time before wakeup, in microseconds
|
||||
* @return
|
||||
@@ -84,23 +114,6 @@ esp_err_t esp_sleep_enable_ulp_wakeup();
|
||||
*/
|
||||
esp_err_t esp_sleep_enable_timer_wakeup(uint64_t time_in_us);
|
||||
|
||||
/**
|
||||
* @brief Disable timer wakeup
|
||||
*
|
||||
* This function is used to deactivate timer wakeup trigger
|
||||
* after first sleep for example to allow wakeup from other sources.
|
||||
*
|
||||
* @note This function does not modify wakeup configuration in RTC.
|
||||
* It will be performed in esp_sleep_start function.
|
||||
*
|
||||
* See docs/sleep-modes.rst for details.
|
||||
*
|
||||
* @return
|
||||
* - ESP_OK on success
|
||||
* - ESP_ERR_INVALID_STATE if trigger was not active
|
||||
*/
|
||||
esp_err_t esp_sleep_disable_timer_wakeup();
|
||||
|
||||
/**
|
||||
* @brief Enable wakeup by touch sensor
|
||||
*
|
||||
|
Reference in New Issue
Block a user