WPILibC++  2020.3.2-60-g3011ebe
frc2::Timer Class Reference

A wrapper for the frc::Timer class that returns unit-typed values. More...

#include <Timer.h>

Public Member Functions

 Timer ()
 Create a new timer object. More...
 
 Timer (const Timer &rhs)
 
Timeroperator= (const Timer &rhs)
 
 Timer (Timer &&rhs)
 
Timeroperator= (Timer &&rhs)
 
units::second_t Get () const
 Get the current time from the timer. More...
 
void Reset ()
 Reset the timer by setting the time to 0. More...
 
void Start ()
 Start the timer running. More...
 
void Stop ()
 Stop the timer. More...
 
bool HasElapsed (units::second_t period) const
 Check if the period specified has passed. More...
 
bool HasPeriodPassed (units::second_t period)
 Check if the period specified has passed and if it has, advance the start time by that period. More...
 
bool AdvanceIfElapsed (units::second_t period)
 Check if the period specified has passed and if it has, advance the start time by that period. More...
 

Static Public Member Functions

static units::second_t GetFPGATimestamp ()
 Return the FPGA system clock time in seconds. More...
 
static units::second_t GetMatchTime ()
 Return the approximate match time. More...
 

Static Public Attributes

static const units::second_t kRolloverTime
 

Detailed Description

A wrapper for the frc::Timer class that returns unit-typed values.

Constructor & Destructor Documentation

◆ Timer()

frc2::Timer::Timer ( )

Create a new timer object.

Create a new timer object and reset the time to zero. The timer is initially not running and must be started.

Member Function Documentation

◆ AdvanceIfElapsed()

bool frc2::Timer::AdvanceIfElapsed ( units::second_t  period)

Check if the period specified has passed and if it has, advance the start time by that period.

This is useful to decide if it's time to do periodic work without drifting later by the time it took to get around to checking.

Parameters
periodThe period to check for.
Returns
True if the period has passed.

◆ Get()

units::second_t frc2::Timer::Get ( ) const

Get the current time from the timer.

If the clock is running it is derived from the current system clock the start time stored in the timer class. If the clock is not running, then return the time when it was last stopped.

Returns
Current time value for this timer in seconds

◆ GetFPGATimestamp()

static units::second_t frc2::Timer::GetFPGATimestamp ( )
static

Return the FPGA system clock time in seconds.

Return the time from the FPGA hardware clock in seconds since the FPGA started. Rolls over after 71 minutes.

Returns
Robot running time in seconds.

◆ GetMatchTime()

static units::second_t frc2::Timer::GetMatchTime ( )
static

Return the approximate match time.

The FMS does not send an official match time to the robots, but does send an approximate match time. The value will count down the time remaining in the current period (auto or teleop).

Warning: This is not an official time (so it cannot be used to dispute ref calls or guarantee that a function will trigger before the match ends).

The Practice Match function of the DS approximates the behavior seen on the field.

Returns
Time remaining in current match period (auto or teleop)

◆ HasElapsed()

bool frc2::Timer::HasElapsed ( units::second_t  period) const

Check if the period specified has passed.

Parameters
secondsThe period to check.
Returns
True if the period has passed.

◆ HasPeriodPassed()

bool frc2::Timer::HasPeriodPassed ( units::second_t  period)

Check if the period specified has passed and if it has, advance the start time by that period.

This is useful to decide if it's time to do periodic work without drifting later by the time it took to get around to checking.

Parameters
periodThe period to check for.
Returns
True if the period has passed.

◆ Reset()

void frc2::Timer::Reset ( )

Reset the timer by setting the time to 0.

Make the timer startTime the current time so new requests will be relative to now.

◆ Start()

void frc2::Timer::Start ( )

Start the timer running.

Just set the running flag to true indicating that all time requests should be relative to the system clock. Note that this method is a no-op if the timer is already running.

◆ Stop()

void frc2::Timer::Stop ( )

Stop the timer.

This computes the time as of now and clears the running flag, causing all subsequent time requests to be read from the accumulated time rather than looking at the system clock.


The documentation for this class was generated from the following file: