Class CounterJNI

java.lang.Object
edu.wpi.first.hal.JNIWrapper
edu.wpi.first.hal.CounterJNI

public class CounterJNI
extends JNIWrapper
Counter HAL JNI functions.
See Also:
"hal/Counter.h"
  • Nested Class Summary

    Nested classes/interfaces inherited from class edu.wpi.first.hal.JNIWrapper

    JNIWrapper.Helper
  • Field Summary

    Fields 
    Modifier and Type Field Description
    static int EXTERNAL_DIRECTION  
    static int PULSE_LENGTH  
    static int SEMI_PERIOD  
    static int TWO_PULSE  
  • Constructor Summary

    Constructors 
    Constructor Description
    CounterJNI()  
  • Method Summary

    Modifier and Type Method Description
    static void clearCounterDownSource​(int counterHandle)
    Disables the down counting source to the counter.
    static void clearCounterUpSource​(int counterHandle)
    Disables the up counting source to the counter.
    static void freeCounter​(int counterHandle)
    Frees a counter.
    static int getCounter​(int counterHandle)
    Reads the current counter value.
    static boolean getCounterDirection​(int counterHandle)
    Gets the last direction the counter value changed.
    static double getCounterPeriod​(int counterHandle)
    Gets the Period of the most recent count.
    static int getCounterSamplesToAverage​(int counterHandle)
    Gets the Samples to Average which specifies the number of samples of the timer to average when calculating the period.
    static boolean getCounterStopped​(int counterHandle)
    Determines if the clock is stopped.
    static int initializeCounter​(int mode, IntBuffer index)
    Initializes a counter.
    static void resetCounter​(int counterHandle)
    Resets the Counter to zero.
    static void setCounterAverageSize​(int counterHandle, int size)
    Sets the average sample size of a counter.
    static void setCounterDownSource​(int counterHandle, int digitalSourceHandle, int analogTriggerType)
    Sets the source object that causes the counter to count down.
    static void setCounterDownSourceEdge​(int counterHandle, boolean risingEdge, boolean fallingEdge)
    Sets the down source to either detect rising edges or falling edges.
    static void setCounterExternalDirectionMode​(int counterHandle)
    Sets directional counting mode on this counter.
    static void setCounterMaxPeriod​(int counterHandle, double maxPeriod)
    Sets the maximum period where the device is still considered "moving".
    static void setCounterPulseLengthMode​(int counterHandle, double threshold)
    Configures the counter to count in up or down based on the length of the input pulse.
    static void setCounterReverseDirection​(int counterHandle, boolean reverseDirection)
    Sets the Counter to return reversed sensing on the direction.
    static void setCounterSamplesToAverage​(int counterHandle, int samplesToAverage)
    Sets the Samples to Average which specifies the number of samples of the timer to average when calculating the period.
    static void setCounterSemiPeriodMode​(int counterHandle, boolean highSemiPeriod)
    Sets Semi-period mode on this counter.
    static void setCounterUpdateWhenEmpty​(int counterHandle, boolean enabled)
    Selects whether you want to continue updating the event timer output when there are no samples captured.
    static void setCounterUpDownMode​(int counterHandle)
    Sets standard up / down counting mode on this counter.
    static void setCounterUpSource​(int counterHandle, int digitalSourceHandle, int analogTriggerType)
    Sets the source object that causes the counter to count up.
    static void setCounterUpSourceEdge​(int counterHandle, boolean risingEdge, boolean fallingEdge)
    Sets the up source to either detect rising edges or falling edges.

    Methods inherited from class edu.wpi.first.hal.JNIWrapper

    forceLoad, suppressUnused

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

  • Method Details

    • initializeCounter

      public static int initializeCounter​(int mode, IntBuffer index)
      Initializes a counter.
      Parameters:
      mode - the counter mode
      index - the compressor index (output)
      Returns:
      the created handle
      See Also:
      "HAL_InitializeCounter"
    • freeCounter

      public static void freeCounter​(int counterHandle)
      Frees a counter.
      Parameters:
      counterHandle - the counter handle
      See Also:
      "HAL_FreeCounter"
    • setCounterAverageSize

      public static void setCounterAverageSize​(int counterHandle, int size)
      Sets the average sample size of a counter.
      Parameters:
      counterHandle - the counter handle
      size - the size of samples to average
      See Also:
      "HAL_SetCounterAverageSize"
    • setCounterUpSource

      public static void setCounterUpSource​(int counterHandle, int digitalSourceHandle, int analogTriggerType)
      Sets the source object that causes the counter to count up.
      Parameters:
      counterHandle - the counter handle
      digitalSourceHandle - the digital source handle (either a HAL_AnalogTriggerHandle or a HAL_DigitalHandle)
      analogTriggerType - the analog trigger type if the source is an analog trigger
      See Also:
      "HAL_SetCounterUpSource"
    • setCounterUpSourceEdge

      public static void setCounterUpSourceEdge​(int counterHandle, boolean risingEdge, boolean fallingEdge)
      Sets the up source to either detect rising edges or falling edges.

      Note that both are allowed to be set true at the same time without issues.

      Parameters:
      counterHandle - the counter handle
      risingEdge - true to trigger on rising
      fallingEdge - true to trigger on falling
      See Also:
      "HAL_SetCounterUpSourceEdge"
    • clearCounterUpSource

      public static void clearCounterUpSource​(int counterHandle)
      Disables the up counting source to the counter.
      Parameters:
      counterHandle - the counter handle
      See Also:
      "HAL_ClearCounterUpSource"
    • setCounterDownSource

      public static void setCounterDownSource​(int counterHandle, int digitalSourceHandle, int analogTriggerType)
      Sets the source object that causes the counter to count down.
      Parameters:
      counterHandle - the counter handle
      digitalSourceHandle - the digital source handle (either a HAL_AnalogTriggerHandle or a HAL_DigitalHandle)
      analogTriggerType - the analog trigger type if the source is an analog trigger
      See Also:
      "HAL_SetCounterDownSource"
    • setCounterDownSourceEdge

      public static void setCounterDownSourceEdge​(int counterHandle, boolean risingEdge, boolean fallingEdge)
      Sets the down source to either detect rising edges or falling edges. Note that both are allowed to be set true at the same time without issues.
      Parameters:
      counterHandle - the counter handle
      risingEdge - true to trigger on rising
      fallingEdge - true to trigger on falling
      See Also:
      "HAL_SetCounterDownSourceEdge"
    • clearCounterDownSource

      public static void clearCounterDownSource​(int counterHandle)
      Disables the down counting source to the counter.
      Parameters:
      counterHandle - the counter handle
      See Also:
      "HAL_ClearCounterDownSource"
    • setCounterUpDownMode

      public static void setCounterUpDownMode​(int counterHandle)
      Sets standard up / down counting mode on this counter.

      Up and down counts are sourced independently from two inputs.

      Parameters:
      counterHandle - the counter handle
      See Also:
      "HAL_SetCounterUpDownMode"
    • setCounterExternalDirectionMode

      public static void setCounterExternalDirectionMode​(int counterHandle)
      Sets directional counting mode on this counter.

      The direction is determined by the B input, with counting happening with the A input.

      Parameters:
      counterHandle - the counter handle
      See Also:
      "HAL_SetCounterExternalDirectionMode"
    • setCounterSemiPeriodMode

      public static void setCounterSemiPeriodMode​(int counterHandle, boolean highSemiPeriod)
      Sets Semi-period mode on this counter.

      The counter counts up based on the time the input is triggered. High or Low depends on the highSemiPeriod parameter.

      Parameters:
      counterHandle - the counter handle
      highSemiPeriod - true for counting when the input is high, false for low
      See Also:
      "HAL_SetCounterSemiPeriodMode"
    • setCounterPulseLengthMode

      public static void setCounterPulseLengthMode​(int counterHandle, double threshold)
      Configures the counter to count in up or down based on the length of the input pulse.

      This mode is most useful for direction sensitive gear tooth sensors.

      Parameters:
      counterHandle - the counter handle
      threshold - The pulse length beyond which the counter counts the opposite direction (seconds)
      See Also:
      "HAL_SetCounterPulseLengthMode"
    • getCounterSamplesToAverage

      public static int getCounterSamplesToAverage​(int counterHandle)
      Gets the Samples to Average which specifies the number of samples of the timer to average when calculating the period. Perform averaging to account for mechanical imperfections or as oversampling to increase resolution.
      Parameters:
      counterHandle - the counter handle
      Returns:
      SamplesToAverage The number of samples being averaged (from 1 to 127)
      See Also:
      "HAL_GetCounterSamplesToAverage"
    • setCounterSamplesToAverage

      public static void setCounterSamplesToAverage​(int counterHandle, int samplesToAverage)
      Sets the Samples to Average which specifies the number of samples of the timer to average when calculating the period. Perform averaging to account for mechanical imperfections or as oversampling to increase resolution.
      Parameters:
      counterHandle - the counter handle
      samplesToAverage - The number of samples to average from 1 to 127
      See Also:
      "HAL_SetCounterSamplesToAverage"
    • resetCounter

      public static void resetCounter​(int counterHandle)
      Resets the Counter to zero.

      Sets the counter value to zero. This does not effect the running state of the counter, just sets the current value to zero.

      Parameters:
      counterHandle - the counter handle
      See Also:
      "HAL_ResetCounter"
    • getCounter

      public static int getCounter​(int counterHandle)
      Reads the current counter value.

      Reads the value at this instant. It may still be running, so it reflects the current value. Next time it is read, it might have a different value.

      Parameters:
      counterHandle - the counter handle
      Returns:
      the current counter value
      See Also:
      "HAL_GetCounter"
    • getCounterPeriod

      public static double getCounterPeriod​(int counterHandle)
      Gets the Period of the most recent count.

      Returns the time interval of the most recent count. This can be used for velocity calculations to determine shaft speed.

      Parameters:
      counterHandle - the counter handle
      Returns:
      the period of the last two pulses in units of seconds
      See Also:
      "HAL_GetCounterPeriod"
    • setCounterMaxPeriod

      public static void setCounterMaxPeriod​(int counterHandle, double maxPeriod)
      Sets the maximum period where the device is still considered "moving".

      Sets the maximum period where the device is considered moving. This value is used to determine the "stopped" state of the counter using the HAL_GetCounterStopped method.

      Parameters:
      counterHandle - the counter handle
      maxPeriod - the maximum period where the counted device is considered moving in seconds
      See Also:
      "HAL_SetCounterMaxPeriod"
    • setCounterUpdateWhenEmpty

      public static void setCounterUpdateWhenEmpty​(int counterHandle, boolean enabled)
      Selects whether you want to continue updating the event timer output when there are no samples captured.

      The output of the event timer has a buffer of periods that are averaged and posted to a register on the FPGA. When the timer detects that the event source has stopped (based on the MaxPeriod) the buffer of samples to be averaged is emptied.

      If you enable the update when empty, you will be notified of the stopped source and the event time will report 0 samples.

      If you disable update when empty, the most recent average will remain on the output until a new sample is acquired.

      You will never see 0 samples output (except when there have been no events since an FPGA reset) and you will likely not see the stopped bit become true (since it is updated at the end of an average and there are no samples to average).

      Parameters:
      counterHandle - the counter handle
      enabled - true to enable counter updating with no samples
      See Also:
      "HAL_SetCounterUpdateWhenEmpty"
    • getCounterStopped

      public static boolean getCounterStopped​(int counterHandle)
      Determines if the clock is stopped.

      Determine if the clocked input is stopped based on the MaxPeriod value set using the SetMaxPeriod method. If the clock exceeds the MaxPeriod, then the device (and counter) are assumed to be stopped and it returns true.

      Parameters:
      counterHandle - the counter handle
      Returns:
      true if the most recent counter period exceeds the MaxPeriod value set by SetMaxPeriod
      See Also:
      "HAL_GetCounterStopped"
    • getCounterDirection

      public static boolean getCounterDirection​(int counterHandle)
      Gets the last direction the counter value changed.
      Parameters:
      counterHandle - the counter handle
      Returns:
      the last direction the counter value changed
      See Also:
      "HAL_GetCounterDirection"
    • setCounterReverseDirection

      public static void setCounterReverseDirection​(int counterHandle, boolean reverseDirection)
      Sets the Counter to return reversed sensing on the direction.

      This allows counters to change the direction they are counting in the case of 1X and 2X quadrature encoding only. Any other counter mode isn't supported.

      Parameters:
      counterHandle - the counter handle
      reverseDirection - true if the value counted should be negated.
      See Also:
      "HAL_SetCounterReverseDirection"