mirror of
https://github.com/Threnklyn/esphome-dev.git
synced 2026-05-19 20:53:26 +02:00
7b45498de6
* Implement http_request component for esp-idf * Fix ifdefs * Lint * clang * Set else to fail with error message * Use unique_ptr * Fix * Tidy up casting, explicit HttpResponse lifetime (#3265) Co-authored-by: Daniel Cousens <dcousens@users.noreply.github.com> * Remove unique_ptr wrapper * Fix * Use reference * Add duration code into new split files * Add config for tx/rx buffer on idf * Fix * Try reserve response data with rx buffer size * Update http_request.h * Move client cleanup to be earlier * Move capture_response to bool on struct and remove global * Fix returns * Change quotes to brackets * Rework http request * Remove http request from old test yamls * Update component tests * Validate md5 length when hardcoded string * Linting * Add duration_ms to container * More lint * const * Remove default arguments and add helper functions for get and post * Add virtual destructor to HttpContainer * Undo const HEADER_KEYS * 🤦 * Update esphome/components/http_request/ota/ota_http_request.cpp Co-authored-by: Keith Burzinski <kbx81x@gmail.com> * Update esphome/components/http_request/ota/ota_http_request.cpp Co-authored-by: Keith Burzinski <kbx81x@gmail.com> * lint * Move header keys inline * Add missing WatchdogManagers * CAPS * Fix "follow redirects" string in config dump * IDF 5+ fix --------- Co-authored-by: Daniel Cousens <413395+dcousens@users.noreply.github.com> Co-authored-by: Daniel Cousens <dcousens@users.noreply.github.com> Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
77 lines
1.6 KiB
C++
77 lines
1.6 KiB
C++
#include "watchdog.h"
|
|
|
|
#include "esphome/core/application.h"
|
|
#include "esphome/core/log.h"
|
|
|
|
#include <cinttypes>
|
|
#include <cstdint>
|
|
#ifdef USE_ESP32
|
|
#include "esp_idf_version.h"
|
|
#include "esp_task_wdt.h"
|
|
#endif
|
|
#ifdef USE_RP2040
|
|
#include "hardware/watchdog.h"
|
|
#include "pico/stdlib.h"
|
|
#endif
|
|
|
|
namespace esphome {
|
|
namespace http_request {
|
|
namespace watchdog {
|
|
|
|
static const char *const TAG = "http_request.watchdog";
|
|
|
|
WatchdogManager::WatchdogManager(uint32_t timeout_ms) : timeout_ms_(timeout_ms) {
|
|
if (timeout_ms == 0) {
|
|
return;
|
|
}
|
|
this->saved_timeout_ms_ = this->get_timeout_();
|
|
this->set_timeout_(timeout_ms);
|
|
}
|
|
|
|
WatchdogManager::~WatchdogManager() {
|
|
if (this->timeout_ms_ == 0) {
|
|
return;
|
|
}
|
|
this->set_timeout_(this->saved_timeout_ms_);
|
|
}
|
|
|
|
void WatchdogManager::set_timeout_(uint32_t timeout_ms) {
|
|
ESP_LOGV(TAG, "Adjusting WDT to %" PRIu32 "ms", timeout_ms);
|
|
#ifdef USE_ESP32
|
|
#if ESP_IDF_VERSION_MAJOR >= 5
|
|
esp_task_wdt_config_t wdt_config = {
|
|
.timeout_ms = timeout_ms,
|
|
.idle_core_mask = 0x03,
|
|
.trigger_panic = true,
|
|
};
|
|
esp_task_wdt_reconfigure(&wdt_config);
|
|
#else
|
|
esp_task_wdt_init(timeout_ms, true);
|
|
#endif // ESP_IDF_VERSION_MAJOR
|
|
#endif // USE_ESP32
|
|
|
|
#ifdef USE_RP2040
|
|
watchdog_enable(timeout_ms, true);
|
|
#endif
|
|
}
|
|
|
|
uint32_t WatchdogManager::get_timeout_() {
|
|
uint32_t timeout_ms = 0;
|
|
|
|
#ifdef USE_ESP32
|
|
timeout_ms = (uint32_t) CONFIG_ESP_TASK_WDT_TIMEOUT_S * 1000;
|
|
#endif // USE_ESP32
|
|
|
|
#ifdef USE_RP2040
|
|
timeout_ms = watchdog_get_count() / 1000;
|
|
#endif
|
|
|
|
ESP_LOGVV(TAG, "get_timeout: %" PRIu32 "ms", timeout_ms);
|
|
|
|
return timeout_ms;
|
|
}
|
|
|
|
} // namespace watchdog
|
|
} // namespace http_request
|
|
} // namespace esphome
|