#ifndef __EVENTQ_H__
#define __EVENTQ_H__

#define EVENTQ_EVENT_NOEVENT     (0)
#define EVENTQ_EVENT_UART0RX     (1)
#define EVENTQ_EVENT_RTCTICK     (2)
#define EVENTQ_EVENT_TIMERTICK   (3)
#define EVENTQ_EVENT_DATAPOLL    (4)
#define EVENTQ_EVENT_GFIPOLL     (5)
#define EVENTQ_EVENT_GFIPOLL0    (6)
#define EVENTQ_EVENT_GFIPOLL1    (7)
#define EVENTQ_EVENT_UART1RX     (8)
#define EVENTQ_EVENT_ADC12_KVH   (9)
#define EVENTQ_EVENT_UPDATE_TC   (10)
#define EVENTQ_EVENT_NEW_HEADING (11)
#define EVENTQ_EVENT_MAX         (EVENTQ_EVENT_NEW_HEADING)

typedef void (*eventHandler)(void);

int eventqInit(void);
void eventqPut(int);
void eventqUrgentPut(int);
int eventqGet(void);
int eventqRegisterHandler(int evType, eventHandler handler);
int eventqGetHandler(int evType, eventHandler *pHandler);
void eventqProcessEvents(void);

#endif /* __EVENTQ_H__ */
