flipperzero-firmware/core/api-hal/api-interrupt-mgr.h
DrZlo13 cf1c8fb223
[FL-85][FL-446][FL-720] Dallas key blanks and OneWire lib rework (#313)
* sepate one wire class
* TM2004 writer
* app mode write ds1990
* test another blanks protocol
* new ibutton slave
* one wire states
* tim1 capture compare and update interrupts
* interrupt mgr, new timers IRQ
* discard HAL_TIM_PeriodElapsedCallback from main
* add exti_14 line
* add external interrupt callback
* use int mgr in input
* better interrupt managment
* add interrupt callback enable and disable fns
* properly init app
* changed timings
* rename one wire classes
* use new owb classes
* properly remove interrupts
* new blanks writer
* remove unused tests
* new core includes
* extern c guard
* fix api_interrupt_remove usage
* remove debug info, new way to detect blanks writing
* remove copy constructor
* change keys template
* fix app sources recipe
2021-01-28 15:30:31 +03:00

36 lines
887 B
C

#pragma once
#include <stdbool.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*InterruptCallback)(void*, void*);
typedef enum {
InterruptTypeComparatorTrigger,
InterruptTypeTimerCapture,
InterruptTypeTimerOutputCompare,
InterruptTypeTimerUpdate,
InterruptTypeExternalInterrupt,
} InterruptType;
typedef struct {
InterruptCallback callback;
InterruptType type;
void* context;
bool ready;
} InterruptCallbackItem;
bool api_interrupt_init();
void api_interrupt_add(InterruptCallback callback, InterruptType type, void* context);
void api_interrupt_remove(InterruptCallback callback, InterruptType type);
void api_interrupt_enable(InterruptCallback callback, InterruptType type);
void api_interrupt_disable(InterruptCallback callback, InterruptType type);
void api_interrupt_call(InterruptType type, void* hw);
#ifdef __cplusplus
}
#endif