001// Copyright (c) FIRST and other WPILib contributors.
002// Open Source Software; you can modify and/or share it under the terms of
003// the WPILib BSD license file in the root directory of this project.
004
005package edu.wpi.first.hal;
006
007/**
008 * Relay Output HAL JNI Functions.
009 *
010 * @see "hal/Relay.h"
011 */
012public class RelayJNI extends DIOJNI {
013  /**
014   * Initializes a relay.
015   *
016   * <p>Note this call will only initialize either the forward or reverse port of the relay. If you
017   * need both, you will need to initialize 2 relays.
018   *
019   * @param halPortHandle the port handle to initialize
020   * @param forward true for the forward port, false for the reverse port
021   * @return the created relay handle
022   * @see "HAL_InitializeRelayPort"
023   */
024  public static native int initializeRelayPort(int halPortHandle, boolean forward);
025
026  /**
027   * Frees a relay port.
028   *
029   * @param relayPortHandle the relay handle
030   * @see "HAL_FreeRelayPort"
031   */
032  public static native void freeRelayPort(int relayPortHandle);
033
034  /**
035   * Checks if a relay channel is valid.
036   *
037   * @param channel the channel to check
038   * @return true if the channel is valid, otherwise false
039   * @see "HAL_CheckRelayChannel"
040   */
041  public static native boolean checkRelayChannel(int channel);
042
043  /**
044   * Sets the state of a relay output.
045   *
046   * @param relayPortHandle the relay handle
047   * @param on true for on, false for off
048   * @see "HAL_SetRelay"
049   */
050  public static native void setRelay(int relayPortHandle, boolean on);
051
052  /**
053   * Gets the current state of the relay channel.
054   *
055   * @param relayPortHandle the relay handle
056   * @return true for on, false for off
057   * @see "HAL_GetRelay"
058   */
059  public static native boolean getRelay(int relayPortHandle);
060
061  /** Utility class. */
062  private RelayJNI() {}
063}