edu.wpi.first.wpilibj

## Class Timer

- java.lang.Object
- - edu.wpi.first.wpilibj.Timer

-     public class Timer
      extends java.lang.Object

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static interface` | `Timer.Interface`
    `static interface` | `Timer.StaticInterface`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Timer()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `delay(double seconds)` Pause the thread for a specified time.
    `double` | `get()` Get the current time from the timer.
    `static double` | `getFPGATimestamp()` Return the system clock time in seconds.
    `static double` | `getMatchTime()` Return the approximate match time The FMS does not currently send the official match time to the robots This returns the time since the enable signal sent from the Driver Station At the beginning of autonomous, the time is reset to 0.0 seconds At the beginning of teleop, the time is reset to +15.0 seconds If the robot is disabled, this returns 0.0 seconds Warning: This is not an official time (so it cannot be used to argue with referees).
    `boolean` | `hasPeriodPassed(double period)` Check if the period specified has passed and if it has, advance the start time by that period.
    `void` | `reset()` Reset the timer by setting the time to 0.
    `static void` | `SetImplementation(Timer.StaticInterface ti)`
    `void` | `start()` Start the timer running.
    `void` | `stop()` Stop the timer.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Timer

          public Timer()

  - ### Method Detail

    - #### SetImplementation

          public static void SetImplementation(Timer.StaticInterface ti)

    - #### getFPGATimestamp

          public static double getFPGATimestamp()

      Return the system clock time in seconds. Return the time from the FPGA hardware clock in seconds since the FPGA started.
      Returns:
        Robot running time in seconds.

    - #### getMatchTime

          public static double getMatchTime()

      Return the approximate match time The FMS does not currently send the official match time to the robots This returns the time since the enable signal sent from the Driver Station At the beginning of autonomous, the time is reset to 0.0 seconds At the beginning of teleop, the time is reset to +15.0 seconds If the robot is disabled, this returns 0.0 seconds Warning: This is not an official time (so it cannot be used to argue with referees).
      Returns:
        Match time in seconds since the beginning of autonomous

    - #### delay

          public static void delay(double seconds)

      Pause the thread for a specified time. Pause the execution of the thread for a specified period of time given in seconds. Motors will continue to run at their last assigned values, and sensors will continue to update. Only the task containing the wait will pause until the wait time is expired.
      Parameters:
        `seconds` - Length of time to pause

    - #### get

          public double get()

      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

    - #### reset

          public void reset()

      Reset the timer by setting the time to 0. Make the timer startTime the current time so new requests will be relative now

    - #### start

          public void start()

      Start the timer running. Just set the running flag to true indicating that all time requests should be relative to the system clock.

    - #### stop

          public void 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.

    - #### hasPeriodPassed

          public boolean hasPeriodPassed(double 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:
        `period` - The period to check for (in seconds).
      Returns:
        If the period has passed.