Commit Graph
24746 Commits
Author SHA1 Message Date
J. Nick Koston 162835d6da Merge remote-tracking branch 'origin/integration' into integration 2026-03-14 15:45:18 -10:00
J. Nick Koston b285f640ac Merge remote-tracking branch 'origin/ethernet-rp2040-w5500-impl' into integration 2026-03-14 15:44:18 -10:00
J. Nick Koston e20b8a9fa1 adjust 2026-03-14 15:42:58 -10:00
J. Nick Koston 3e4cb84585 adjust 2026-03-14 15:41:09 -10:00
J. Nick Koston 90a8116cc1 Merge branch 'integration' of https://github.com/esphome/esphome into integration 2026-03-14 15:25:38 -10:00
J. Nick Koston fdfbcd03af Merge remote-tracking branch 'origin/ethernet-rp2040-w5500-impl' into integration 2026-03-14 15:18:59 -10:00
J. Nick Koston c9cba2b070 [ethernet] Fix clang-tidy errors in ESP32 ethernet
- Add CONFIG_ETH_SPI_ETHERNET_W5500, CONFIG_ETH_SPI_ETHERNET_DM9051,
  CONFIG_ETH_USE_ESP32_EMAC to defines.h for clang-tidy visibility
- Fix %lu format to PRIu32 for polling_interval_
2026-03-14 15:18:02 -10:00
J. Nick Koston 0acd4ef50b Merge branch 'ethernet-rp2040-w5500' into integration 2026-03-14 14:43:24 -10:00
J. Nick Koston 4c0ab1e38a Merge branch 'ethernet-rp2040-w5500' into ethernet-rp2040-w5500-impl 2026-03-14 14:41:46 -10:00
J. Nick Koston 31a787eae1 [ethernet] Restore SPI polling version comment and add return type
Add back the useful comment about which ESP-IDF versions
support SPI Ethernet without IRQ. Add return type annotation.
2026-03-14 14:41:33 -10:00
J. Nick Koston 8ab3e8fa89 [ethernet] Add RP2040 W5500 Ethernet support
Add W5500 SPI Ethernet support for RP2040 boards using arduino-pico's
Wiznet5500lwIP class. Tested on WIZnet W5500-EVB-Pico hardware.

- Add ethernet_component_rp2040.cpp with W5500 implementation
- Add RP2040 members and setters to ethernet_component.h
- Enable RP2040 platform in SPI_SCHEMA and FILTER_SOURCE_FILES
- Add RP2040 validation, code generation, and lwIP_w5500 library
- Add W5500 RP2040 test YAML
2026-03-14 14:38:48 -10:00
J. Nick Koston 0cbd2a2009 [ethernet] Restructure for multi-platform support
Restructure the ethernet component from ESP32-only to multi-platform,
following the same pattern as the wifi component (FILTER_SOURCE_FILES
with platform-specific .cpp files).

- Split ethernet_component.cpp into common code + ethernet_component_esp32.cpp
- Remove DEPENDENCIES = ["esp32"], add platform validators per type
- Add FILTER_SOURCE_FILES to select platform-specific .cpp
- Move ESP32 imports inside platform-conditional functions
- Update ethernet_info guards from USE_ESP32 to USE_ETHERNET
- Add USE_ETHERNET_SPI/OPENETH/SPI_POLLING_SUPPORT to defines.h
- Guard ethernet_helpers.c with USE_ESP32

No behavioral changes for ESP32 — this is a pure restructuring to
enable adding non-ESP32 platform support.
2026-03-14 14:37:34 -10:00
J. Nick Koston d7f4f2b4c5 [ethernet] Restructure for multi-platform support
Restructure the ethernet component from ESP32-only to multi-platform,
following the same pattern as the wifi component (FILTER_SOURCE_FILES
with platform-specific .cpp files).

- Split ethernet_component.cpp into common code + ethernet_component_esp32.cpp
- Remove DEPENDENCIES = ["esp32"], add platform validators per type
- Add FILTER_SOURCE_FILES to select platform-specific .cpp
- Move ESP32 imports inside platform-conditional functions
- Update ethernet_info guards from USE_ESP32 to USE_ETHERNET
- Add USE_ETHERNET_SPI/OPENETH/SPI_POLLING_SUPPORT to defines.h
- Guard ethernet_helpers.c with USE_ESP32

No behavioral changes for ESP32 — this is a pure restructuring to
enable adding non-ESP32 platform support.
2026-03-14 14:37:34 -10:00
J. Nick Koston ea1b1913d9 [ethernet] Restructure for multi-platform support
Restructure the ethernet component from ESP32-only to multi-platform,
following the same pattern as the wifi component (FILTER_SOURCE_FILES
with platform-specific .cpp files).

