/*----------------------------------------------------------------------------*/ | |
/* Copyright (c) FIRST 2008. All Rights Reserved. */ | |
/* Open Source Software - may be modified and shared by FRC teams. The code */ | |
/* must be accompanied by the FIRST BSD license file in $(WIND_BASE)/WPILib. */ | |
/*----------------------------------------------------------------------------*/ | |
#ifndef TIMER_H_ | |
#define TIMER_H_ | |
#include "semLib.h" | |
#include "Base.h" | |
typedef void (*TimerInterruptHandler)(void *param); | |
void Wait(double seconds); | |
double GetClock(); | |
double GetTime(); | |
/** | |
* Timer objects measure accumulated time in seconds. | |
* The timer object functions like a stopwatch. It can be started, stopped, and cleared. When the | |
* timer is running its value counts up in seconds. When stopped, the timer holds the current | |
* value. The implementation simply records the time when started and subtracts the current time | |
* whenever the value is requested. | |
*/ | |
class Timer | |
{ | |
public: | |
Timer(); | |
virtual ~Timer(); | |
double Get(); | |
void Reset(); | |
void Start(); | |
void Stop(); | |
bool HasPeriodPassed(double period); | |
static double GetFPGATimestamp(); | |
static double GetPPCTimestamp(); | |
private: | |
double m_startTime; | |
double m_accumulatedTime; | |
bool m_running; | |
SEM_ID m_semaphore; | |
DISALLOW_COPY_AND_ASSIGN(Timer); | |
}; | |
#endif |