From 8ab37379e8da39dddbebf29fcf6aa56e2f8e552c Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 30 Dec 2025 13:08:05 -1000 Subject: [PATCH 1/2] reduce --- esphome/core/gpio.cpp | 14 ++++++++++++++ esphome/core/gpio.h | 12 ++++++------ 2 files changed, 20 insertions(+), 6 deletions(-) create mode 100644 esphome/core/gpio.cpp diff --git a/esphome/core/gpio.cpp b/esphome/core/gpio.cpp new file mode 100644 index 0000000000..d8353ab64c --- /dev/null +++ b/esphome/core/gpio.cpp @@ -0,0 +1,14 @@ +#include "esphome/core/gpio.h" +#include "esphome/core/log.h" + +namespace esphome { + +void log_pin(const char *tag, const char *prefix, GPIOPin *pin) { + if (pin == nullptr) + return; + char buffer[GPIO_SUMMARY_MAX_LEN]; + pin->dump_summary(buffer, sizeof(buffer)); + esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, "%s%s", prefix, buffer); +} + +} // namespace esphome diff --git a/esphome/core/gpio.h b/esphome/core/gpio.h index 5d25fd4ad1..fe53802abf 100644 --- a/esphome/core/gpio.h +++ b/esphome/core/gpio.h @@ -11,12 +11,12 @@ namespace esphome { /// Maximum buffer size for dump_summary output inline constexpr size_t GPIO_SUMMARY_MAX_LEN = 48; -#define LOG_PIN(prefix, pin) \ - if ((pin) != nullptr) { \ - char esphome_pin_buf_[GPIO_SUMMARY_MAX_LEN]; \ - (pin)->dump_summary(esphome_pin_buf_, sizeof(esphome_pin_buf_)); \ - ESP_LOGCONFIG(TAG, prefix "%s", esphome_pin_buf_); \ - } +class GPIOPin; // Forward declaration + +/// Log a pin summary to the config log +void log_pin(const char *tag, const char *prefix, GPIOPin *pin); + +#define LOG_PIN(prefix, pin) log_pin(TAG, prefix, pin) // put GPIO flags in a namespace to not pollute esphome namespace namespace gpio { From 52eda13ecd59661616b6d9302f40769ab34a9c2b Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 30 Dec 2025 13:09:35 -1000 Subject: [PATCH 2/2] reduce --- esphome/core/gpio.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/esphome/core/gpio.cpp b/esphome/core/gpio.cpp index d8353ab64c..bce233c566 100644 --- a/esphome/core/gpio.cpp +++ b/esphome/core/gpio.cpp @@ -1,14 +1,18 @@ #include "esphome/core/gpio.h" #include "esphome/core/log.h" +#include + namespace esphome { void log_pin(const char *tag, const char *prefix, GPIOPin *pin) { if (pin == nullptr) return; char buffer[GPIO_SUMMARY_MAX_LEN]; - pin->dump_summary(buffer, sizeof(buffer)); - esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, "%s%s", prefix, buffer); + size_t len = pin->dump_summary(buffer, sizeof(buffer)); + // Clamp to actual buffer size (snprintf returns would-be length) + len = std::min(len, sizeof(buffer) - 1); + esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, "%s%.*s", prefix, (int) len, buffer); } } // namespace esphome