#pragma once #include #include #include #include #define EV_FLAG_AUTOFREE 0x01 struct avr_event { list_t list; uint8_t flags; uint32_t event; // Ereigniscode uint32_t parm1, // Parameter 1 parm2; // Parameter 2 void *ptr; // Ptr Parameter uint64_t time; // Wann wurde das Ereignis gesetzt }; typedef struct avr_event avrEVENT; typedef struct avr_event EVENT; #define EVENT(ptr) ((EVENT*)ptr) extern list_t _ev_head; extern EVENT *_ev_cleanup; extern THREAD *eventWaiter; int event_append(EVENT *event); int event_push(uint32_t event,uint32_t p1,uint32_t p2,void* ptr); void event_cleanup(void); avrEVENT* event_wait(uint32_t maxwait); // Nächstes Ereignis holen, warte maximal us dann return NULL avrEVENT* event_pull(void); // Nächstes Ereignis holen, blockiert immer bis Ereignis vorhanden