17 #ifndef MBED_INTERRUPTMANAGER_H 18 #define MBED_INTERRUPTMANAGER_H 21 #include "CallChain.h" 70 pFunctionPointer_t
add_handler(
void (*
function)(
void), IRQn_Type irq) {
71 return add_common(
function, irq);
83 return add_common(
function, irq,
true);
96 pFunctionPointer_t
add_handler(T* tptr,
void (T::*mptr)(
void), IRQn_Type irq) {
97 return add_common(tptr, mptr, irq);
111 return add_common(tptr, mptr, irq,
true);
135 pFunctionPointer_t add_common(T *tptr,
void (T::*mptr)(
void), IRQn_Type irq,
bool front=
false) {
136 int irq_pos = get_irq_index(irq);
137 bool change = must_replace_vector(irq);
139 pFunctionPointer_t pf = front ? _chains[irq_pos]->
add_front(tptr, mptr) : _chains[irq_pos]->
add(tptr, mptr);
141 NVIC_SetVector(irq, (uint32_t)&InterruptManager::static_irq_helper);
145 pFunctionPointer_t add_common(
void (*
function)(
void), IRQn_Type irq,
bool front=
false);
146 bool must_replace_vector(IRQn_Type irq);
147 int get_irq_index(IRQn_Type irq);
149 void add_helper(
void (*
function)(
void), IRQn_Type irq,
bool front=
false);
150 static void static_irq_helper();
pFunctionPointer_t add_front(void(*function)(void))
Definition: CallChain.cpp:35
pFunctionPointer_t add_handler(void(*function)(void), IRQn_Type irq)
Definition: InterruptManager.h:70
static void destroy()
Definition: InterruptManager.cpp:41
bool remove_handler(pFunctionPointer_t handler, IRQn_Type irq)
Definition: InterruptManager.cpp:78
pFunctionPointer_t add_handler_front(T *tptr, void(T::*mptr)(void), IRQn_Type irq)
Definition: InterruptManager.h:110
pFunctionPointer_t add_handler_front(void(*function)(void), IRQn_Type irq)
Definition: InterruptManager.h:82
pFunctionPointer_t add(void(*function)(void))
Definition: CallChain.cpp:31
pFunctionPointer_t add_handler(T *tptr, void(T::*mptr)(void), IRQn_Type irq)
Definition: InterruptManager.h:96
Definition: InterruptManager.h:52
Definition: CallChain.h:63