edu.wpi.first.wpilibj

## Interface CounterBase

- All Known Implementing Classes:
    Counter, Encoder, GearTooth

      public interface CounterBase

  Interface for counting the number of ticks on a digital input channel. Encoders, Gear tooth sensors, and counters should all subclass this so it can be used to build more advanced classes for control and driving.

  All counters will immediately start counting - reset() them if you need them to be zeroed before use.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `CounterBase.EncodingType` The number of edges for the counterbase to increment or decrement on.

  - ### Method Summary

    All Methods Instance Methods Abstract Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `get()` Get the count.
    `boolean` | `getDirection()` Determine which direction the counter is going.
    `double` | `getPeriod()` Get the time between the last two edges counted.
    `boolean` | `getStopped()` Determine if the counter is not moving.
    `void` | `reset()` Reset the count to zero.
    `void` | `setMaxPeriod(double maxPeriod)` Set the maximum time between edges to be considered stalled.

- - ### Method Detail

    - #### get

          int get()

      Get the count.
      Returns:
        the count

    - #### reset

          void reset()

      Reset the count to zero.

    - #### getPeriod

          double getPeriod()

      Get the time between the last two edges counted.
      Returns:
        the time between the last two ticks in seconds

    - #### setMaxPeriod

          void setMaxPeriod(double maxPeriod)

      Set the maximum time between edges to be considered stalled.
      Parameters:
        `maxPeriod` - the maximum period in seconds

    - #### getStopped

          boolean getStopped()

      Determine if the counter is not moving.
      Returns:
        true if the counter has not changed for the max period

    - #### getDirection

          boolean getDirection()

      Determine which direction the counter is going.
      Returns:
        true for one direction, false for the other