#ifndef RTTIMER_H
#define RTTIMER_H

/******************************************************************************/
/******************************************************************************/
/*****************     Copyright 2004, 2005 Chronolytics Inc.   ***************/
/*****************     All Right Reserved                       ***************/
/******************************************************************************/
/******************************************************************************/

#include <time.h>
#include <RTReactiveTask.h>

static volatile const char __attribute__ ((unused)) rcsid_RTTIMER_H[] = "$Id: RTTimer.h,v 1.7 2005/06/29 15:53:29 dave Exp $";

#define RTTimer_MAGIC   MAGIC("Timr")

typedef void * RTTimerId;

RTTimerId RTTimer_Arm_Absolute(RTReactiveTask *rtp, struct timeval *tvp);
RTTimerId RTTimer_Arm_Relative(RTReactiveTask *rtp, RTClockMicroSecs usecs);
void RTTimer_Cancel(RTTimerId timer); /* cancel active timer */
void RTTimer_Release(RTTimerId timer);  /* release timer (end lifecycle) */

  /* return current locale mSec time from which relative time is based */
RTClock_milliSecondTime RTTimer_Current(void);

/* better accuracy but more CPU overhead */
#define RTTIMER_BASE_FREQUENCY  (1024)  /* RTC requires power of two */

  /* timer runs a highest priority */
#define RTTIMER_PRIORITY_OFFSET   (-1)    /* offset from max priority */

#endif /* RTTIMER_H */

