10#if defined(USE_ESP32) || defined(USE_LIBRETINY)
15#elif defined(USE_RP2040)
16#include <hardware/sync.h>
23#if defined(USE_ESP8266) || defined(USE_RP2040)
29#if defined(USE_ESP32) || defined(USE_LIBRETINY)
33__attribute__((always_inline))
inline void wake_main_task_any_context() {
34 if (in_isr_context()) {
35 BaseType_t px_higher_priority_task_woken = pdFALSE;
36 esphome_main_task_notify_from_isr(&px_higher_priority_task_woken);
37#ifdef portYIELD_FROM_ISR
38 portYIELD_FROM_ISR(px_higher_priority_task_woken);
42 (void) px_higher_priority_task_woken;
45 esphome_main_task_notify();
61 ulTaskNotifyTake(pdTRUE, pdMS_TO_TICKS(ms));
66#elif defined(USE_ESP8266)
95#elif defined(USE_RP2040)
struct @65::@66 __attribute__
Wake the main loop task from an ISR. ISR-safe.
void wakeable_delay(uint32_t ms)
Providing packet encoding functions for exchanging data with a remote host.
void wake_loop_threadsafe()
Non-ISR: always inline.
void ESPHOME_ALWAYS_INLINE wake_loop_impl()
Inline implementation — IRAM callers inline this directly.
volatile bool g_main_loop_woke
void HOT delay(uint32_t ms)
void IRAM_ATTR wake_loop_any_context()
IRAM_ATTR entry point for ISR callers — defined in wake.cpp.
void IRAM_ATTR wake_loop_isrsafe(BaseType_t *px_higher_priority_task_woken)
IRAM_ATTR entry points — defined in wake.cpp.