From bd50a7f1ab42b80a27a58a9c63dc787171b2eb52 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Wed, 18 Jun 2025 14:33:58 +0200 Subject: [PATCH] cleanup --- .../ethernet/ethernet_component.cpp | 33 +++++++++---------- .../components/ethernet/ethernet_component.h | 2 -- 2 files changed, 15 insertions(+), 20 deletions(-) diff --git a/esphome/components/ethernet/ethernet_component.cpp b/esphome/components/ethernet/ethernet_component.cpp index 8ae15250c4..47db61eea5 100644 --- a/esphome/components/ethernet/ethernet_component.cpp +++ b/esphome/components/ethernet/ethernet_component.cpp @@ -400,19 +400,21 @@ void EthernetComponent::eth_event_handler(void *arg, esp_event_base_t event_base case ETHERNET_EVENT_START: event_name = "ETH started"; global_eth_component->started_ = true; - global_eth_component->enable_loop(); + global_eth_component->enable_loop_soon_any_context(); break; case ETHERNET_EVENT_STOP: event_name = "ETH stopped"; global_eth_component->started_ = false; - global_eth_component->set_connected_(false); // This will enable the loop + global_eth_component->connected_ = false; + global_eth_component->enable_loop_soon_any_context(); // Enable loop when connection state changes break; case ETHERNET_EVENT_CONNECTED: event_name = "ETH connected"; break; case ETHERNET_EVENT_DISCONNECTED: event_name = "ETH disconnected"; - global_eth_component->set_connected_(false); // This will enable the loop + global_eth_component->connected_ = false; + global_eth_component->enable_loop_soon_any_context(); // Enable loop when connection state changes break; default: return; @@ -428,9 +430,11 @@ void EthernetComponent::got_ip_event_handler(void *arg, esp_event_base_t event_b ESP_LOGV(TAG, "[Ethernet event] ETH Got IP " IPSTR, IP2STR(&ip_info->ip)); global_eth_component->got_ipv4_address_ = true; #if USE_NETWORK_IPV6 && (USE_NETWORK_MIN_IPV6_ADDR_COUNT > 0) - global_eth_component->set_connected_(global_eth_component->ipv6_count_ >= USE_NETWORK_MIN_IPV6_ADDR_COUNT); + global_eth_component->connected_ = global_eth_component->ipv6_count_ >= USE_NETWORK_MIN_IPV6_ADDR_COUNT; + global_eth_component->enable_loop_soon_any_context(); // Enable loop when connection state changes #else - global_eth_component->set_connected_(true); + global_eth_component->connected_ = true; + global_eth_component->enable_loop_soon_any_context(); // Enable loop when connection state changes #endif /* USE_NETWORK_IPV6 */ } @@ -441,10 +445,12 @@ void EthernetComponent::got_ip6_event_handler(void *arg, esp_event_base_t event_ ESP_LOGV(TAG, "[Ethernet event] ETH Got IPv6: " IPV6STR, IPV62STR(event->ip6_info.ip)); global_eth_component->ipv6_count_ += 1; #if (USE_NETWORK_MIN_IPV6_ADDR_COUNT > 0) - global_eth_component->set_connected_(global_eth_component->got_ipv4_address_ && - (global_eth_component->ipv6_count_ >= USE_NETWORK_MIN_IPV6_ADDR_COUNT)); + global_eth_component->connected_ = + global_eth_component->got_ipv4_address_ && (global_eth_component->ipv6_count_ >= USE_NETWORK_MIN_IPV6_ADDR_COUNT); + global_eth_component->enable_loop_soon_any_context(); // Enable loop when connection state changes #else - global_eth_component->set_connected_(global_eth_component->got_ipv4_address_); + global_eth_component->connected_ = global_eth_component->got_ipv4_address_; + global_eth_component->enable_loop_soon_any_context(); // Enable loop when connection state changes #endif } #endif /* USE_NETWORK_IPV6 */ @@ -521,15 +527,6 @@ void EthernetComponent::start_connect_() { bool EthernetComponent::is_connected() { return this->state_ == EthernetComponentState::CONNECTED; } -void EthernetComponent::set_connected_(bool connected) { - if (this->connected_ != connected) { - this->connected_ = connected; - // Always enable loop when connection state changes - // so the state machine can process the state change - this->enable_loop(); - } -} - void EthernetComponent::dump_connect_params_() { esp_netif_ip_info_t ip; esp_netif_get_ip_info(this->eth_netif_, &ip); @@ -633,7 +630,7 @@ bool EthernetComponent::powerdown() { ESP_LOGE(TAG, "Ethernet PHY not assigned"); return false; } - this->set_connected_(false); + this->connected_ = false; this->started_ = false; // No need to enable_loop() here as this is only called during shutdown/reboot if (this->phy_->pwrctl(this->phy_, false) != ESP_OK) { diff --git a/esphome/components/ethernet/ethernet_component.h b/esphome/components/ethernet/ethernet_component.h index ebcd4ded81..7a205d89f0 100644 --- a/esphome/components/ethernet/ethernet_component.h +++ b/esphome/components/ethernet/ethernet_component.h @@ -104,8 +104,6 @@ class EthernetComponent : public Component { void ksz8081_set_clock_reference_(esp_eth_mac_t *mac); /// @brief Set arbitratry PHY registers from config. void write_phy_register_(esp_eth_mac_t *mac, PHYRegister register_data); - /// @brief Safely set connected state and ensure loop is enabled for state machine processing - void set_connected_(bool connected); std::string use_address_; #ifdef USE_ETHERNET_SPI