mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-30 22:53:59 +00:00 
			
		
		
		
	Esp32c3 deepsleep fix (#3433)
This commit is contained in:
		| @@ -76,12 +76,14 @@ void DeepSleepComponent::set_sleep_duration(uint32_t time_ms) { this->sleep_dura | |||||||
| void DeepSleepComponent::set_wakeup_pin_mode(WakeupPinMode wakeup_pin_mode) { | void DeepSleepComponent::set_wakeup_pin_mode(WakeupPinMode wakeup_pin_mode) { | ||||||
|   this->wakeup_pin_mode_ = wakeup_pin_mode; |   this->wakeup_pin_mode_ = wakeup_pin_mode; | ||||||
| } | } | ||||||
|  | #if !defined(USE_ESP32_VARIANT_ESP32C3) | ||||||
| void DeepSleepComponent::set_ext1_wakeup(Ext1Wakeup ext1_wakeup) { this->ext1_wakeup_ = ext1_wakeup; } | void DeepSleepComponent::set_ext1_wakeup(Ext1Wakeup ext1_wakeup) { this->ext1_wakeup_ = ext1_wakeup; } | ||||||
| void DeepSleepComponent::set_touch_wakeup(bool touch_wakeup) { this->touch_wakeup_ = touch_wakeup; } | void DeepSleepComponent::set_touch_wakeup(bool touch_wakeup) { this->touch_wakeup_ = touch_wakeup; } | ||||||
| void DeepSleepComponent::set_run_duration(WakeupCauseToRunDuration wakeup_cause_to_run_duration) { | void DeepSleepComponent::set_run_duration(WakeupCauseToRunDuration wakeup_cause_to_run_duration) { | ||||||
|   wakeup_cause_to_run_duration_ = wakeup_cause_to_run_duration; |   wakeup_cause_to_run_duration_ = wakeup_cause_to_run_duration; | ||||||
| } | } | ||||||
| #endif | #endif | ||||||
|  | #endif | ||||||
| void DeepSleepComponent::set_run_duration(uint32_t time_ms) { this->run_duration_ = time_ms; } | void DeepSleepComponent::set_run_duration(uint32_t time_ms) { this->run_duration_ = time_ms; } | ||||||
| void DeepSleepComponent::begin_sleep(bool manual) { | void DeepSleepComponent::begin_sleep(bool manual) { | ||||||
|   if (this->prevent_ && !manual) { |   if (this->prevent_ && !manual) { | ||||||
| @@ -107,7 +109,8 @@ void DeepSleepComponent::begin_sleep(bool manual) { | |||||||
|  |  | ||||||
|   App.run_safe_shutdown_hooks(); |   App.run_safe_shutdown_hooks(); | ||||||
|  |  | ||||||
| #if defined(USE_ESP32) && !defined(USE_ESP32_VARIANT_ESP32C3) | #if defined(USE_ESP32) | ||||||
|  | #if !defined(USE_ESP32_VARIANT_ESP32C3) | ||||||
|   if (this->sleep_duration_.has_value()) |   if (this->sleep_duration_.has_value()) | ||||||
|     esp_sleep_enable_timer_wakeup(*this->sleep_duration_); |     esp_sleep_enable_timer_wakeup(*this->sleep_duration_); | ||||||
|   if (this->wakeup_pin_ != nullptr) { |   if (this->wakeup_pin_ != nullptr) { | ||||||
| @@ -125,10 +128,7 @@ void DeepSleepComponent::begin_sleep(bool manual) { | |||||||
|     esp_sleep_enable_touchpad_wakeup(); |     esp_sleep_enable_touchpad_wakeup(); | ||||||
|     esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); |     esp_sleep_pd_config(ESP_PD_DOMAIN_RTC_PERIPH, ESP_PD_OPTION_ON); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   esp_deep_sleep_start(); |  | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
| #ifdef USE_ESP32_VARIANT_ESP32C3 | #ifdef USE_ESP32_VARIANT_ESP32C3 | ||||||
|   if (this->sleep_duration_.has_value()) |   if (this->sleep_duration_.has_value()) | ||||||
|     esp_sleep_enable_timer_wakeup(*this->sleep_duration_); |     esp_sleep_enable_timer_wakeup(*this->sleep_duration_); | ||||||
| @@ -137,9 +137,12 @@ void DeepSleepComponent::begin_sleep(bool manual) { | |||||||
|     if (this->wakeup_pin_mode_ == WAKEUP_PIN_MODE_INVERT_WAKEUP && this->wakeup_pin_->digital_read()) { |     if (this->wakeup_pin_mode_ == WAKEUP_PIN_MODE_INVERT_WAKEUP && this->wakeup_pin_->digital_read()) { | ||||||
|       level = !level; |       level = !level; | ||||||
|     } |     } | ||||||
|     esp_deep_sleep_enable_gpio_wakeup(gpio_num_t(this->wakeup_pin_->get_pin()), level); |     esp_deep_sleep_enable_gpio_wakeup(gpio_num_t(this->wakeup_pin_->get_pin()), | ||||||
|  |                                       static_cast<esp_deepsleep_gpio_wake_up_mode_t>(level)); | ||||||
|   } |   } | ||||||
| #endif | #endif | ||||||
|  |   esp_deep_sleep_start(); | ||||||
|  | #endif | ||||||
|  |  | ||||||
| #ifdef USE_ESP8266 | #ifdef USE_ESP8266 | ||||||
|   ESP.deepSleep(*this->sleep_duration_);  // NOLINT(readability-static-accessed-through-instance) |   ESP.deepSleep(*this->sleep_duration_);  // NOLINT(readability-static-accessed-through-instance) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user