46 lines
907 B
C
Executable file
46 lines
907 B
C
Executable file
#pragma once
|
|
|
|
#include <sys/sysevents.h>
|
|
|
|
#include <util/list.h>
|
|
#include <hwo/threads.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
#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 <maxwait> us dann return NULL
|
|
avrEVENT* event_pull(void); // Nächstes Ereignis holen, blockiert immer bis Ereignis vorhanden
|
|
|
|
|