mirror of
https://github.com/esphome/esphome.git
synced 2026-09-15 09:08:41 +00:00
89c43b49c2e3852271edae9fc47726cc43e94028
Use the ESP-IDF UART driver's uart_set_select_notif_callback() to wake the main loop directly from the UART ISR via vTaskNotifyGiveFromISR(), eliminating the FreeRTOS trampoline task and event queue that were previously needed when wake_loop_threadsafe() used a UDP loopback socket. With fast lwip select, the main loop sleeps on ulTaskNotifyTake(), so the ISR-safe vTaskNotifyGiveFromISR() can wake it directly. Saves ~2.6KB RAM per UART instance with wake-on-RX enabled: - 2,240 bytes FreeRTOS task stack - ~340 bytes event queue (20 entries + control block) - 8 bytes QueueHandle_t + TaskHandle_t fields Also adds Application::wake_loop_isrsafe() as the ISR-safe counterpart to wake_loop_threadsafe(), backed by esphome_lwip_wake_main_loop_from_isr().
Description
ESPHome is a system to control your ESP8266/ESP32 by simple yet powerful configuration files and control them remotely through Home Automation systems.
Readme
Multiple Licenses
594 MiB
Languages
C++
55.8%
Python
43.6%
C
0.3%
JavaScript
0.2%
