From 266e4ae91fb2414528163109e708af6246b57952 Mon Sep 17 00:00:00 2001 From: Keith Burzinski Date: Mon, 3 Nov 2025 17:30:37 -0600 Subject: [PATCH] [helpers] Add `get_mac_address_into_buffer()` (#11700) --- esphome/core/helpers.cpp | 6 ++++++ esphome/core/helpers.h | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/esphome/core/helpers.cpp b/esphome/core/helpers.cpp index fb8b220b2f..568acb9f1b 100644 --- a/esphome/core/helpers.cpp +++ b/esphome/core/helpers.cpp @@ -643,6 +643,12 @@ std::string get_mac_address_pretty() { return format_mac_address_pretty(mac); } +void get_mac_address_into_buffer(std::span buf) { + uint8_t mac[6]; + get_mac_address_raw(mac); + format_mac_addr_lower_no_sep(mac, buf.data()); +} + #ifndef USE_ESP32 bool has_custom_mac_address() { return false; } #endif diff --git a/esphome/core/helpers.h b/esphome/core/helpers.h index cf21ddc16d..91ddc70afa 100644 --- a/esphome/core/helpers.h +++ b/esphome/core/helpers.h @@ -8,6 +8,7 @@ #include #include #include +#include #include #include #include @@ -1027,6 +1028,10 @@ std::string get_mac_address(); /// Get the device MAC address as a string, in colon-separated uppercase hex notation. std::string get_mac_address_pretty(); +/// Get the device MAC address into the given buffer, in lowercase hex notation. +/// Assumes buffer length is 13 (12 digits for hexadecimal representation followed by null terminator). +void get_mac_address_into_buffer(std::span buf); + #ifdef USE_ESP32 /// Set the MAC address to use from the provided byte array (6 bytes). void set_mac_address(uint8_t *mac);