mirror of
				https://github.com/esphome/esphome.git
				synced 2025-10-31 15:12:06 +00:00 
			
		
		
		
	rename, cleanup
This commit is contained in:
		| @@ -19,8 +19,8 @@ void Anova::setup() { | |||||||
|  |  | ||||||
| void Anova::loop() { | void Anova::loop() { | ||||||
|   // This component uses polling via update() and BLE callbacks |   // This component uses polling via update() and BLE callbacks | ||||||
|   // Empty loop not needed, mark as done to save CPU cycles |   // Empty loop not needed, disable to save CPU cycles | ||||||
|   this->mark_loop_done(); |   this->disable_loop(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void Anova::control(const ClimateCall &call) { | void Anova::control(const ClimateCall &call) { | ||||||
|   | |||||||
| @@ -482,8 +482,8 @@ void BedJetHub::set_clock(uint8_t hour, uint8_t minute) { | |||||||
|  |  | ||||||
| void BedJetHub::loop() { | void BedJetHub::loop() { | ||||||
|   // This component uses polling via update() and BLE callbacks |   // This component uses polling via update() and BLE callbacks | ||||||
|   // Empty loop not needed, mark as done to save CPU cycles |   // Empty loop not needed, disable to save CPU cycles | ||||||
|   this->mark_loop_done(); |   this->disable_loop(); | ||||||
| } | } | ||||||
| void BedJetHub::update() { this->dispatch_status_(); } | void BedJetHub::update() { this->dispatch_status_(); } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -85,8 +85,8 @@ void BedJetClimate::reset_state_() { | |||||||
|  |  | ||||||
| void BedJetClimate::loop() { | void BedJetClimate::loop() { | ||||||
|   // This component is controlled via the parent BedJetHub |   // This component is controlled via the parent BedJetHub | ||||||
|   // Empty loop not needed, mark as done to save CPU cycles |   // Empty loop not needed, disable to save CPU cycles | ||||||
|   this->mark_loop_done(); |   this->disable_loop(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void BedJetClimate::control(const ClimateCall &call) { | void BedJetClimate::control(const ClimateCall &call) { | ||||||
|   | |||||||
| @@ -13,8 +13,8 @@ static const char *const TAG = "ble_rssi_sensor"; | |||||||
|  |  | ||||||
| void BLEClientRSSISensor::loop() { | void BLEClientRSSISensor::loop() { | ||||||
|   // This component uses polling via update() and BLE GAP callbacks |   // This component uses polling via update() and BLE GAP callbacks | ||||||
|   // Empty loop not needed, mark as done to save CPU cycles |   // Empty loop not needed, disable to save CPU cycles | ||||||
|   this->mark_loop_done(); |   this->disable_loop(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void BLEClientRSSISensor::dump_config() { | void BLEClientRSSISensor::dump_config() { | ||||||
|   | |||||||
| @@ -13,8 +13,8 @@ static const char *const TAG = "ble_sensor"; | |||||||
|  |  | ||||||
| void BLESensor::loop() { | void BLESensor::loop() { | ||||||
|   // This component uses polling via update() and BLE callbacks |   // This component uses polling via update() and BLE callbacks | ||||||
|   // Empty loop not needed, mark as done to save CPU cycles |   // Empty loop not needed, disable to save CPU cycles | ||||||
|   this->mark_loop_done(); |   this->disable_loop(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void BLESensor::dump_config() { | void BLESensor::dump_config() { | ||||||
|   | |||||||
| @@ -16,8 +16,8 @@ static const std::string EMPTY = ""; | |||||||
|  |  | ||||||
| void BLETextSensor::loop() { | void BLETextSensor::loop() { | ||||||
|   // This component uses polling via update() and BLE callbacks |   // This component uses polling via update() and BLE callbacks | ||||||
|   // Empty loop not needed, mark as done to save CPU cycles |   // Empty loop not needed, disable to save CPU cycles | ||||||
|   this->mark_loop_done(); |   this->disable_loop(); | ||||||
| } | } | ||||||
|  |  | ||||||
| void BLETextSensor::dump_config() { | void BLETextSensor::dump_config() { | ||||||
|   | |||||||
| @@ -37,7 +37,12 @@ void CaptivePortal::handle_wifisave(AsyncWebServerRequest *request) { | |||||||
|   request->redirect("/?save"); |   request->redirect("/?save"); | ||||||
| } | } | ||||||
|  |  | ||||||
| void CaptivePortal::setup() {} | void CaptivePortal::setup() { | ||||||
|  | #ifndef USE_ARDUINO | ||||||
|  |   // No DNS server needed for non-Arduino frameworks | ||||||
|  |   this->disable_loop(); | ||||||
|  | #endif | ||||||
|  | } | ||||||
| void CaptivePortal::start() { | void CaptivePortal::start() { | ||||||
|   this->base_->init(); |   this->base_->init(); | ||||||
|   if (!this->initialized_) { |   if (!this->initialized_) { | ||||||
| @@ -50,6 +55,8 @@ void CaptivePortal::start() { | |||||||
|   this->dns_server_->setErrorReplyCode(DNSReplyCode::NoError); |   this->dns_server_->setErrorReplyCode(DNSReplyCode::NoError); | ||||||
|   network::IPAddress ip = wifi::global_wifi_component->wifi_soft_ap_ip(); |   network::IPAddress ip = wifi::global_wifi_component->wifi_soft_ap_ip(); | ||||||
|   this->dns_server_->start(53, "*", ip); |   this->dns_server_->start(53, "*", ip); | ||||||
|  |   // Re-enable loop() when DNS server is started | ||||||
|  |   this->enable_loop(); | ||||||
| #endif | #endif | ||||||
|  |  | ||||||
|   this->base_->get_server()->onNotFound([this](AsyncWebServerRequest *req) { |   this->base_->get_server()->onNotFound([this](AsyncWebServerRequest *req) { | ||||||
|   | |||||||
| @@ -23,6 +23,8 @@ class CaptivePortal : public AsyncWebHandler, public Component { | |||||||
|   void loop() override { |   void loop() override { | ||||||
|     if (this->dns_server_ != nullptr) |     if (this->dns_server_ != nullptr) | ||||||
|       this->dns_server_->processNextRequest(); |       this->dns_server_->processNextRequest(); | ||||||
|  |     else | ||||||
|  |       this->disable_loop(); | ||||||
|   } |   } | ||||||
| #endif | #endif | ||||||
|   float get_setup_priority() const override; |   float get_setup_priority() const override; | ||||||
|   | |||||||
| @@ -23,6 +23,12 @@ void BLEClientBase::setup() { | |||||||
| } | } | ||||||
|  |  | ||||||
| void BLEClientBase::loop() { | void BLEClientBase::loop() { | ||||||
|  |   // If address is 0, this connection is not in use | ||||||
|  |   if (this->address_ == 0) { | ||||||
|  |     this->disable_loop(); | ||||||
|  |     return; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   if (!esp32_ble::global_ble->is_active()) { |   if (!esp32_ble::global_ble->is_active()) { | ||||||
|     this->set_state(espbt::ClientState::INIT); |     this->set_state(espbt::ClientState::INIT); | ||||||
|     return; |     return; | ||||||
|   | |||||||
| @@ -62,6 +62,8 @@ class BLEClientBase : public espbt::ESPBTClient, public Component { | |||||||
|                        (uint8_t) (this->address_ >> 32) & 0xff, (uint8_t) (this->address_ >> 24) & 0xff, |                        (uint8_t) (this->address_ >> 32) & 0xff, (uint8_t) (this->address_ >> 24) & 0xff, | ||||||
|                        (uint8_t) (this->address_ >> 16) & 0xff, (uint8_t) (this->address_ >> 8) & 0xff, |                        (uint8_t) (this->address_ >> 16) & 0xff, (uint8_t) (this->address_ >> 8) & 0xff, | ||||||
|                        (uint8_t) (this->address_ >> 0) & 0xff); |                        (uint8_t) (this->address_ >> 0) & 0xff); | ||||||
|  |       // Re-enable loop() when a new address is assigned | ||||||
|  |       this->enable_loop(); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   std::string address_str() const { return this->address_str_; } |   std::string address_str() const { return this->address_str_; } | ||||||
|   | |||||||
| @@ -169,7 +169,7 @@ void ESP32ImprovComponent::loop() { | |||||||
|       this->incoming_data_.clear(); |       this->incoming_data_.clear(); | ||||||
|       this->set_status_indicator_state_(false); |       this->set_status_indicator_state_(false); | ||||||
|       // Provisioning complete, no further loop execution needed |       // Provisioning complete, no further loop execution needed | ||||||
|       this->mark_loop_done(); |       this->disable_loop(); | ||||||
|       break; |       break; | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   | |||||||
| @@ -178,18 +178,21 @@ void OnlineImage::update() { | |||||||
|   if (this->format_ == ImageFormat::BMP) { |   if (this->format_ == ImageFormat::BMP) { | ||||||
|     ESP_LOGD(TAG, "Allocating BMP decoder"); |     ESP_LOGD(TAG, "Allocating BMP decoder"); | ||||||
|     this->decoder_ = make_unique<BmpDecoder>(this); |     this->decoder_ = make_unique<BmpDecoder>(this); | ||||||
|  |     this->enable_loop(); | ||||||
|   } |   } | ||||||
| #endif  // USE_ONLINE_IMAGE_BMP_SUPPORT | #endif  // USE_ONLINE_IMAGE_BMP_SUPPORT | ||||||
| #ifdef USE_ONLINE_IMAGE_JPEG_SUPPORT | #ifdef USE_ONLINE_IMAGE_JPEG_SUPPORT | ||||||
|   if (this->format_ == ImageFormat::JPEG) { |   if (this->format_ == ImageFormat::JPEG) { | ||||||
|     ESP_LOGD(TAG, "Allocating JPEG decoder"); |     ESP_LOGD(TAG, "Allocating JPEG decoder"); | ||||||
|     this->decoder_ = esphome::make_unique<JpegDecoder>(this); |     this->decoder_ = esphome::make_unique<JpegDecoder>(this); | ||||||
|  |     this->enable_loop(); | ||||||
|   } |   } | ||||||
| #endif  // USE_ONLINE_IMAGE_JPEG_SUPPORT | #endif  // USE_ONLINE_IMAGE_JPEG_SUPPORT | ||||||
| #ifdef USE_ONLINE_IMAGE_PNG_SUPPORT | #ifdef USE_ONLINE_IMAGE_PNG_SUPPORT | ||||||
|   if (this->format_ == ImageFormat::PNG) { |   if (this->format_ == ImageFormat::PNG) { | ||||||
|     ESP_LOGD(TAG, "Allocating PNG decoder"); |     ESP_LOGD(TAG, "Allocating PNG decoder"); | ||||||
|     this->decoder_ = make_unique<PngDecoder>(this); |     this->decoder_ = make_unique<PngDecoder>(this); | ||||||
|  |     this->enable_loop(); | ||||||
|   } |   } | ||||||
| #endif  // USE_ONLINE_IMAGE_PNG_SUPPORT | #endif  // USE_ONLINE_IMAGE_PNG_SUPPORT | ||||||
|  |  | ||||||
| @@ -212,6 +215,7 @@ void OnlineImage::update() { | |||||||
| void OnlineImage::loop() { | void OnlineImage::loop() { | ||||||
|   if (!this->decoder_) { |   if (!this->decoder_) { | ||||||
|     // Not decoding at the moment => nothing to do. |     // Not decoding at the moment => nothing to do. | ||||||
|  |     this->disable_loop(); | ||||||
|     return; |     return; | ||||||
|   } |   } | ||||||
|   if (!this->downloader_ || this->decoder_->is_finished()) { |   if (!this->downloader_ || this->decoder_->is_finished()) { | ||||||
|   | |||||||
| @@ -13,7 +13,7 @@ class IntervalSyncer : public Component { | |||||||
|     if (this->write_interval_ != 0) { |     if (this->write_interval_ != 0) { | ||||||
|       set_interval(this->write_interval_, []() { global_preferences->sync(); }); |       set_interval(this->write_interval_, []() { global_preferences->sync(); }); | ||||||
|       // When using interval-based syncing, we don't need the loop |       // When using interval-based syncing, we don't need the loop | ||||||
|       this->mark_loop_done(); |       this->disable_loop(); | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
|   void loop() override { |   void loop() override { | ||||||
|   | |||||||
| @@ -142,8 +142,10 @@ void Rtttl::stop() { | |||||||
| } | } | ||||||
|  |  | ||||||
| void Rtttl::loop() { | void Rtttl::loop() { | ||||||
|   if (this->note_duration_ == 0 || this->state_ == State::STATE_STOPPED) |   if (this->note_duration_ == 0 || this->state_ == State::STATE_STOPPED) { | ||||||
|  |     this->disable_loop(); | ||||||
|     return; |     return; | ||||||
|  |   } | ||||||
|  |  | ||||||
| #ifdef USE_SPEAKER | #ifdef USE_SPEAKER | ||||||
|   if (this->speaker_ != nullptr) { |   if (this->speaker_ != nullptr) { | ||||||
| @@ -391,6 +393,11 @@ void Rtttl::set_state_(State state) { | |||||||
|   this->state_ = state; |   this->state_ = state; | ||||||
|   ESP_LOGV(TAG, "State changed from %s to %s", LOG_STR_ARG(state_to_string(old_state)), |   ESP_LOGV(TAG, "State changed from %s to %s", LOG_STR_ARG(state_to_string(old_state)), | ||||||
|            LOG_STR_ARG(state_to_string(state))); |            LOG_STR_ARG(state_to_string(state))); | ||||||
|  |  | ||||||
|  |   // Clear loop_done when transitioning from STOPPED to any other state | ||||||
|  |   if (old_state == State::STATE_STOPPED && state != State::STATE_STOPPED) { | ||||||
|  |     this->enable_loop(); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| }  // namespace rtttl | }  // namespace rtttl | ||||||
|   | |||||||
| @@ -42,8 +42,8 @@ void SafeModeComponent::loop() { | |||||||
|     ESP_LOGI(TAG, "Boot seems successful; resetting boot loop counter"); |     ESP_LOGI(TAG, "Boot seems successful; resetting boot loop counter"); | ||||||
|     this->clean_rtc(); |     this->clean_rtc(); | ||||||
|     this->boot_successful_ = true; |     this->boot_successful_ = true; | ||||||
|     // Mark loop as done since we no longer need to check |     // Disable loop since we no longer need to check | ||||||
|     this->mark_loop_done(); |     this->disable_loop(); | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -71,7 +71,7 @@ void SNTPComponent::loop() { | |||||||
| #ifdef USE_ESP_IDF | #ifdef USE_ESP_IDF | ||||||
|   // On ESP-IDF, time sync is permanent and update() doesn't force resync |   // On ESP-IDF, time sync is permanent and update() doesn't force resync | ||||||
|   // Time is now synchronized, no need to check anymore |   // Time is now synchronized, no need to check anymore | ||||||
|   this->mark_loop_done(); |   this->disable_loop(); | ||||||
| #endif | #endif | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -24,8 +24,10 @@ void TLC5971::dump_config() { | |||||||
| } | } | ||||||
|  |  | ||||||
| void TLC5971::loop() { | void TLC5971::loop() { | ||||||
|   if (!this->update_) |   if (!this->update_) { | ||||||
|  |     this->disable_loop(); | ||||||
|     return; |     return; | ||||||
|  |   } | ||||||
|  |  | ||||||
|   uint32_t command; |   uint32_t command; | ||||||
|  |  | ||||||
| @@ -93,6 +95,7 @@ void TLC5971::set_channel_value(uint16_t channel, uint16_t value) { | |||||||
|     return; |     return; | ||||||
|   if (this->pwm_amounts_[channel] != value) { |   if (this->pwm_amounts_[channel] != value) { | ||||||
|     this->update_ = true; |     this->update_ = true; | ||||||
|  |     this->enable_loop(); | ||||||
|   } |   } | ||||||
|   this->pwm_amounts_[channel] = value; |   this->pwm_amounts_[channel] = value; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -145,11 +145,18 @@ void Component::mark_failed() { | |||||||
|   this->component_state_ |= COMPONENT_STATE_FAILED; |   this->component_state_ |= COMPONENT_STATE_FAILED; | ||||||
|   this->status_set_error(); |   this->status_set_error(); | ||||||
| } | } | ||||||
| void Component::mark_loop_done() { | void Component::disable_loop() { | ||||||
|   ESP_LOGD(TAG, "Component %s loop marked as done.", this->get_component_source()); |   ESP_LOGD(TAG, "Component %s loop disabled.", this->get_component_source()); | ||||||
|   this->component_state_ &= ~COMPONENT_STATE_MASK; |   this->component_state_ &= ~COMPONENT_STATE_MASK; | ||||||
|   this->component_state_ |= COMPONENT_STATE_LOOP_DONE; |   this->component_state_ |= COMPONENT_STATE_LOOP_DONE; | ||||||
| } | } | ||||||
|  | void Component::enable_loop() { | ||||||
|  |   if ((this->component_state_ & COMPONENT_STATE_MASK) == COMPONENT_STATE_LOOP_DONE) { | ||||||
|  |     ESP_LOGD(TAG, "Component %s loop enabled.", this->get_component_source()); | ||||||
|  |     this->component_state_ &= ~COMPONENT_STATE_MASK; | ||||||
|  |     this->component_state_ |= COMPONENT_STATE_LOOP; | ||||||
|  |   } | ||||||
|  | } | ||||||
| void Component::reset_to_construction_state() { | void Component::reset_to_construction_state() { | ||||||
|   if ((this->component_state_ & COMPONENT_STATE_MASK) == COMPONENT_STATE_FAILED) { |   if ((this->component_state_ & COMPONENT_STATE_MASK) == COMPONENT_STATE_FAILED) { | ||||||
|     ESP_LOGI(TAG, "Component %s is being reset to construction state.", this->get_component_source()); |     ESP_LOGI(TAG, "Component %s is being reset to construction state.", this->get_component_source()); | ||||||
|   | |||||||
| @@ -152,12 +152,19 @@ class Component { | |||||||
|     this->mark_failed(); |     this->mark_failed(); | ||||||
|   } |   } | ||||||
|  |  | ||||||
|   /** Mark this component's loop as done. The loop will no longer be called. |   /** Disable this component's loop. The loop() method will no longer be called. | ||||||
|    * |    * | ||||||
|    * This is useful for components that only need to run for a certain period of time |    * This is useful for components that only need to run for a certain period of time | ||||||
|    * and then no longer need their loop() method called, saving CPU cycles. |    * or when inactive, saving CPU cycles. | ||||||
|    */ |    */ | ||||||
|   void mark_loop_done(); |   void disable_loop(); | ||||||
|  |  | ||||||
|  |   /** Enable this component's loop. The loop() method will be called normally. | ||||||
|  |    * | ||||||
|  |    * This is useful for components that transition between active and inactive states | ||||||
|  |    * and need to re-enable their loop() method when becoming active again. | ||||||
|  |    */ | ||||||
|  |   void enable_loop(); | ||||||
|  |  | ||||||
|   bool is_failed() const; |   bool is_failed() const; | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user