Class StatusSignal<T>

java.lang.Object
com.ctre.phoenix6.BaseStatusSignal
com.ctre.phoenix6.StatusSignal<T>
All Implemented Interfaces:
Cloneable

public class StatusSignal<T>
extends BaseStatusSignal
implements Cloneable
Represents a status signal with data of type T, and operations available to retrieve information about the signal.
  • Constructor Details

  • Method Details

    • asSupplier

      public Supplier<T> asSupplier()
      Returns a lambda that calls refresh(boolean) and getValue() on this object. This is useful for command-based programming.
      Returns:
      Supplier that refreshes this signal and returns it
    • toString

      public String toString()
      Overrides:
      toString in class Object
    • clone

      public StatusSignal<T> clone()
      Overrides:
      clone in class Object
    • getTypeClass

      public Class<T> getTypeClass()
    • getValue

      public T getValue()
      Gets the cached value from this status signal.

      Gets the cached value. To make sure the value is up-to-date call refresh() or waitForUpdate(double)

      Returns:
      Cached value
    • refresh

      public StatusSignal<T> refresh​(boolean reportError)
      Refreshes the value of this status signal.

      If the user application caches this StatusSignal object instead of periodically fetching it from the hardware device, this function must be called to fetch fresh data.

      This performs a non-blocking refresh operation. If you want to wait until you receive the signal, call waitForUpdate(double) instead.

      Parameters:
      reportError - Whether to report any errors to the Driver Station/stderr. Defaults true
      Returns:
      Reference to itself
    • refresh

      public StatusSignal<T> refresh()
      Refreshes the value of this status signal.

      If the user application caches this StatusSignal object instead of periodically fetching it from the hardware device, this function must be called to fetch fresh data.

      This performs a non-blocking refresh operation. If you want to wait until you receive the signal, call waitForUpdate(double) instead.

      Returns:
      Reference to itself
    • waitForUpdate

      public StatusSignal<T> waitForUpdate​(double timeoutSec, boolean reportError)
      Waits up to timeoutSec to get the up-to-date status signal value.

      This performs a blocking refresh operation. If you want to non-blocking refresh the signal, call refresh() instead.

      Parameters:
      timeoutSec - Maximum time to wait for the signal to update
      reportError - Whether to report any errors to the Driver Station/stderr. Defaults true
      Returns:
      Reference to itself
    • waitForUpdate

      public StatusSignal<T> waitForUpdate​(double timeoutSec)
      Waits up to timeoutSec to get the up-to-date status signal value.

      This performs a blocking refresh operation. If you want to non-blocking refresh the signal, call refresh() instead.

      Parameters:
      timeoutSec - Maximum time to wait for the signal to update
      Returns:
      Reference to itself
    • setUpdateFrequency

      public StatusCode setUpdateFrequency​(double frequencyHz, double timeoutSeconds)
      Sets the rate at which the device will publish this signal.

      A frequency of 0 Hz will turn off the signal. Otherwise, the minimum supported signal frequency is 4 Hz, and the maximum is 1000 Hz.

      If other StatusSignals in the same status frame have been set to an update frequency, the fastest requested update frequency will be applied to the frame.

      Specified by:
      setUpdateFrequency in class BaseStatusSignal
      Parameters:
      frequencyHz - Rate to publish the signal in Hz.
      timeoutSeconds - Maximum amount of time to wait when performing the action
      Returns:
      Status code of setting the update frequency
    • getAppliedUpdateFrequency

      public double getAppliedUpdateFrequency()
      Gets the rate at which the device will publish this signal.

      This is typically the last value passed into setUpdateFrequency(double, double). The returned value may be higher if another StatusSignal in the same status frame has been set to a higher update frequency.

      Specified by:
      getAppliedUpdateFrequency in class BaseStatusSignal
      Returns:
      Applied update frequency of the signal in Hz
    • getDataCopy

      Get a basic data-only container with this information, to be used for things such as data logging.

      Note if looking for Phoenix 6 logging features, see the SignalLogger class instead.

      This function returns a new object every call. As a result, we recommend that this is not called inside a tight loop.

      Returns:
      Basic structure with all relevant information