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}