mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 07:03:55 +00:00 
			
		
		
		
	increase / restore WDT
This commit is contained in:
		| @@ -74,7 +74,6 @@ async def to_code(config): | |||||||
|     ) |     ) | ||||||
|  |  | ||||||
|     add_idf_sdkconfig_option("CONFIG_LWIP_DHCPS", False) |     add_idf_sdkconfig_option("CONFIG_LWIP_DHCPS", False) | ||||||
|     add_idf_sdkconfig_option("CONFIG_ESP_TASK_WDT_TIMEOUT_S", 60) |  | ||||||
|     add_idf_sdkconfig_option("CONFIG_PPP", True) |     add_idf_sdkconfig_option("CONFIG_PPP", True) | ||||||
|     add_idf_sdkconfig_option("CONFIG_LWIP_PPP_SUPPORT", True) |     add_idf_sdkconfig_option("CONFIG_LWIP_PPP_SUPPORT", True) | ||||||
|     add_idf_sdkconfig_option("CONFIG_PPP_PAP_SUPPORT", True) |     add_idf_sdkconfig_option("CONFIG_PPP_PAP_SUPPORT", True) | ||||||
|   | |||||||
| @@ -14,6 +14,8 @@ | |||||||
| #include <lwip/dns.h> | #include <lwip/dns.h> | ||||||
| #include <cstring> | #include <cstring> | ||||||
| #include <iostream> | #include <iostream> | ||||||
|  | #include "esp_idf_version.h" | ||||||
|  | #include "esp_task_wdt.h" | ||||||
|  |  | ||||||
| static const size_t CONFIG_MODEM_UART_RX_BUFFER_SIZE = 2048; | static const size_t CONFIG_MODEM_UART_RX_BUFFER_SIZE = 2048; | ||||||
| static const size_t CONFIG_MODEM_UART_TX_BUFFER_SIZE = 1024; | static const size_t CONFIG_MODEM_UART_TX_BUFFER_SIZE = 1024; | ||||||
| @@ -50,6 +52,19 @@ std::string command_result_to_string(command_result err) { | |||||||
|   return res; |   return res; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | void set_wdt(uint32_t timeout_s) { | ||||||
|  | #if ESP_IDF_VERSION_MAJOR >= 5 | ||||||
|  |   esp_task_wdt_config_t wdt_config = { | ||||||
|  |       .timeout_ms = timeout_s * 1000, | ||||||
|  |       .idle_core_mask = 0x03, | ||||||
|  |       .trigger_panic = true, | ||||||
|  |   }; | ||||||
|  |   esp_task_wdt_reconfigure(&wdt_config); | ||||||
|  | #else | ||||||
|  |   esp_task_wdt_init(timeout_s, true); | ||||||
|  | #endif  // ESP_IDF_VERSION_MAJOR | ||||||
|  | } | ||||||
|  |  | ||||||
| ModemComponent::ModemComponent() { global_modem_component = this; } | ModemComponent::ModemComponent() { global_modem_component = this; } | ||||||
|  |  | ||||||
| void ModemComponent::dump_config() { ESP_LOGCONFIG(TAG, "Config Modem:"); } | void ModemComponent::dump_config() { ESP_LOGCONFIG(TAG, "Config Modem:"); } | ||||||
| @@ -86,6 +101,8 @@ bool ModemComponent::is_connected() { return this->state_ == ModemComponentState | |||||||
|  |  | ||||||
| void ModemComponent::setup() { | void ModemComponent::setup() { | ||||||
|   ESP_LOGI(TAG, "Setting up Modem..."); |   ESP_LOGI(TAG, "Setting up Modem..."); | ||||||
|  |   // increase WDT, because setup and start_connect take some time. | ||||||
|  |   set_wdt(60); | ||||||
|  |  | ||||||
|   ESP_LOGV(TAG, "DTE setup"); |   ESP_LOGV(TAG, "DTE setup"); | ||||||
|   esp_modem_dte_config_t dte_config = ESP_MODEM_DTE_DEFAULT_CONFIG(); |   esp_modem_dte_config_t dte_config = ESP_MODEM_DTE_DEFAULT_CONFIG(); | ||||||
| @@ -162,10 +179,13 @@ void ModemComponent::setup() { | |||||||
|   assert(this->dce); |   assert(this->dce); | ||||||
|  |  | ||||||
|   this->started_ = true; |   this->started_ = true; | ||||||
|  |  | ||||||
|  |   set_wdt(CONFIG_ESP_TASK_WDT_TIMEOUT_S); | ||||||
|   ESP_LOGV(TAG, "Setup finished"); |   ESP_LOGV(TAG, "Setup finished"); | ||||||
| } | } | ||||||
|  |  | ||||||
| void ModemComponent::start_connect_() { | void ModemComponent::start_connect_() { | ||||||
|  |   set_wdt(60); | ||||||
|   this->connect_begin_ = millis(); |   this->connect_begin_ = millis(); | ||||||
|   this->status_set_warning("Starting connection"); |   this->status_set_warning("Starting connection"); | ||||||
|  |  | ||||||
| @@ -217,6 +237,8 @@ void ModemComponent::start_connect_() { | |||||||
|       ESP_LOGI(TAG, "'init_at' '%s' result: %s", cmd.c_str(), result.c_str()); |       ESP_LOGI(TAG, "'init_at' '%s' result: %s", cmd.c_str(), result.c_str()); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|  |   // restore WDT | ||||||
|  |   set_wdt(CONFIG_ESP_TASK_WDT_TIMEOUT_S); | ||||||
| } | } | ||||||
|  |  | ||||||
| void ModemComponent::got_ip_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { | void ModemComponent::got_ip_event_handler(void *arg, esp_event_base_t event_base, int32_t event_id, void *event_data) { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user