Merge DeferredBlockMulti

This commit is contained in:
Michael Mikovsky
2025-07-13 19:41:05 -06:00
parent 99bb538bcb
commit 9fd98bce24
5 changed files with 32 additions and 33 deletions
-2
View File
@@ -20,7 +20,6 @@ import edu.wpi.first.wpilibj2.command.CommandScheduler;
import frc4388.robot.constants.BuildConstants;
import frc4388.robot.constants.Constants.SimConstants;
import frc4388.utility.DeferredBlock;
import frc4388.utility.DeferredBlockMulti;
import frc4388.utility.Trim;
import frc4388.utility.compute.RobotTime;
import frc4388.utility.status.FaultReporter;
@@ -95,7 +94,6 @@ public class Robot extends LoggedRobot {
@Override
public void disabledExit() {
DeferredBlock.execute();
DeferredBlockMulti.execute();
}
/**
@@ -60,7 +60,6 @@ import frc4388.robot.subsystems.SwerveDrive;
// Utilites
import frc4388.utility.DeferredBlock;
import frc4388.utility.DeferredBlockMulti;
import frc4388.utility.compute.TimesNegativeOne;
import frc4388.utility.compute.ReefPositionHelper.Side;
@@ -590,12 +589,14 @@ public class RobotContainer {
configureButtonBindings();
configureVirtualButtonBindings();
new DeferredBlock(() -> { // Called on first robot enable
DeferredBlock.addBlock(() -> { // Called on first robot enable
m_robotSwerveDrive.resetGyro();
});
new DeferredBlockMulti(() -> { // Called on every robot enable
}, false);
DeferredBlock.addBlock(() -> { // Called on every robot enable
TimesNegativeOne.update();
});
}, true);
DriverStation.silenceJoystickConnectionWarning(true);
// CameraServer.startAutomaticCapture();
@@ -34,7 +34,7 @@ public class DiffDrive extends SubsystemBase implements Queryable {
private TalonFX m_leftBackMotor;
private TalonFX m_rightBackMotor;
private DifferentialDrive m_driveTrain;
private Pigeon2 m_gyro;
// private Pigeon2 m_gyro;
/**
* Add your docs here.
@@ -51,7 +51,7 @@ public class DiffDrive extends SubsystemBase implements Queryable {
m_leftBackMotor .setControl(new Follower(m_leftFrontMotor.getDeviceID(), false));
m_rightBackMotor.setControl(new Follower(m_rightBackMotor.getDeviceID(), false));
m_driveTrain = driveTrain;
m_gyro = gyro;
// m_gyro = gyro;
}
@Override
@@ -2,22 +2,40 @@ package frc4388.utility;
import java.util.ArrayList;
// Class for running code snippets whenever the robot is enabled.
public class DeferredBlock {
private static ArrayList<Runnable> m_blocks = new ArrayList<>();
private static ArrayList<Runnable> m_blocks_norerun = new ArrayList<>();
private static ArrayList<Runnable> m_blocks_rerun = new ArrayList<>();
private static boolean m_hasRun = false;
public DeferredBlock(Runnable block) {
m_blocks.add(block);
public static void addBlock(Runnable block) {
addBlock(block, false);
}
public static void addBlock(Runnable block, boolean rerun) {
if(rerun) {
m_blocks_rerun.add(block);
} else {
m_blocks_norerun.add(block);
}
}
public static void execute() {
if (m_hasRun) return;
for (Runnable block : m_blocks) {
// Run blocks that run multiple times.
for (Runnable block : m_blocks_rerun) {
block.run();
}
m_blocks.clear(); // for garbage collection
// Run blocks that only run once
if (m_hasRun) return;
for (Runnable block : m_blocks_norerun) {
block.run();
}
m_blocks_norerun.clear(); // for garbage collection
m_hasRun = true;
}
}
@@ -1,18 +0,0 @@
package frc4388.utility;
import java.util.ArrayList;
public class DeferredBlockMulti {
private static ArrayList<Runnable> m_blocks = new ArrayList<>();
public DeferredBlockMulti(Runnable block) {
m_blocks.add(block);
}
public static void execute() {
for (Runnable block : m_blocks) {
block.run();
}
}
}