Class Switch2ProController

java.lang.Object
org.wpilib.driverstation.Switch2ProController
All Implemented Interfaces:
HIDDevice, TelemetryLoggable

public class Switch2ProController extends Object implements HIDDevice, TelemetryLoggable
Handle input from Switch2Pro controllers connected to the Driver Station.

This class handles Switch2Pro input that comes from the Driver Station. Each time a value is requested the most recent value is returned.

  • Field Details

    • TOUCHPAD_COUNT

      public static final int TOUCHPAD_COUNT
      The number of touchpads supported by this controller.
      See Also:
    • SUPPORTS_RUMBLE

      public static final boolean SUPPORTS_RUMBLE
      Whether this controller supports main rumble motors.
      See Also:
    • SUPPORTS_TRIGGER_RUMBLE

      public static final boolean SUPPORTS_TRIGGER_RUMBLE
      Whether this controller supports trigger rumble motors.
      See Also:
    • SUPPORTS_MONO_LED

      public static final boolean SUPPORTS_MONO_LED
      Whether this controller supports mono LED output.
      See Also:
    • SUPPORTS_RGB_LED

      public static final boolean SUPPORTS_RGB_LED
      Whether this controller supports RGB LED output.
      See Also:
  • Constructor Details

    • Switch2ProController

      public Switch2ProController(int port)
      Construct an instance of a controller.
      Parameters:
      port - The port index on the Driver Station that the controller is plugged into.
    • Switch2ProController

      public Switch2ProController(GenericHID hid)
      Construct an instance of a controller with a GenericHID object.
      Parameters:
      hid - The GenericHID object to use for this controller.
  • Method Details

    • getHID

      public GenericHID getHID()
      Get the underlying GenericHID object.
      Specified by:
      getHID in interface HIDDevice
      Returns:
      the wrapped GenericHID object
    • getSupportedOutputCapabilities

      public static EnumSet<GenericHID.SupportedOutput> getSupportedOutputCapabilities()
      Get the supported outputs expected for this controller type.
      Returns:
      the expected supported outputs
    • getPort

      public int getPort()
      Get the port number of the HID.
      Returns:
      The port number of the HID.
    • isConnected

      public boolean isConnected()
      Get if the HID is connected.
      Returns:
      true if the HID is connected
    • getLeftX

      public double getLeftX()
      Get the Left X value of the controller.

      A deadband of 0.1 is applied by default. Use setLeftXDeadband(double) to change it.

      Returns:
      The axis value.
    • setLeftXDeadband

      public void setLeftXDeadband(double deadband)
      Set the deadband for the Left X axis.

      The deadband is clamped to [0, 1).

      Parameters:
      deadband - The deadband to apply.
    • getLeftY

      public double getLeftY()
      Get the Left Y value of the controller.

      A deadband of 0.1 is applied by default. Use setLeftYDeadband(double) to change it.

      Returns:
      The axis value.
    • setLeftYDeadband

      public void setLeftYDeadband(double deadband)
      Set the deadband for the Left Y axis.

      The deadband is clamped to [0, 1).

      Parameters:
      deadband - The deadband to apply.
    • getRightX

      public double getRightX()
      Get the Right X value of the controller.

      A deadband of 0.1 is applied by default. Use setRightXDeadband(double) to change it.

      Returns:
      The axis value.
    • setRightXDeadband

      public void setRightXDeadband(double deadband)
      Set the deadband for the Right X axis.

      The deadband is clamped to [0, 1).

      Parameters:
      deadband - The deadband to apply.
    • getRightY

      public double getRightY()
      Get the Right Y value of the controller.

      A deadband of 0.1 is applied by default. Use setRightYDeadband(double) to change it.

      Returns:
      The axis value.
    • setRightYDeadband

      public void setRightYDeadband(double deadband)
      Set the deadband for the Right Y axis.

      The deadband is clamped to [0, 1).

      Parameters:
      deadband - The deadband to apply.
    • getZL

      public double getZL()
      Get the ZL value of the controller.

      A deadband of 0.01 is applied by default. Use setZLDeadband(double) to change it.

      Returns:
      The axis value.
    • setZLDeadband

      public void setZLDeadband(double deadband)
      Set the deadband for the ZL axis.

      The deadband is clamped to [0, 1).

      Parameters:
      deadband - The deadband to apply.
    • getZR

      public double getZR()
      Get the ZR value of the controller.

      A deadband of 0.01 is applied by default. Use setZRDeadband(double) to change it.

      Returns:
      The axis value.
    • setZRDeadband

      public void setZRDeadband(double deadband)
      Set the deadband for the ZR axis.

      The deadband is clamped to [0, 1).

      Parameters:
      deadband - The deadband to apply.
    • getAxis

      public double getAxis(Switch2ProController.Axis axis)
      Get the value of the axis.
      Parameters:
      axis - The axis to read
      Returns:
      The axis value.
    • axisLessThan

      public BooleanEvent axisLessThan(Switch2ProController.Axis axis, double threshold, EventLoop loop)
      Constructs an event instance that is true when the axis value is less than threshold.
      Parameters:
      axis - The axis to read.
      threshold - The value below which this event should return true.
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance that is true when the axis value is less than the provided threshold.
    • axisGreaterThan

      public BooleanEvent axisGreaterThan(Switch2ProController.Axis axis, double threshold, EventLoop loop)
      Constructs an event instance that is true when the axis value is greater than threshold.
      Parameters:
      axis - The axis to read.
      threshold - The value above which this event should return true.
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance that is true when the axis value is greater than the provided threshold.
    • getBButton

      public boolean getBButton()
      Read the value of the B button on the controller.
      Returns:
      The state of the button.
    • getBButtonPressed

      public boolean getBButtonPressed()
      Whether the B button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getBButtonReleased

      public boolean getBButtonReleased()
      Whether the B button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • b

      public BooleanEvent b(EventLoop loop)
      Constructs an event instance around the B button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the B button's digital signal attached to the given loop.
    • getAButton

      public boolean getAButton()
      Read the value of the A button on the controller.
      Returns:
      The state of the button.
    • getAButtonPressed

      public boolean getAButtonPressed()
      Whether the A button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getAButtonReleased

      public boolean getAButtonReleased()
      Whether the A button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • a

      public BooleanEvent a(EventLoop loop)
      Constructs an event instance around the A button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the A button's digital signal attached to the given loop.
    • getYButton

      public boolean getYButton()
      Read the value of the Y button on the controller.
      Returns:
      The state of the button.
    • getYButtonPressed

      public boolean getYButtonPressed()
      Whether the Y button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getYButtonReleased

      public boolean getYButtonReleased()
      Whether the Y button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • y

      public BooleanEvent y(EventLoop loop)
      Constructs an event instance around the Y button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Y button's digital signal attached to the given loop.
    • getXButton

      public boolean getXButton()
      Read the value of the X button on the controller.
      Returns:
      The state of the button.
    • getXButtonPressed

      public boolean getXButtonPressed()
      Whether the X button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getXButtonReleased

      public boolean getXButtonReleased()
      Whether the X button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • x

      public BooleanEvent x(EventLoop loop)
      Constructs an event instance around the X button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the X button's digital signal attached to the given loop.
    • getMinusButton

      public boolean getMinusButton()
      Read the value of the Minus button on the controller.
      Returns:
      The state of the button.
    • getMinusButtonPressed

      public boolean getMinusButtonPressed()
      Whether the Minus button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getMinusButtonReleased

      public boolean getMinusButtonReleased()
      Whether the Minus button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • minus

      public BooleanEvent minus(EventLoop loop)
      Constructs an event instance around the Minus button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Minus button's digital signal attached to the given loop.
    • getHomeButton

      public boolean getHomeButton()
      Read the value of the Home button on the controller.
      Returns:
      The state of the button.
    • getHomeButtonPressed

      public boolean getHomeButtonPressed()
      Whether the Home button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getHomeButtonReleased

      public boolean getHomeButtonReleased()
      Whether the Home button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • home

      public BooleanEvent home(EventLoop loop)
      Constructs an event instance around the Home button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Home button's digital signal attached to the given loop.
    • getPlusButton

      public boolean getPlusButton()
      Read the value of the Plus button on the controller.
      Returns:
      The state of the button.
    • getPlusButtonPressed

      public boolean getPlusButtonPressed()
      Whether the Plus button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getPlusButtonReleased

      public boolean getPlusButtonReleased()
      Whether the Plus button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • plus

      public BooleanEvent plus(EventLoop loop)
      Constructs an event instance around the Plus button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Plus button's digital signal attached to the given loop.
    • getLeftStickButton

      public boolean getLeftStickButton()
      Read the value of the Left Stick button on the controller.
      Returns:
      The state of the button.
    • getLeftStickButtonPressed

      public boolean getLeftStickButtonPressed()
      Whether the Left Stick button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getLeftStickButtonReleased

      public boolean getLeftStickButtonReleased()
      Whether the Left Stick button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • leftStick

      public BooleanEvent leftStick(EventLoop loop)
      Constructs an event instance around the Left Stick button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Left Stick button's digital signal attached to the given loop.
    • getRightStickButton

      public boolean getRightStickButton()
      Read the value of the Right Stick button on the controller.
      Returns:
      The state of the button.
    • getRightStickButtonPressed

      public boolean getRightStickButtonPressed()
      Whether the Right Stick button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getRightStickButtonReleased

      public boolean getRightStickButtonReleased()
      Whether the Right Stick button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • rightStick

      public BooleanEvent rightStick(EventLoop loop)
      Constructs an event instance around the Right Stick button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Right Stick button's digital signal attached to the given loop.
    • getLButton

      public boolean getLButton()
      Read the value of the L button on the controller.
      Returns:
      The state of the button.
    • getLButtonPressed

      public boolean getLButtonPressed()
      Whether the L button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getLButtonReleased

      public boolean getLButtonReleased()
      Whether the L button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • L

      public BooleanEvent L(EventLoop loop)
      Constructs an event instance around the L button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the L button's digital signal attached to the given loop.
    • getRButton

      public boolean getRButton()
      Read the value of the R button on the controller.
      Returns:
      The state of the button.
    • getRButtonPressed

      public boolean getRButtonPressed()
      Whether the R button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getRButtonReleased

      public boolean getRButtonReleased()
      Whether the R button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • R

      public BooleanEvent R(EventLoop loop)
      Constructs an event instance around the R button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the R button's digital signal attached to the given loop.
    • getDpadUpButton

      public boolean getDpadUpButton()
      Read the value of the Dpad Up button on the controller.
      Returns:
      The state of the button.
    • getDpadUpButtonPressed

      public boolean getDpadUpButtonPressed()
      Whether the Dpad Up button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getDpadUpButtonReleased

      public boolean getDpadUpButtonReleased()
      Whether the Dpad Up button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • dpadUp

      public BooleanEvent dpadUp(EventLoop loop)
      Constructs an event instance around the Dpad Up button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Dpad Up button's digital signal attached to the given loop.
    • getDpadDownButton

      public boolean getDpadDownButton()
      Read the value of the Dpad Down button on the controller.
      Returns:
      The state of the button.
    • getDpadDownButtonPressed

      public boolean getDpadDownButtonPressed()
      Whether the Dpad Down button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getDpadDownButtonReleased

      public boolean getDpadDownButtonReleased()
      Whether the Dpad Down button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • dpadDown

      public BooleanEvent dpadDown(EventLoop loop)
      Constructs an event instance around the Dpad Down button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Dpad Down button's digital signal attached to the given loop.
    • getDpadLeftButton

      public boolean getDpadLeftButton()
      Read the value of the Dpad Left button on the controller.
      Returns:
      The state of the button.
    • getDpadLeftButtonPressed

      public boolean getDpadLeftButtonPressed()
      Whether the Dpad Left button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getDpadLeftButtonReleased

      public boolean getDpadLeftButtonReleased()
      Whether the Dpad Left button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • dpadLeft

      public BooleanEvent dpadLeft(EventLoop loop)
      Constructs an event instance around the Dpad Left button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Dpad Left button's digital signal attached to the given loop.
    • getDpadRightButton

      public boolean getDpadRightButton()
      Read the value of the Dpad Right button on the controller.
      Returns:
      The state of the button.
    • getDpadRightButtonPressed

      public boolean getDpadRightButtonPressed()
      Whether the Dpad Right button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getDpadRightButtonReleased

      public boolean getDpadRightButtonReleased()
      Whether the Dpad Right button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • dpadRight

      public BooleanEvent dpadRight(EventLoop loop)
      Constructs an event instance around the Dpad Right button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Dpad Right button's digital signal attached to the given loop.
    • getCaptureButton

      public boolean getCaptureButton()
      Read the value of the Capture button on the controller.
      Returns:
      The state of the button.
    • getCaptureButtonPressed

      public boolean getCaptureButtonPressed()
      Whether the Capture button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getCaptureButtonReleased

      public boolean getCaptureButtonReleased()
      Whether the Capture button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • capture

      public BooleanEvent capture(EventLoop loop)
      Constructs an event instance around the Capture button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the Capture button's digital signal attached to the given loop.
    • getGRButton

      public boolean getGRButton()
      Read the value of the GR button on the controller.
      Returns:
      The state of the button.
    • getGRButtonPressed

      public boolean getGRButtonPressed()
      Whether the GR button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getGRButtonReleased

      public boolean getGRButtonReleased()
      Whether the GR button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • GR

      public BooleanEvent GR(EventLoop loop)
      Constructs an event instance around the GR button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the GR button's digital signal attached to the given loop.
    • getGLButton

      public boolean getGLButton()
      Read the value of the GL button on the controller.
      Returns:
      The state of the button.
    • getGLButtonPressed

      public boolean getGLButtonPressed()
      Whether the GL button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getGLButtonReleased

      public boolean getGLButtonReleased()
      Whether the GL button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • GL

      public BooleanEvent GL(EventLoop loop)
      Constructs an event instance around the GL button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the GL button's digital signal attached to the given loop.
    • getCButton

      public boolean getCButton()
      Read the value of the C button on the controller.
      Returns:
      The state of the button.
    • getCButtonPressed

      public boolean getCButtonPressed()
      Whether the C button was pressed since the last check.
      Returns:
      Whether the button was pressed since the last check.
    • getCButtonReleased

      public boolean getCButtonReleased()
      Whether the C button was released since the last check.
      Returns:
      Whether the button was released since the last check.
    • C

      public BooleanEvent C(EventLoop loop)
      Constructs an event instance around the C button's digital signal.
      Parameters:
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the C button's digital signal attached to the given loop.
    • getButton

      public boolean getButton(Switch2ProController.Button button)
      Get the button value.
      Parameters:
      button - The button to read
      Returns:
      The state of the button.
    • getButtonPressed

      public boolean getButtonPressed(Switch2ProController.Button button)
      Whether the button was pressed since the last check.
      Parameters:
      button - The button to read
      Returns:
      Whether the button was pressed since the last check.
    • getButtonReleased

      public boolean getButtonReleased(Switch2ProController.Button button)
      Whether the button was released since the last check.
      Parameters:
      button - The button to read
      Returns:
      Whether the button was released since the last check.
    • button

      public BooleanEvent button(Switch2ProController.Button button, EventLoop loop)
      Constructs an event instance around this button's digital signal.
      Parameters:
      button - the button
      loop - the event loop instance to attach the event to.
      Returns:
      an event instance representing the button's digital signal attached to the given loop.
    • setLeds

      public void setLeds(int r, int g, int b)
      Set leds on the controller.
      Parameters:
      r - Red value from 0-255
      g - Green value from 0-255
      b - Blue value from 0-255
    • setRumble

      public void setRumble(GenericHID.RumbleType type, double value)
      Set the rumble output for the HID.
      Parameters:
      type - Which rumble value to set
      value - The normalized value (0 to 1) to set the rumble to
    • getTelemetryType

      public String getTelemetryType()
      Description copied from interface: TelemetryLoggable
      Gets the telemetry table type. Default is no specified table type (null). A mismatch in type during logging results in a reported warning, so this should always return the same value.
      Specified by:
      getTelemetryType in interface TelemetryLoggable
      Returns:
      Table type
    • logTo

      public void logTo(TelemetryTable table)
      Description copied from interface: TelemetryLoggable
      Logs the object to a TelemetryTable.
      Specified by:
      logTo in interface TelemetryLoggable
      Parameters:
      table - telemetry table