idfxx 1.0.0
Modern C++23 components for ESP-IDF
Loading...
Searching...
No Matches
intr_alloc.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright 2026 Chris Leishman
3
4#pragma once
5
20#include <idfxx/flags>
21
22namespace idfxx {
23
37enum class intr_level : int {
38 level_1 = 1u << 1,
39 level_2 = 1u << 2,
40 level_3 = 1u << 3,
41 level_4 = 1u << 4,
42 level_5 = 1u << 5,
43 level_6 = 1u << 6,
44 nmi = 1u << 7,
45};
46
47} // namespace idfxx
48
49template<>
50inline constexpr bool idfxx::enable_flags_operators<idfxx::intr_level> = true;
51
52namespace idfxx {
53
56
59
61inline constexpr intr_levels intr_level_high =
63
66
78enum class intr_flag : int {
79 none = 0,
80 shared = 1u << 8,
81 edge = 1u << 9,
82 iram = 1u << 10,
83 disabled = 1u << 11,
84};
85
86} // namespace idfxx
87
88template<>
89inline constexpr bool idfxx::enable_flags_operators<idfxx::intr_flag> = true;
90
@ iram
IRAM with unaligned access.
intr_level
Hardware interrupt priority levels.
@ level_6
Level 6 interrupt.
@ level_4
Level 4 interrupt.
@ level_2
Level 2 interrupt.
@ nmi
Level 7 / NMI (highest priority)
@ level_5
Level 5 interrupt.
@ level_1
Level 1 interrupt (lowest priority)
@ level_3
Level 3 interrupt.
intr_flag
Interrupt behavioral flags.
@ disabled
Return from ISR with interrupts disabled.
@ edge
Edge-triggered interrupt.
@ none
No flags / default.
@ shared
Interrupt can be shared between ISRs.
constexpr intr_levels intr_level_all
All interrupt levels.
std::expected< T, std::error_code > result
result type wrapping a value or error code.
Definition error.hpp:120
constexpr intr_levels intr_level_high
High priority levels (4-6 and NMI). These require assembly handlers.
constexpr intr_levels intr_level_lowmed
Low and medium priority levels (1-3). These can be handled in C / C++.