#ifndef __TIMER_H__
#define __TIMER_H__

#define TIMER_FLAGS_USERMASK  (0x01) // flags the user can set

#define TIMER_FLAGS_PERIODIC  (0x01) // timer is periodic
#define TIMER_FLAGS_ONESHOT   (0x02) // timer is oneshot
#define TIMER_FLAGS_ACTIVE    (0x04) // timer is active
#define TIMER_FLAGS_UNUSED0   (0x08)
#define TIMER_FLAGS_UNUSED1   (0x10)
#define TIMER_FLAGS_UNUSED2   (0x20)
#define TIMER_FLAGS_UNUSED3   (0x40)
#define TIMER_FLAGS_UNUSED4   (0x80)

typedef struct Timer {
  struct Timer *next;
  unsigned char flags;
  int period; // interval
  int delay; 
  int evType;
  } Timer, *pTimer;

int timerInit(void);
pTimer timerCreate(unsigned char flags, int period, int evType);
void timerModify(pTimer modTimer, unsigned char flags, int period);
void timerCancel(pTimer cancelTimer);
int timerGetPeriodMs(void);
void timerShow(void);

#endif /* __TIMER_H__ */
