package edu.wpi.first.wpilibj.hal;
import jaci.openrio.toast.core.loader.simulation.DriverStationCommunications;
import jaci.openrio.toast.core.loader.simulation.SimulationData;
import jaci.openrio.toast.core.loader.simulation.jni.SimulatedJoystick;
import jaci.openrio.toast.lib.state.RobotState;
import java.nio.ByteBuffer;
@SuppressWarnings({"AbbreviationAsWordInName", "MethodName"})
public class HAL extends JNIWrapper {
public static void waitForDSData();
public static int initialize(int mode);
public static void observeUserProgramStarting() { }
public static void observeUserProgramDisabled() { }
public static void observeUserProgramAutonomous() { }
public static void observeUserProgramTeleop() { }
public static void observeUserProgramTest() { }
public static void report(int resource, int instanceNumber) {
report(resource, instanceNumber, 0, "");
}
public static void report(int resource, int instanceNumber, int context) {
report(resource, instanceNumber, context, "");
}
/**
* Report the usage of a resource of interest. <br>
*
* <p>Original signature: <code>uint32_t report(tResourceType, uint8_t, uint8_t, const
* char*)</code>
*
* @param resource one of the values in the tResourceType above (max value 51). <br>
* @param instanceNumber an index that identifies the resource instance. <br>
* @param context an optional additional context number for some cases (such as module
* number). Set to 0 to omit. <br>
* @param feature a string to be included describing features in use on a specific
* resource. Setting the same resource more than once allows you to change
* the feature string.
*/
public static int report(int resource, int instanceNumber, int context, String feature) {
return 0;
}
private static int nativeGetControlWord() {
return 0; // There is a TODO here, base this off robot state
}
@SuppressWarnings("JavadocMethod")
public static void getControlWord(ControlWord controlWord) {
RobotState s = SimulationData.currentState;
controlWord.update(s != RobotState.DISABLED, s == RobotState.AUTONOMOUS, s == RobotState.TEST,
false, false, true);
}
private static int nativeGetAllianceStation() {
return SimulationData.alliance_station;
}
@SuppressWarnings("JavadocMethod")
public static AllianceStationID getAllianceStation() {
switch (nativeGetAllianceStation()) {
case 0:
return AllianceStationID.Red1;
case 1:
return AllianceStationID.Red2;
case 2:
return AllianceStationID.Red3;
case 3:
return AllianceStationID.Blue1;
case 4:
return AllianceStationID.Blue2;
case 5:
return AllianceStationID.Blue3;
default:
return null;
}
}
public static int kMaxJoystickAxes = 12;
public static int kMaxJoystickPOVs = 12;
public static short getJoystickAxes(byte joystickNum, float[] axesArray) {
}
public static short getJoystickPOVs(byte joystickNum, short[] povsArray) {
}
public static int getJoystickButtons(byte joystickNum, ByteBuffer count) {
if (DriverStationCommunications.connected) {
count.put(0, DriverStationCommunications.joybuttoncount[joystickNum]);
return DriverStationCommunications.joybuttons[joystickNum];
}
SimulatedJoystick joystick = SimulationData.getJoystick(joystickNum);
count.put(0, (byte) joystick.getButtons().length);
return joystick.encodeButtons();
}
public static int setJoystickOutputs(byte joystickNum, int outputs, short leftRumble, short rightRumble) {
return 0;
}
public static int getJoystickIsXbox(byte joystickNum) {
}
public static int getJoystickType(byte joystickNum) {
}
public static String getJoystickName(byte joystickNum) {
}
public static int getJoystickAxisType(byte joystickNum, byte axis) {
}
public static double getMatchTime() {
return 120;
}
public static boolean getSystemActive() {
return true;
}
public static boolean getBrownedOut() {
return false;
}
public static int setErrorData(String error) {
return 0;
}
public static int sendError(boolean isError, int errorCode, boolean isLVCode,
String details, String location, String callStack,
boolean printMsg) {
return 0;
}
}