// // Created by MightyPork on 2018/01/14. // #ifndef GEX_F072_IRQ_DISPATCHER_H #define GEX_F072_IRQ_DISPATCHER_H /** * Initialize the interrupt dispatcher */ void irqd_init(void); /** Typedef for a IRQ callback run by the dispatcher */ typedef void (*IrqCallback)(void*); /** * Attach a callback to a IRQ handler. * Pass NULL to remove the handler. * * NOTE: The handler is responsible for clearing any interrupt status flags. * NOTE: It is not guaranteed that the particular peripheral caused the interrupt when * the function is called; some interrupt vectors are shared. Make sure to check the flags. * * @param periph - peripheral we're attaching to * @param callback - callback to fire on IRQ * @param data - data passed to the callback (user context) */ void irqd_attach(void *periph, IrqCallback callback, void *data); /** * Remove a callback * * @param periph - peripheral we're attaching to * @param callback - callback to remove, if it doesn't match, do nothing */ void irqd_detach(void *periph, IrqCallback callback); #endif //GEX_F072_IRQ_DISPATCHER_H