mirror of
https://github.com/esphome/esphome.git
synced 2026-09-15 17:18:40 +00:00
[core] Inline set_component_state_ and use it in Application
Move set_component_state_ from component.cpp to the header as an inline method so it can be reused wherever Component state needs to be updated. Replace the manual bit manipulation in Application::enable_pending_loops_ with a call to the helper. Co-Authored-By: J. Nick Koston <nick@koston.org>
This commit is contained in:
co-authored by
J. Nick Koston
parent
49cc389bf0
commit
f772bbd1dd
@@ -525,8 +525,7 @@ void Application::enable_pending_loops_() {
|
||||
// Clear the pending flag and enable the loop
|
||||
component->pending_enable_loop_ = false;
|
||||
ESP_LOGVV(TAG, "%s loop enabled from ISR", LOG_STR_ARG(component->get_component_log_str()));
|
||||
component->component_state_ &= ~COMPONENT_STATE_MASK;
|
||||
component->component_state_ |= COMPONENT_STATE_LOOP;
|
||||
component->set_component_state_(COMPONENT_STATE_LOOP);
|
||||
|
||||
// Move to active section
|
||||
this->activate_looping_component_(i);
|
||||
|
||||
@@ -297,10 +297,6 @@ void Component::mark_failed() {
|
||||
// Also remove from loop since failed components shouldn't loop
|
||||
App.disable_component_loop_(this);
|
||||
}
|
||||
void Component::set_component_state_(uint8_t state) {
|
||||
this->component_state_ &= ~COMPONENT_STATE_MASK;
|
||||
this->component_state_ |= state;
|
||||
}
|
||||
void Component::disable_loop() {
|
||||
if ((this->component_state_ & COMPONENT_STATE_MASK) != COMPONENT_STATE_LOOP_DONE) {
|
||||
ESP_LOGVV(TAG, "%s loop disabled", LOG_STR_ARG(this->get_component_log_str()));
|
||||
|
||||
@@ -294,7 +294,10 @@ class Component {
|
||||
void call_dump_config_();
|
||||
|
||||
/// Helper to set component state (clears state bits and sets new state)
|
||||
void set_component_state_(uint8_t state);
|
||||
inline void set_component_state_(uint8_t state) {
|
||||
this->component_state_ &= ~COMPONENT_STATE_MASK;
|
||||
this->component_state_ |= state;
|
||||
}
|
||||
|
||||
/** Set an interval function with a unique name. Empty name means no cancelling possible.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user