[core] Remove deprecated const char* mark_failed/status_set_error (#16680)

This commit is contained in:
Jonathan Swoboda
2026-05-26 18:46:45 -04:00
committed by GitHub
parent 4d908798bc
commit b71d445e79
2 changed files with 7 additions and 43 deletions

View File

@@ -32,10 +32,7 @@ static const char *const TAG = "component";
namespace {
struct ComponentErrorMessage {
const Component *component;
const char *message;
// Track if message is flash pointer (needs LOG_STR_ARG) or RAM pointer
// Remove before 2026.6.0 when deprecated const char* API is removed
bool is_flash_ptr;
const LogString *message;
};
#ifdef USE_SETUP_PRIORITY_OVERRIDE
@@ -56,9 +53,8 @@ std::vector<ComponentPriorityOverride> *setup_priority_overrides = nullptr;
// NOLINTNEXTLINE(cppcoreguidelines-avoid-non-const-global-variables)
std::vector<ComponentErrorMessage> *component_error_messages = nullptr;
// Helper to store error messages - reduces duplication between deprecated and new API
// Remove before 2026.6.0 when deprecated const char* API is removed
void store_component_error_message(const Component *component, const char *message, bool is_flash_ptr) {
// Helper to store error messages
void store_component_error_message(const Component *component, const LogString *message) {
// Lazy allocate the error messages vector if needed
if (!component_error_messages) {
component_error_messages = new std::vector<ComponentErrorMessage>();
@@ -67,12 +63,11 @@ void store_component_error_message(const Component *component, const char *messa
for (auto &entry : *component_error_messages) {
if (entry.component == component) {
entry.message = message;
entry.is_flash_ptr = is_flash_ptr;
return;
}
}
// Add new error message
component_error_messages->emplace_back(ComponentErrorMessage{component, message, is_flash_ptr});
component_error_messages->emplace_back(ComponentErrorMessage{component, message});
}
} // namespace
@@ -209,21 +204,17 @@ void Component::call_dump_config_() {
this->dump_config();
if (this->is_failed()) {
// Look up error message from global vector
const char *error_msg = nullptr;
bool is_flash_ptr = false;
const LogString *error_msg = nullptr;
if (component_error_messages) {
for (const auto &entry : *component_error_messages) {
if (entry.component == this) {
error_msg = entry.message;
is_flash_ptr = entry.is_flash_ptr;
break;
}
}
}
// Log with appropriate format based on pointer type
ESP_LOGE(TAG, " %s is marked FAILED: %s", LOG_STR_ARG(this->get_component_log_str()),
error_msg ? (is_flash_ptr ? LOG_STR_ARG((const LogString *) error_msg) : error_msg)
: LOG_STR_LITERAL("unspecified"));
error_msg ? LOG_STR_ARG(error_msg) : LOG_STR_LITERAL("unspecified"));
}
}
@@ -390,23 +381,13 @@ void Component::status_set_warning(const LogString *message) {
message ? LOG_STR_ARG(message) : LOG_STR_LITERAL("unspecified"));
}
void Component::status_set_error() { this->status_set_error((const LogString *) nullptr); }
void Component::status_set_error(const char *message) {
if (!this->set_status_flag_(STATUS_LED_ERROR))
return;
ESP_LOGE(TAG, "%s set Error flag: %s", LOG_STR_ARG(this->get_component_log_str()),
message ? message : LOG_STR_LITERAL("unspecified"));
if (message != nullptr) {
store_component_error_message(this, message, false);
}
}
void Component::status_set_error(const LogString *message) {
if (!this->set_status_flag_(STATUS_LED_ERROR))
return;
ESP_LOGE(TAG, "%s set Error flag: %s", LOG_STR_ARG(this->get_component_log_str()),
message ? LOG_STR_ARG(message) : LOG_STR_LITERAL("unspecified"));
if (message != nullptr) {
// Store the LogString pointer directly (safe because LogString is always in flash/static memory)
store_component_error_message(this, LOG_STR_ARG(message), true);
store_component_error_message(this, message);
}
}
void Component::status_clear_warning_slow_path_() {

View File

@@ -220,18 +220,6 @@ class Component {
*/
void mark_failed();
// Remove before 2026.6.0
ESPDEPRECATED("Use mark_failed(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary "
"strings. Will stop working in 2026.6.0",
"2025.12.0")
void mark_failed(const char *message) {
#pragma GCC diagnostic push
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
this->status_set_error(message);
#pragma GCC diagnostic pop
this->mark_failed();
}
void mark_failed(const LogString *message) {
this->status_set_error(message);
this->mark_failed();
@@ -296,11 +284,6 @@ class Component {
void status_set_warning(const LogString *message);
void status_set_error(); // Set error flag without message
// Remove before 2026.6.0
ESPDEPRECATED("Use status_set_error(LOG_STR(\"static string literal\")) instead. Do NOT use .c_str() from temporary "
"strings. Will stop working in 2026.6.0",
"2025.12.0")
void status_set_error(const char *message);
void status_set_error(const LogString *message);
void status_clear_warning() {