| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- #pragma once
- #include <stdbool.h>
- #ifdef __cplusplus
- extern "C" {
- #endif
- /** Interrupt callback prototype */
- typedef void (*InterruptCallback)(void*, void*);
- /** Interupt type */
- typedef enum {
- InterruptTypeComparatorTrigger,
- InterruptTypeTimerUpdate,
- InterruptTypeLast,
- } InterruptType;
- /** Interrupt callback type */
- typedef struct {
- InterruptCallback callback;
- void* context;
- bool ready;
- } InterruptCallbackItem;
- /**
- * Init interrupt
- * @return true on succsessful initialization, false otherwise
- */
- bool api_interrupt_init();
- /**
- * Add interrupt
- * @param callback InterruptCallback
- * @param type InterruptType
- * @param context context for callback
- */
- void api_interrupt_add(InterruptCallback callback, InterruptType type, void* context);
- /**
- * Remove interrupt
- * @param callback InterruptCallback
- * @param type InterruptType
- */
- void api_interrupt_remove(InterruptCallback callback, InterruptType type);
- /**
- * Enable interrupt
- * @param callback InterruptCallback
- * @param type InterruptType
- */
- void api_interrupt_enable(InterruptCallback callback, InterruptType type);
- /**
- * Disable interrupt
- * @param callback InterruptCallback
- * @param type InterruptType
- */
- void api_interrupt_disable(InterruptCallback callback, InterruptType type);
- /**
- * Call interrupt
- * @param type InterruptType
- * @param hw pointer to hardware peripheral
- */
- void api_interrupt_call(InterruptType type, void* hw);
- #ifdef __cplusplus
- }
- #endif
|