- Split ethernet_component.cpp into common code + ethernet_component_esp32.cpp
- Remove DEPENDENCIES = ["esp32"], add platform validators per type
- Add FILTER_SOURCE_FILES to select platform-specific .cpp
- Move ESP32 imports inside platform-conditional functions
- Update ethernet_info guards from USE_ESP32 to USE_ETHERNET
- Add USE_ETHERNET_SPI/OPENETH/SPI_POLLING_SUPPORT to defines.h
- Guard ethernet_helpers.c with USE_ESP32

No behavioral changes for ESP32 — this is a pure restructuring to
enable adding non-ESP32 platform support.
2026-03-14 14:37:18 -10:00
J. Nick Koston d37f8876d7 [bthome_mithermometer][xiaomi_ble] Migrate CCM to PSA AEAD API for ESP-IDF 6.0 (#14816) 2026-03-14 13:39:07 -10:00
J. Nick Koston d7c42bc9ec [debug] Fix ESP-IDF 6.0 compatibility for wakeup cause API (#14812) 2026-03-14 13:38:51 -10:00
J. Nick Koston efc508a82b [dlms_meter] Migrate GCM to PSA AEAD API for ESP-IDF 6.0 (#14817) 2026-03-14 13:18:40 -10:00
J. Nick Koston 0edc0fd9c8 [esp32_ble_tracker] Migrate to PSA Crypto API for ESP-IDF 6.0 (#14811) 2026-03-14 13:17:56 -10:00
J. Nick Koston cc4c13930f [hmac_sha256] Migrate to PSA Crypto MAC API for ESP-IDF 6.0 (#14814) 2026-03-14 13:17:43 -10:00
J. Nick Koston 234ca7c951 [debug] Fix shared buffer between reset reason and wakeup cause (#14813) 2026-03-14 13:17:32 -10:00
J. Nick Koston 610068e538 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-14 12:33:57 -10:00
J. Nick Koston 447c4669b1 [esp32] Disable SHA-512 in mbedTLS on IDF 6.0+ and add idf_version() helper (#14810) 2026-03-14 11:26:20 -10:00
J. Nick Koston 27942f1973 [helpers] Replace deprecated std::is_trivial in FixedRingBuffer (#14808) 2026-03-14 11:05:39 -10:00
J. Nick Koston 158a119a5a [sha256] Migrate to PSA Crypto API for ESP-IDF 6.0 (#14809) 2026-03-14 10:43:04 -10:00
Jonathan SwobodaandClaude Opus 4.6 b126f3af3b [ledc] Fix ESP-IDF 6.0 compatibility for peripheral reset (#14790)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:02:13 -04:00
Jonathan SwobodaandClaude Opus 4.6 d4e1e32a30 [mipi_dsi] Fix ESP-IDF 6.0 compatibility for use_dma2d flag (#14792)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:02:06 -04:00
Jonathan SwobodaandClaude Opus 4.6 271b423b22 [psram] Fix ESP-IDF 6.0 compatibility for PSRAM sdkconfig options (#14794)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:01:58 -04:00
Jonathan SwobodaandClaude Opus 4.6 417858f098 [psram] Add ESP32-C61 PSRAM support (#14795)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:01:49 -04:00
Jonathan SwobodaandClaude Opus 4.6 c52042e023 [tinyusb][usb_cdc_acm] Bump esp_tinyusb to 2.1.1 (#14796)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 15:01:29 -04:00
Jonathan SwobodaandClaude Opus 4.6 f12531e7e0 [esp32_camera] Bump esp32-camera to 2.1.5 (#14806)
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-14 08:32:17 -10:00
ca279110c9 [output] Inline trivial FloatOutput accessors (#14786)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-14 08:31:50 -10:00
J. Nick Koston f2968e0449 [api] Reduce API code size with buffer and nodelay optimizations (#14797) 2026-03-14 08:13:50 -10:00
J. Nick KostonandCopilot Autofix powered by AI 0043be6165 [core] Inline trivial EntityBase accessors (#14782)
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-03-14 08:13:01 -10:00
J. Nick Koston 0716c9f722 [core] Inline LwIPLock as no-op on platforms without lwIP core locking (#14787) 2026-03-14 08:12:04 -10:00
leccelecce fcf5637aa5 [online_image] Log download duration in milliseconds instead of seconds (#14803) 2026-03-14 09:15:54 -04:00
J. Nick Koston 6239046c70 Merge remote-tracking branch 'origin/inline-mutex-single-threaded' into integration 2026-03-13 22:26:39 -10:00
J. Nick Koston 12d9841433 [core] Inline Mutex on FreeRTOS platforms (ESP32, LibreTiny)
Move FreeRTOS Mutex methods inline into helpers.h, eliminating
duplicate out-of-line definitions in esp32/helpers.cpp and
libretiny/helpers.cpp.

Hot path impact (disassembled from ELF):

| Platform           | Before   | After    | Saved   |
|--------------------|----------|----------|---------|
| ESP32 (Xtensa)     | 1304 B   | 1270 B   | -34 B   |
| BK72xx (ARM M4)    | 1400 B   | 1396 B   | -4 B    |
| RTL87xx (ARM M33)  | 1248 B   | 1246 B   | -2 B    |
| ESP32-C3 (RISC-V)  | 1498 B   | 1494 B   | -4 B    |

GCC generates ISRA clones that hoist the handle_ load into callers
and use tail calls to xQueueSemaphoreTake/xQueueGenericSend.
2026-03-13 22:23:30 -10:00
J. Nick Koston 301c23a588 Merge remote-tracking branch 'upstream/dev' into inline-mutex-single-threaded 2026-03-13 22:17:37 -10:00
J. Nick Koston 724a4e9769 Merge branch 'inline-finish-guard' into integration 2026-03-13 21:05:54 -10:00
J. Nick KostonandClaude Opus 4.6 39df2ab47f [core] Inline WarnIfComponentBlockingGuard::finish() into header
The fast path (millis + subtract + compare) is tiny and called once
per component per loop iteration. Moving it inline eliminates a
call8/retw pair per component, reducing main loop overhead.

The cold warning path (warn_if_blocking) and runtime stats recording
remain out-of-line in component.cpp.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 21:03:06 -10:00
J. Nick Koston 9980279875 Merge branch 'inline-finish-guard' into integration 2026-03-13 20:51:57 -10:00
J. Nick KostonandClaude Opus 4.6 ea1cfa9c1e [core] Inline WarnIfComponentBlockingGuard::finish() into header
The fast path (millis + subtract + compare) is tiny and called once
per component per loop iteration. Moving it inline eliminates a
call8/retw pair per component, reducing main loop overhead.

The cold warning path (warn_if_blocking) and runtime stats recording
remain out-of-line in component.cpp.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-13 20:50:15 -10:00
J. Nick Koston 032e9a8a90 Merge branch 'api-reduce-code-size' into integration 2026-03-13 19:42:48 -10:00
J. Nick Koston 24f380a67a [api] Reduce API code size with buffer and nodelay optimizations
Add APIBuffer::reserve_and_resize() to eliminate duplicate grow_()
capacity checks when reserve() is immediately followed by resize().
This saves one grow_() check per call site (~12 bytes each).

Simplify set_nodelay_for_message() Nagle batching state machine by
replacing the NODELAY_ON (-1) sentinel with a simple counter starting
at 0. Reduces branches from 5 to 3 with identical behavior verified
by exhaustive testing of all 2^N message sequences up to length 12.

Saves 32 bytes flash on ESP8266.
2026-03-13 19:41:03 -10:00
J. Nick Koston 676e668811 revert 2026-03-13 18:25:05 -10:00
J. Nick Koston 52680e99b8 Merge remote-tracking branch 'upstream/esp32-log-v2' into integration 2026-03-13 17:22:39 -10:00
J. Nick Koston d3055ea6ea [esp32] Drop :000 line number and shorten fallback tag 2026-03-13 17:06:45 -10:00
J. Nick Koston 99e0dcf563 [esp32] Use DRAM_ATTR for format strings in IRAM log override
ESP-IDF places log_format_text.c in IRAM/DRAM via linker fragment
(noflash) when CONFIG_LOG_IN_IRAM=y. Our override is in a different
compilation unit so string literals would default to flash. In
constrained environments where flash cache is disabled, reading
flash-resident format strings would fault.

Move all format string constants to DRAM_ATTR to match ESP-IDF's
own behavior.
2026-03-13 17:03:14 -10:00
J. Nick Koston 3a491722b2 [esp32] Use ESP-IDF Log V2 to reduce flash usage
Switch from ESP-IDF Log V1 to V2, which centralizes log formatting
inside esp_log() instead of expanding esp_log_timestamp(), color codes,
and LOG_FORMAT() at every ESP_LOGx macro call site.

This saves ~9KB of flash by eliminating ~500 per-site macro expansions
in ESP-IDF library code (gpio, ethernet, mdns, uart, wifi, etc.).

Override esp_log_format() to skip ESP-IDF's own formatting after the
ESPHome logger hook is installed, since ESPHome does its own formatting.
For early boot and constrained environments (ISR, cache disabled),
format messages in ESPHome style with colors using a stack buffer.
2026-03-13 15:38:43 -10:00
J. Nick Koston 415084d032 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-13 13:42:55 -10:00