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
22#include <esp_intr_alloc.h>
23
24namespace idfxx {
25
35enum class intr_flag : int {
36 none = 0,
37 level1 = 1u << 1,
38 level2 = 1u << 2,
39 level3 = 1u << 3,
40 level4 = 1u << 4,
41 level5 = 1u << 5,
42 level6 = 1u << 6,
43 nmi = 1u << 7,
44 shared = 1u << 8,
45 edge = 1u << 9,
46 iram = 1u << 10,
47 intr_disabled = 1u << 11,
48};
49
50} // namespace idfxx
51
52template<>
53inline constexpr bool idfxx::enable_flags_operators<idfxx::intr_flag> = true;
54
55namespace idfxx {
56
59
63
66
67} // namespace idfxx
68
Type-safe set of flags from a scoped enum.
Definition flags.hpp:88
constexpr flags< intr_flag > intr_flag_levelmask
Mask of all interrupt level flags.
intr_flag
Interrupt allocation flags.
@ intr_disabled
Return from ISR with interrupts disabled.
@ edge
Edge-triggered interrupt.
@ iram
ISR can be called if cache is disabled.
@ none
No flags / default.
@ level1
Accept Level 1 interrupt (lowest priority)
@ level3
Accept Level 3 interrupt.
@ level6
Accept Level 6 interrupt.
@ shared
Interrupt can be shared between ISRs.
@ level5
Accept Level 5 interrupt.
@ nmi
Accept Level 7 / NMI (highest priority)
@ level4
Accept Level 4 interrupt.
@ level2
Accept Level 2 interrupt.
constexpr flags< intr_flag > intr_flag_high
High priority levels (4-6 and NMI). These require assembly handlers.
constexpr flags< intr_flag > intr_flag_lowmed
Low and medium priority levels (1-3). These can be handled in C / C++.