avr-fw-modules/core/include/sys/events.h

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