ESPHome 2026.11.0-dev
Loading...
Searching...
No Matches
hal.h
Go to the documentation of this file.
1#pragma once
2
3#ifdef USE_ZEPHYR
4
5#include <cstdint>
6
7#include <zephyr/kernel.h>
8
9#define IRAM_ATTR
10#define PROGMEM
11
12namespace esphome::zephyr {}
13
14namespace esphome {
15
18__attribute__((always_inline)) inline bool in_isr_context() { return false; }
19
20inline k_tid_t &main_loop_thread() {
21 static k_tid_t thread = nullptr;
22 return thread;
23}
24
26__attribute__((always_inline)) inline bool is_main_loop_thread() { return k_current_get() == main_loop_thread(); }
27
28__attribute__((always_inline)) inline void yield() { ::k_yield(); }
29__attribute__((always_inline)) inline void delay(uint32_t ms) { ::k_msleep(ms); }
30__attribute__((always_inline)) inline uint32_t micros() { return k_ticks_to_us_floor32(k_uptime_ticks()); }
31__attribute__((always_inline)) inline uint64_t millis_64() { return static_cast<uint64_t>(k_uptime_get()); }
32__attribute__((always_inline)) inline uint32_t millis() { return static_cast<uint32_t>(millis_64()); }
33
34// NOLINTNEXTLINE(readability-identifier-naming)
35__attribute__((always_inline)) inline void delayMicroseconds(uint32_t us) { ::k_usleep(us); }
36__attribute__((always_inline)) inline uint32_t arch_get_cpu_cycle_count() { return k_cycle_get_32(); }
37__attribute__((always_inline)) inline uint32_t arch_get_cpu_freq_hz() { return sys_clock_hw_cycles_per_sec(); }
38
39void arch_feed_wdt();
40void arch_init();
41
42} // namespace esphome
43
44#endif // USE_ZEPHYR
struct @66::@67 __attribute__
Wake the main loop task from an ISR. ISR-safe.
Definition main_task.h:45
void yield(void)
uint32_t arch_get_cpu_cycle_count()
Definition hal.cpp:71
void arch_init()
Definition hal.cpp:44
void IRAM_ATTR HOT delayMicroseconds(uint32_t us)
Definition hal.cpp:48
pthread_t & main_loop_thread()
Definition hal.h:20
uint32_t arch_get_cpu_freq_hz()
Definition hal.cpp:55
uint64_t millis_64()
Definition hal.cpp:29
uint32_t IRAM_ATTR HOT micros()
Definition hal.cpp:43
void arch_feed_wdt()
Definition hal.cpp:58
void HOT delay(uint32_t ms)
Definition hal.cpp:85
uint32_t IRAM_ATTR HOT millis()
Definition hal.cpp:25
static void uint32_t