1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-04 20:32:21 +01:00

Merge branch 'ota_fixes' into integration

This commit is contained in:
J. Nick Koston
2025-08-10 18:47:24 -05:00
2 changed files with 12 additions and 12 deletions

View File

@@ -329,8 +329,7 @@ void ESPHomeOTAComponent::handle_data_() {
ssize_t read = this->client_->read(buf, requested);
if (read == -1) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
App.feed_wdt();
delay(1);
this->yield_and_feed_watchdog_();
continue;
}
ESP_LOGW(TAG, "Read error, errno %d", errno);
@@ -366,8 +365,7 @@ void ESPHomeOTAComponent::handle_data_() {
this->state_callback_.call(ota::OTA_IN_PROGRESS, percentage, 0);
#endif
// feed watchdog and give other tasks a chance to run
App.feed_wdt();
yield();
this->yield_and_feed_watchdog_();
}
}
@@ -429,8 +427,7 @@ bool ESPHomeOTAComponent::readall_(uint8_t *buf, size_t len) {
ssize_t read = this->client_->read(buf + at, len - at);
if (read == -1) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
App.feed_wdt();
delay(1);
this->yield_and_feed_watchdog_();
continue;
}
ESP_LOGW(TAG, "Error reading %d bytes, errno %d", len, errno);
@@ -441,8 +438,7 @@ bool ESPHomeOTAComponent::readall_(uint8_t *buf, size_t len) {
} else {
at += read;
}
App.feed_wdt();
delay(1);
this->yield_and_feed_watchdog_();
}
return true;
@@ -460,8 +456,7 @@ bool ESPHomeOTAComponent::writeall_(const uint8_t *buf, size_t len) {
ssize_t written = this->client_->write(buf + at, len - at);
if (written == -1) {
if (errno == EAGAIN || errno == EWOULDBLOCK) {
App.feed_wdt();
delay(1);
this->yield_and_feed_watchdog_();
continue;
}
ESP_LOGW(TAG, "Error writing %d bytes, errno %d", len, errno);
@@ -469,8 +464,7 @@ bool ESPHomeOTAComponent::writeall_(const uint8_t *buf, size_t len) {
} else {
at += written;
}
App.feed_wdt();
delay(1);
this->yield_and_feed_watchdog_();
}
return true;
}
@@ -493,5 +487,10 @@ void ESPHomeOTAComponent::cleanup_connection_() {
this->client_connect_time_ = 0;
}
void ESPHomeOTAComponent::yield_and_feed_watchdog_() {
App.feed_wdt();
delay(1);
}
} // namespace esphome
#endif

View File

@@ -35,6 +35,7 @@ class ESPHomeOTAComponent : public ota::OTAComponent {
void log_read_error_(const char *what);
void log_start_(const char *phase);
void cleanup_connection_();
void yield_and_feed_watchdog_();
#ifdef USE_OTA_PASSWORD
std::string password_;