/****************************************************************************/
/* Copyright 2009 MBARI.                                                    */
/* MBARI Proprietary Information. All rights reserved.                      */
/****************************************************************************/
#ifndef SYS_TIMER_H
#define SYS_TIMER_H

typedef struct
{
    int active;
    unsigned long startTicks;
    unsigned long totalTicks;

} Timer;


/* intialize the timer */
void tmrInit();

/* perform any timer tasks in main loop */
void tmrTask();

/* see if the timer is running */
int tmrIsRunning(Timer* timer);

/* Create the timer */
void tmrCreate(Timer* timer);

/* Clear the timer */
void tmrClear(Timer* timer);

/* Read the total amount of elapsed time the timer has running */
unsigned long tmrRead(Timer* timer);

/* Start the timer */
unsigned long tmrStart(Timer* timer);

/* Stop the timer */
unsigned long tmrStop(Timer* timer);

/* delay for a specified number of timer ticks */
void tmrDelayTicks(unsigned int ticks);

/* delay for a specified number of milliseconds */
void tmrDelayMs(unsigned int ms);

/* get internal tick counts */
unsigned long tmrGetTicks();

/* trigger detection level variables hacked into sys_time */
unsigned int tmrGetTriggerCount();

void tmrSetTrigHoldOff(unsigned long hold_off);

void tmrSetTrigDebounce(unsigned long debounce_ms);

unsigned long tmrGetTrigHoldOff();

unsigned long tmrGetTrigDebounce();

#endif


