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 org.wpilib.hardware.hal.simulation;
006
007import java.util.function.BiConsumer;
008import org.wpilib.hardware.hal.JNIWrapper;
009import org.wpilib.hardware.hal.OpModeOption;
010import org.wpilib.hardware.hal.RobotMode;
011
012/** JNI for Driver Station data. */
013public class DriverStationDataJNI extends JNIWrapper {
014  public static native int registerEnabledCallback(NotifyCallback callback, boolean initialNotify);
015
016  public static native void cancelEnabledCallback(int uid);
017
018  public static native boolean getEnabled();
019
020  public static native void setEnabled(boolean enabled);
021
022  public static native int registerRobotModeCallback(
023      NotifyCallback callback, boolean initialNotify);
024
025  public static native void cancelRobotModeCallback(int uid);
026
027  private static native int nativeGetRobotMode();
028
029  public static RobotMode getRobotMode() {
030    return RobotMode.fromInt(nativeGetRobotMode());
031  }
032
033  private static native void nativeSetRobotMode(int mode);
034
035  public static void setRobotMode(RobotMode mode) {
036    nativeSetRobotMode(mode.getValue());
037  }
038
039  public static native int registerEStopCallback(NotifyCallback callback, boolean initialNotify);
040
041  public static native void cancelEStopCallback(int uid);
042
043  public static native boolean getEStop();
044
045  public static native void setEStop(boolean eStop);
046
047  public static native int registerFmsAttachedCallback(
048      NotifyCallback callback, boolean initialNotify);
049
050  public static native void cancelFmsAttachedCallback(int uid);
051
052  public static native boolean getFmsAttached();
053
054  public static native void setFmsAttached(boolean fmsAttached);
055
056  public static native int registerDsAttachedCallback(
057      NotifyCallback callback, boolean initialNotify);
058
059  public static native void cancelDsAttachedCallback(int uid);
060
061  public static native boolean getDsAttached();
062
063  public static native void setDsAttached(boolean dsAttached);
064
065  public static native int registerAllianceStationIdCallback(
066      NotifyCallback callback, boolean initialNotify);
067
068  public static native void cancelAllianceStationIdCallback(int uid);
069
070  public static native int getAllianceStationId();
071
072  public static native void setAllianceStationId(int allianceStationId);
073
074  public static native int registerMatchTimeCallback(
075      NotifyCallback callback, boolean initialNotify);
076
077  public static native void cancelMatchTimeCallback(int uid);
078
079  public static native double getMatchTime();
080
081  public static native void setMatchTime(double matchTime);
082
083  public static native int registerOpModeCallback(NotifyCallback callback, boolean initialNotify);
084
085  public static native void cancelOpModeCallback(int uid);
086
087  public static native long getOpMode();
088
089  public static native void setOpMode(long opMode);
090
091  public static native int registerOpModeOptionsCallback(
092      BiConsumer<String, OpModeOption[]> callback, boolean initialNotify);
093
094  public static native void cancelOpModeOptionsCallback(int uid);
095
096  public static native OpModeOption[] getOpModeOptions();
097
098  public static native void setJoystickAxes(
099      byte joystickNum, float[] axesArray, short availableAxes);
100
101  public static native void setJoystickPOVs(
102      byte joystickNum, byte[] povsArray, short availablePovs);
103
104  public static native void setJoystickButtons(
105      byte joystickNum, long buttons, long availableButtons);
106
107  public static native int getJoystickLeds(int stick);
108
109  public static native int getJoystickRumble(int stick, int rumbleNum);
110
111  public static native void setMatchInfo(
112      String eventName, int matchNumber, int replayNumber, int matchType);
113
114  public static native void setGameData(String gameData);
115
116  public static native void registerAllCallbacks(NotifyCallback callback, boolean initialNotify);
117
118  public static native void notifyNewData();
119
120  public static native void setSendError(boolean shouldSend);
121
122  public static native void setSendConsoleLine(boolean shouldSend);
123
124  public static native void setJoystickButton(int stick, int button, boolean state);
125
126  public static native void setJoystickAxis(int stick, int axis, double value);
127
128  public static native void setJoystickPOV(int stick, int pov, byte value);
129
130  public static native void setJoystickButtonsValue(int stick, long buttons);
131
132  public static native void setJoystickAxesAvailable(int stick, int available);
133
134  public static native void setJoystickPOVsAvailable(int stick, int available);
135
136  public static native void setJoystickButtonsAvailable(int stick, long available);
137
138  public static native void setTouchpadCounts(int stick, int touchpadCount, int[] fingerCounts);
139
140  public static native void setTouchpadFinger(
141      int stick, int touchpadIndex, int fingerIndex, boolean down, float x, float y);
142
143  public static native void setJoystickIsGamepad(int stick, boolean isGamepad);
144
145  public static native void setJoystickGamepadType(int stick, int type);
146
147  public static native void setJoystickName(int stick, String name);
148
149  public static native void setJoystickSupportedOutputs(int stick, int supportedOutputs);
150
151  public static native void setEventName(String name);
152
153  public static native void setMatchType(int type);
154
155  public static native void setMatchNumber(int matchNumber);
156
157  public static native void setReplayNumber(int replayNumber);
158
159  public static native void resetData();
160
161  /** Utility class. */
162  private DriverStationDataJNI() {}
163}