mirror of
https://github.com/esphome/esphome.git
synced 2026-02-28 09:54:19 -07:00
Extend the ESP32 lwip_select() replacement (direct rcvevent reads + FreeRTOS task notifications) to all LibreTiny platforms (bk72xx, rtl87xx, ln882h). All LibreTiny platforms have LwIP >= 2.1.3 with lwip_socket_dbg_get_socket() and FreeRTOS task notifications. The thread safety argument is actually stronger on LibreTiny since all platforms are single-core ARM Cortex-M, eliminating cross-core memory ordering concerns entirely. Introduces USE_LWIP_FAST_SELECT feature define (set from Python codegen for ESP32 and LibreTiny) replacing per-platform USE_ESP32 guards. The only platform-specific difference is FreeRTOS header paths (freertos/FreeRTOS.h on ESP-IDF vs FreeRTOS.h on LibreTiny). Expected impact on LibreTiny (same as ESP32): - ~17x faster socket polling (direct rcvevent vs lwip_select) - ~3.5 KB flash savings (dead code elimination of lwip_select) - ~56 bytes static RAM savings (fd_set members excluded) - ~200-300 bytes heap savings (UDP wake socket eliminated)