diff --git a/wpilibc/src/main/native/cpp/DriverStation.cpp b/wpilibc/src/main/native/cpp/DriverStation.cpp index ef8a586f98..fa5a1302d2 100644 --- a/wpilibc/src/main/native/cpp/DriverStation.cpp +++ b/wpilibc/src/main/native/cpp/DriverStation.cpp @@ -818,6 +818,7 @@ void DriverStation::GetData() { * This is only called once the first time GetInstance() is called */ DriverStation::DriverStation() { + HAL_Initialize(500, 0); m_waitForDataCounter = 0; m_joystickAxes = std::make_unique(kJoystickPorts); m_joystickPOVs = std::make_unique(kJoystickPorts); diff --git a/wpilibc/src/main/native/cpp/RobotBase.cpp b/wpilibc/src/main/native/cpp/RobotBase.cpp index ef1cb70603..a8cd9d6596 100644 --- a/wpilibc/src/main/native/cpp/RobotBase.cpp +++ b/wpilibc/src/main/native/cpp/RobotBase.cpp @@ -70,6 +70,11 @@ static void SetupCameraServerShared() { * boot so ensure that it runs. */ RobotBase::RobotBase() : m_ds(DriverStation::GetInstance()) { + if (!HAL_Initialize(500, 0)) { + wpi::errs() << "FATAL ERROR: HAL could not be initialized\n"; + wpi::errs().flush(); + std::terminate(); + } m_threadId = std::this_thread::get_id(); RobotState::SetImplementation(DriverStation::GetInstance()); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java index cd7c06fe28..7dd7cdf0eb 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DriverStation.java @@ -185,6 +185,7 @@ public class DriverStation implements RobotState.Interface { * variable. */ private DriverStation() { + HAL.initialize(500, 0); m_waitForDataCount = 0; m_waitForDataMutex = new ReentrantLock(); m_waitForDataCond = m_waitForDataMutex.newCondition(); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java index 55ddea32d6..c3aa313270 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/RobotBase.java @@ -83,6 +83,7 @@ public abstract class RobotBase implements AutoCloseable { * to put this code into it's own task that loads on boot so ensure that it runs. */ protected RobotBase() { + initializeHardwareConfiguration(); NetworkTableInstance inst = NetworkTableInstance.getDefault(); setupCameraServerShared(); inst.setNetworkIdentity("Robot"); @@ -219,7 +220,9 @@ public abstract class RobotBase implements AutoCloseable { */ @SuppressWarnings("PMD.UnusedFormalParameter") public static void main(String... args) { - initializeHardwareConfiguration(); + if (!HAL.initialize(500, 0)) { + throw new IllegalStateException("Failed to initialize. Terminating"); + } HAL.report(tResourceType.kResourceType_Language, tInstances.kLanguage_Java);