Make HAL_Initialize timeout configurable, makes result a bool, and makes Java an exception rather than assert. (#557)

This commit is contained in:
Thad House
2017-07-01 00:43:06 -07:00
committed by Peter Johnson
parent d34c844900
commit 2da26c0579
7 changed files with 66 additions and 50 deletions

View File

@@ -34,11 +34,11 @@ extern "C" {
/*
* Class: edu_wpi_first_wpilibj_hal_HAL
* Method: Initialize
* Signature: (I)I
* Signature: (Z)II
*/
JNIEXPORT jint JNICALL
Java_edu_wpi_first_wpilibj_hal_HAL_initialize(JNIEnv*, jclass, jint mode) {
return HAL_Initialize(mode);
JNIEXPORT jboolean JNICALL
Java_edu_wpi_first_wpilibj_hal_HAL_initialize(JNIEnv*, jclass, jint timeout, jint mode) {
return HAL_Initialize(timeout, mode);
}
/*

View File

@@ -168,8 +168,9 @@ public abstract class RobotBase {
* Common initialization for all robot programs.
*/
public static void initializeHardwareConfiguration() {
int rv = HAL.initialize(0);
assert rv == 1;
if (!HAL.initialize(500, 0)) {
throw new IllegalStateException("Failed to initialize. Terminating");
}
// Set some implementations so that the static methods work properly
Timer.SetImplementation(new HardwareTimer());

View File

@@ -16,7 +16,7 @@ import java.nio.ByteBuffer;
public class HAL extends JNIWrapper {
public static native void waitForDSData();
public static native int initialize(int mode);
public static native boolean initialize(int timeout, int mode);
public static native void observeUserProgramStarting();