[core] Inline status_clear_warning/error fast path (#14571)

This commit is contained in:
J. Nick Koston
2026-03-07 07:27:08 -10:00
committed by GitHub
parent e7b8ec18f1
commit a0cd35c5fc
2 changed files with 15 additions and 8 deletions
+2 -6
View File
@@ -422,15 +422,11 @@ void Component::status_set_error(const LogString *message) {
store_component_error_message(this, LOG_STR_ARG(message), true);
}
}
void Component::status_clear_warning() {
if ((this->component_state_ & STATUS_LED_WARNING) == 0)
return;
void Component::status_clear_warning_slow_path_() {
this->component_state_ &= ~STATUS_LED_WARNING;
ESP_LOGW(TAG, "%s cleared Warning flag", LOG_STR_ARG(this->get_component_log_str()));
}
void Component::status_clear_error() {
if ((this->component_state_ & STATUS_LED_ERROR) == 0)
return;
void Component::status_clear_error_slow_path_() {
this->component_state_ &= ~STATUS_LED_ERROR;
ESP_LOGE(TAG, "%s cleared Error flag", LOG_STR_ARG(this->get_component_log_str()));
}
+13 -2
View File
@@ -251,9 +251,17 @@ class Component {
void status_set_error(const char *message);
void status_set_error(const LogString *message);
void status_clear_warning();
void status_clear_warning() {
if ((this->component_state_ & STATUS_LED_WARNING) == 0)
return;
this->status_clear_warning_slow_path_();
}
void status_clear_error();
void status_clear_error() {
if ((this->component_state_ & STATUS_LED_ERROR) == 0)
return;
this->status_clear_error_slow_path_();
}
/** Set warning status flag and automatically clear it after a timeout.
*
@@ -505,6 +513,9 @@ class Component {
bool cancel_defer(const char *name); // NOLINT
bool cancel_defer(uint32_t id); // NOLINT
void status_clear_warning_slow_path_();
void status_clear_error_slow_path_();
// Ordered for optimal packing on 32-bit systems
const LogString *component_source_{nullptr};
uint16_t warn_if_blocking_over_{WARN_IF_BLOCKING_OVER_MS}; ///< Warn if blocked for this many ms (max 65.5s)