mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-23 01:21:42 +00:00
[hal] Move registerSimPeriodic functions to HAL package (#3211)
This enables the static lists to be private.
This commit is contained in:
@@ -28,7 +28,36 @@ public final class HAL extends JNIWrapper {
|
||||
|
||||
private static native void simPeriodicBeforeNative();
|
||||
|
||||
public static final List<Runnable> s_simPeriodicBefore = new ArrayList<>();
|
||||
private static final List<Runnable> s_simPeriodicBefore = new ArrayList<>();
|
||||
|
||||
public static class SimPeriodicBeforeCallback implements AutoCloseable {
|
||||
private SimPeriodicBeforeCallback(Runnable r) {
|
||||
m_run = r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
synchronized (s_simPeriodicBefore) {
|
||||
s_simPeriodicBefore.remove(m_run);
|
||||
}
|
||||
}
|
||||
|
||||
private final Runnable m_run;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a callback to be run by IterativeRobotBase prior to the user's simulationPeriodic
|
||||
* code.
|
||||
*
|
||||
* @param r runnable
|
||||
* @return Callback object (must be retained for callback to stay active).
|
||||
*/
|
||||
public static SimPeriodicBeforeCallback registerSimPeriodicBeforeCallback(Runnable r) {
|
||||
synchronized (s_simPeriodicBefore) {
|
||||
s_simPeriodicBefore.add(r);
|
||||
}
|
||||
return new SimPeriodicBeforeCallback(r);
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs SimPeriodicBefore callbacks. IterativeRobotBase calls this prior to the user's
|
||||
@@ -45,7 +74,35 @@ public final class HAL extends JNIWrapper {
|
||||
|
||||
private static native void simPeriodicAfterNative();
|
||||
|
||||
public static final List<Runnable> s_simPeriodicAfter = new ArrayList<>();
|
||||
private static final List<Runnable> s_simPeriodicAfter = new ArrayList<>();
|
||||
|
||||
public static class SimPeriodicAfterCallback implements AutoCloseable {
|
||||
private SimPeriodicAfterCallback(Runnable r) {
|
||||
m_run = r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
synchronized (s_simPeriodicAfter) {
|
||||
s_simPeriodicAfter.remove(m_run);
|
||||
}
|
||||
}
|
||||
|
||||
private final Runnable m_run;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a callback to be run by IterativeRobotBase after the user's simulationPeriodic code.
|
||||
*
|
||||
* @param r runnable
|
||||
* @return Callback object (must be retained for callback to stay active).
|
||||
*/
|
||||
public static SimPeriodicAfterCallback registerSimPeriodicAfterCallback(Runnable r) {
|
||||
synchronized (s_simPeriodicAfter) {
|
||||
s_simPeriodicAfter.add(r);
|
||||
}
|
||||
return new SimPeriodicAfterCallback(r);
|
||||
}
|
||||
|
||||
/**
|
||||
* Runs SimPeriodicAfter callbacks. IterativeRobotBase calls this after the user's
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
|
||||
package edu.wpi.first.hal.simulation;
|
||||
|
||||
import edu.wpi.first.hal.HAL;
|
||||
import edu.wpi.first.hal.JNIWrapper;
|
||||
|
||||
public class SimulatorJNI extends JNIWrapper {
|
||||
@@ -29,48 +28,4 @@ public class SimulatorJNI extends JNIWrapper {
|
||||
public static native void stepTimingAsync(long delta);
|
||||
|
||||
public static native void resetHandles();
|
||||
|
||||
public static class SimPeriodicBeforeCallback implements AutoCloseable {
|
||||
private SimPeriodicBeforeCallback(Runnable r) {
|
||||
m_run = r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
synchronized (HAL.s_simPeriodicBefore) {
|
||||
HAL.s_simPeriodicBefore.remove(m_run);
|
||||
}
|
||||
}
|
||||
|
||||
private Runnable m_run;
|
||||
}
|
||||
|
||||
public static SimPeriodicBeforeCallback registerSimPeriodicBeforeCallback(Runnable r) {
|
||||
synchronized (HAL.s_simPeriodicBefore) {
|
||||
HAL.s_simPeriodicBefore.add(r);
|
||||
}
|
||||
return new SimPeriodicBeforeCallback(r);
|
||||
}
|
||||
|
||||
public static class SimPeriodicAfterCallback implements AutoCloseable {
|
||||
private SimPeriodicAfterCallback(Runnable r) {
|
||||
m_run = r;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void close() {
|
||||
synchronized (HAL.s_simPeriodicAfter) {
|
||||
HAL.s_simPeriodicAfter.remove(m_run);
|
||||
}
|
||||
}
|
||||
|
||||
private Runnable m_run;
|
||||
}
|
||||
|
||||
public static SimPeriodicAfterCallback registerSimPeriodicAfterCallback(Runnable r) {
|
||||
synchronized (HAL.s_simPeriodicAfter) {
|
||||
HAL.s_simPeriodicAfter.add(r);
|
||||
}
|
||||
return new SimPeriodicAfterCallback(r);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user