From 63a82dccb2b606a96e7428b5d396cd9e73cfe0b9 Mon Sep 17 00:00:00 2001 From: Thad House Date: Thu, 7 May 2026 09:58:14 -0700 Subject: [PATCH] [wpilib] Don't do wait on init for ExHub in sim (#8865) Closes #8859 --- .../cpp/hardware/expansionhub/ExpansionHub.cpp | 13 ++++++++----- .../wpilib/hardware/expansionhub/ExpansionHub.java | 13 ++++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/wpilibc/src/main/native/cpp/hardware/expansionhub/ExpansionHub.cpp b/wpilibc/src/main/native/cpp/hardware/expansionhub/ExpansionHub.cpp index a2c5fed690..cb3d42bf17 100644 --- a/wpilibc/src/main/native/cpp/hardware/expansionhub/ExpansionHub.cpp +++ b/wpilibc/src/main/native/cpp/hardware/expansionhub/ExpansionHub.cpp @@ -8,6 +8,7 @@ #include #include +#include "wpi/framework/RobotBase.hpp" #include "wpi/hal/UsageReporting.hpp" #include "wpi/hardware/expansionhub/ExpansionHubCRServo.hpp" #include "wpi/hardware/expansionhub/ExpansionHubMotor.hpp" @@ -33,12 +34,14 @@ class ExpansionHub::DataStore { // Wait up to half a second for connected to come up, using a poll loop to // ensure we don't block. - auto startTime = Timer::GetMonotonicTimestamp(); - while (Timer::GetMonotonicTimestamp() - startTime < 0.5_s) { - if (m_hubConnectedSubscriber.Get(false)) { - break; + if constexpr (RobotBase::IsReal()) { + auto startTime = Timer::GetMonotonicTimestamp(); + while (Timer::GetMonotonicTimestamp() - startTime < 0.5_s) { + if (m_hubConnectedSubscriber.Get(false)) { + break; + } + std::this_thread::sleep_for(std::chrono::milliseconds(10)); } - std::this_thread::sleep_for(std::chrono::milliseconds(10)); } } diff --git a/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHub.java b/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHub.java index 4883d756cf..f7e931aa26 100644 --- a/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHub.java +++ b/wpilibj/src/main/java/org/wpilib/hardware/expansionhub/ExpansionHub.java @@ -4,6 +4,7 @@ package org.wpilib.hardware.expansionhub; +import org.wpilib.framework.RobotBase; import org.wpilib.hardware.hal.HAL; import org.wpilib.networktables.BooleanSubscriber; import org.wpilib.networktables.NetworkTableInstance; @@ -32,12 +33,14 @@ public class ExpansionHub implements AutoCloseable { // Wait up to half a second for connected to come up, using a poll loop to // ensure we don't block. - double startTime = Timer.getMonotonicTimestamp(); - while (Timer.getMonotonicTimestamp() - startTime < 0.5) { - if (m_hubConnectedSubscriber.get(false)) { - break; + if (RobotBase.isReal()) { + double startTime = Timer.getMonotonicTimestamp(); + while (Timer.getMonotonicTimestamp() - startTime < 0.5) { + if (m_hubConnectedSubscriber.get(false)) { + break; + } + Timer.delay(0.01); } - Timer.delay(0.01); } }