1 #ifndef W_INTERRUPTS_CPP
2 #define W_INTERRUPTS_CPP
13 using voidTemplateFuncPtrParam = void (*)(T param);
15 template<
typename T>
struct __container__ {
17 voidTemplateFuncPtrParam<T>
function;
21 template<
typename T>
void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T> userFunc, PinStatus mode, T& param) {
23 struct __container__<T> *cont =
new __container__<T>();
25 cont->function = userFunc;
29 auto f = [](
void* a) ->
void
31 T param = *(T*)((
struct __container__<T>*)a)->param;
32 (((
struct __container__<T>*)a)->function)(param);
35 attachInterruptParam(interruptNum, f, mode, cont);
38 template<
typename T>
void attachInterrupt(pin_size_t interruptNum, voidTemplateFuncPtrParam<T*> userFunc, PinStatus mode, T* param) {
39 attachInterruptParam(interruptNum, (voidFuncPtrParam)userFunc, mode, (
void*)param);