mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-22 01:11:42 +00:00
[command] Add simulationPeriodic method to Subsystem (#2577)
This method is run periodically during simulation, after periodic().
This commit is contained in:
@@ -22,6 +22,7 @@ import edu.wpi.first.hal.FRCNetComm.tInstances;
|
||||
import edu.wpi.first.hal.FRCNetComm.tResourceType;
|
||||
import edu.wpi.first.hal.HAL;
|
||||
import edu.wpi.first.networktables.NetworkTableEntry;
|
||||
import edu.wpi.first.wpilibj.RobotBase;
|
||||
import edu.wpi.first.wpilibj.RobotState;
|
||||
import edu.wpi.first.wpilibj.Sendable;
|
||||
import edu.wpi.first.wpilibj.TimedRobot;
|
||||
@@ -253,6 +254,9 @@ public final class CommandScheduler implements Sendable, AutoCloseable {
|
||||
//Run the periodic method of all registered subsystems.
|
||||
for (Subsystem subsystem : m_subsystems.keySet()) {
|
||||
subsystem.periodic();
|
||||
if (RobotBase.isSimulation()) {
|
||||
subsystem.simulationPeriodic();
|
||||
}
|
||||
m_watchdog.addEpoch(subsystem.getClass().getSimpleName() + ".periodic()");
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*----------------------------------------------------------------------------*/
|
||||
/* Copyright (c) 2018-2019 FIRST. All Rights Reserved. */
|
||||
/* Copyright (c) 2018-2020 FIRST. All Rights Reserved. */
|
||||
/* Open Source Software - may be modified and shared by FRC teams. The code */
|
||||
/* must be accompanied by the FIRST BSD license file in the root directory of */
|
||||
/* the project. */
|
||||
@@ -33,6 +33,14 @@ public interface Subsystem {
|
||||
default void periodic() {
|
||||
}
|
||||
|
||||
/**
|
||||
* This method is called periodically by the {@link CommandScheduler}. Useful for updating
|
||||
* subsystem-specific state that needs to be maintained for simulations, such as for updating
|
||||
* {@link edu.wpi.first.wpilibj.simulation} classes and setting simulated sensor readings.
|
||||
*/
|
||||
default void simulationPeriodic() {
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the default {@link Command} of the subsystem. The default command will be
|
||||
* automatically scheduled when no other commands are scheduled that require the subsystem.
|
||||
|
||||
Reference in New Issue
Block a user