[core] Use nullptr defaults in status_set_error/warning to reduce flash usage (#9931)

This commit is contained in:
J. Nick Koston 2025-07-27 17:20:30 -10:00 committed by GitHub
parent a3690422bf
commit 6ed9214465
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 9 additions and 7 deletions

View File

@ -16,6 +16,7 @@
namespace esphome { namespace esphome {
static const char *const TAG = "component"; static const char *const TAG = "component";
static const char *const UNSPECIFIED_MESSAGE = "unspecified";
// Global vectors for component data that doesn't belong in every instance. // Global vectors for component data that doesn't belong in every instance.
// Using vector instead of unordered_map for both because: // Using vector instead of unordered_map for both because:
@ -132,7 +133,7 @@ void Component::call_dump_config() {
this->dump_config(); this->dump_config();
if (this->is_failed()) { if (this->is_failed()) {
// Look up error message from global vector // Look up error message from global vector
const char *error_msg = "unspecified"; const char *error_msg = nullptr;
if (component_error_messages) { if (component_error_messages) {
for (const auto &pair : *component_error_messages) { for (const auto &pair : *component_error_messages) {
if (pair.first == this) { if (pair.first == this) {
@ -141,7 +142,8 @@ void Component::call_dump_config() {
} }
} }
} }
ESP_LOGE(TAG, " %s is marked FAILED: %s", this->get_component_source(), error_msg); ESP_LOGE(TAG, " %s is marked FAILED: %s", this->get_component_source(),
error_msg ? error_msg : UNSPECIFIED_MESSAGE);
} }
} }
@ -284,15 +286,15 @@ void Component::status_set_warning(const char *message) {
return; return;
this->component_state_ |= STATUS_LED_WARNING; this->component_state_ |= STATUS_LED_WARNING;
App.app_state_ |= STATUS_LED_WARNING; App.app_state_ |= STATUS_LED_WARNING;
ESP_LOGW(TAG, "%s set Warning flag: %s", this->get_component_source(), message); ESP_LOGW(TAG, "%s set Warning flag: %s", this->get_component_source(), message ? message : UNSPECIFIED_MESSAGE);
} }
void Component::status_set_error(const char *message) { void Component::status_set_error(const char *message) {
if ((this->component_state_ & STATUS_LED_ERROR) != 0) if ((this->component_state_ & STATUS_LED_ERROR) != 0)
return; return;
this->component_state_ |= STATUS_LED_ERROR; this->component_state_ |= STATUS_LED_ERROR;
App.app_state_ |= STATUS_LED_ERROR; App.app_state_ |= STATUS_LED_ERROR;
ESP_LOGE(TAG, "%s set Error flag: %s", this->get_component_source(), message); ESP_LOGE(TAG, "%s set Error flag: %s", this->get_component_source(), message ? message : UNSPECIFIED_MESSAGE);
if (strcmp(message, "unspecified") != 0) { if (message != nullptr) {
// Lazy allocate the error messages vector if needed // Lazy allocate the error messages vector if needed
if (!component_error_messages) { if (!component_error_messages) {
component_error_messages = std::make_unique<std::vector<std::pair<const Component *, const char *>>>(); component_error_messages = std::make_unique<std::vector<std::pair<const Component *, const char *>>>();

View File

@ -202,9 +202,9 @@ class Component {
bool status_has_error() const; bool status_has_error() const;
void status_set_warning(const char *message = "unspecified"); void status_set_warning(const char *message = nullptr);
void status_set_error(const char *message = "unspecified"); void status_set_error(const char *message = nullptr);
void status_clear_warning(); void status_clear_warning();