From c716983d5cbad2ea5e2ecdcb870f5414ec420243 Mon Sep 17 00:00:00 2001 From: "J. Nick Koston" Date: Tue, 30 Dec 2025 13:41:29 -1000 Subject: [PATCH] tweak --- esphome/core/gpio.cpp | 23 +++-------------------- esphome/core/gpio.h | 21 ++++++++++++++++----- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/esphome/core/gpio.cpp b/esphome/core/gpio.cpp index 735ae2fcba..c6927717a6 100644 --- a/esphome/core/gpio.cpp +++ b/esphome/core/gpio.cpp @@ -1,41 +1,24 @@ #include "esphome/core/gpio.h" #include "esphome/core/log.h" -#include -#include - namespace esphome { -static void log_pin_with_prefix(const char *tag, const char *prefix, GPIOPin *pin) { - char buffer[GPIO_SUMMARY_MAX_LEN]; - 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); -} - #ifdef USE_ESP8266 - -static constexpr size_t LOG_PIN_PREFIX_MAX_LEN = 32; - void log_pin(const char *tag, const __FlashStringHelper *prefix, GPIOPin *pin) { if (pin == nullptr) return; - // Copy prefix from flash to stack + static constexpr size_t LOG_PIN_PREFIX_MAX_LEN = 32; char prefix_buf[LOG_PIN_PREFIX_MAX_LEN]; strncpy_P(prefix_buf, reinterpret_cast(prefix), sizeof(prefix_buf) - 1); prefix_buf[sizeof(prefix_buf) - 1] = '\0'; - log_pin_with_prefix(tag, prefix_buf, pin); + log_pin_with_prefix_(tag, prefix_buf, pin); } - #else - void log_pin(const char *tag, const char *prefix, GPIOPin *pin) { if (pin == nullptr) return; - log_pin_with_prefix(tag, prefix, pin); + log_pin_with_prefix_(tag, prefix, pin); } - #endif } // namespace esphome diff --git a/esphome/core/gpio.h b/esphome/core/gpio.h index bcbd4a3762..8870bb3324 100644 --- a/esphome/core/gpio.h +++ b/esphome/core/gpio.h @@ -5,20 +5,16 @@ #include #include "esphome/core/helpers.h" +#include "esphome/core/log.h" namespace esphome { /// Maximum buffer size for dump_summary output inline constexpr size_t GPIO_SUMMARY_MAX_LEN = 48; -class GPIOPin; // Forward declaration - -/// Log a pin summary to the config log #ifdef USE_ESP8266 -void log_pin(const char *tag, const __FlashStringHelper *prefix, GPIOPin *pin); #define LOG_PIN(prefix, pin) log_pin(TAG, F(prefix), pin) #else -void log_pin(const char *tag, const char *prefix, GPIOPin *pin); #define LOG_PIN(prefix, pin) log_pin(TAG, prefix, pin) #endif @@ -148,4 +144,19 @@ inline size_t GPIOPin::dump_summary(char *buffer, size_t len) const { // Remove before 2026.7.0 inline std::string GPIOPin::dump_summary() const { return {}; } +// Inline helper for log_pin - allows compiler to inline into log_pin in gpio.cpp +inline void log_pin_with_prefix_(const char *tag, const char *prefix, GPIOPin *pin) { + char buffer[GPIO_SUMMARY_MAX_LEN]; + size_t len = pin->dump_summary(buffer, sizeof(buffer)); + len = std::min(len, sizeof(buffer) - 1); + esp_log_printf_(ESPHOME_LOG_LEVEL_CONFIG, tag, __LINE__, "%s%.*s", prefix, (int) len, buffer); +} + +// log_pin function declarations - implementation in gpio.cpp +#ifdef USE_ESP8266 +void log_pin(const char *tag, const __FlashStringHelper *prefix, GPIOPin *pin); +#else +void log_pin(const char *tag, const char *prefix, GPIOPin *pin); +#endif + } // namespace esphome