diff --git a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/CommandGroupBase.java b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/CommandGroupBase.java index e360980887..d3a35d4004 100644 --- a/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/CommandGroupBase.java +++ b/wpilibNewCommands/src/main/java/edu/wpi/first/wpilibj2/command/CommandGroupBase.java @@ -14,7 +14,7 @@ import java.util.WeakHashMap; * those commands are not also used independently, which can result in inconsistent command state * and unpredictable execution. */ -public abstract class CommandGroupBase extends CommandBase implements Command { +public abstract class CommandGroupBase extends CommandBase { private static final Set m_groupedCommands = Collections.newSetFromMap(new WeakHashMap<>()); diff --git a/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/Command.java b/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/Command.java index d03bf01e0e..5bb49a3800 100644 --- a/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/Command.java +++ b/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/Command.java @@ -353,7 +353,7 @@ public abstract class Command implements Sendable, AutoCloseable { * @return the requirements (as an {@link Enumeration Enumeration} of {@link Subsystem * Subsystems}) of this command */ - synchronized Enumeration getRequirements() { + synchronized Enumeration getRequirements() { return m_requirements.getElements(); } diff --git a/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/CommandGroup.java b/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/CommandGroup.java index ebdd1f8d18..5a4294a81a 100644 --- a/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/CommandGroup.java +++ b/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/CommandGroup.java @@ -81,7 +81,7 @@ public class CommandGroup extends Command { command.setParent(this); m_commands.addElement(new Entry(command, Entry.IN_SEQUENCE)); - for (Enumeration e = command.getRequirements(); e.hasMoreElements(); ) { + for (Enumeration e = command.getRequirements(); e.hasMoreElements(); ) { requires((Subsystem) e.nextElement()); } } @@ -119,7 +119,7 @@ public class CommandGroup extends Command { command.setParent(this); m_commands.addElement(new Entry(command, Entry.IN_SEQUENCE, timeout)); - for (Enumeration e = command.getRequirements(); e.hasMoreElements(); ) { + for (Enumeration e = command.getRequirements(); e.hasMoreElements(); ) { requires((Subsystem) e.nextElement()); } } @@ -152,7 +152,7 @@ public class CommandGroup extends Command { command.setParent(this); m_commands.addElement(new Entry(command, Entry.BRANCH_CHILD)); - for (Enumeration e = command.getRequirements(); e.hasMoreElements(); ) { + for (Enumeration e = command.getRequirements(); e.hasMoreElements(); ) { requires((Subsystem) e.nextElement()); } } @@ -193,7 +193,7 @@ public class CommandGroup extends Command { command.setParent(this); m_commands.addElement(new Entry(command, Entry.BRANCH_CHILD, timeout)); - for (Enumeration e = command.getRequirements(); e.hasMoreElements(); ) { + for (Enumeration e = command.getRequirements(); e.hasMoreElements(); ) { requires((Subsystem) e.nextElement()); } } @@ -283,7 +283,7 @@ public class CommandGroup extends Command { cmd.removed(); } - Enumeration children = m_children.elements(); + Enumeration children = m_children.elements(); while (children.hasMoreElements()) { Command cmd = ((Entry) children.nextElement()).m_command; cmd._cancel(); @@ -361,7 +361,7 @@ public class CommandGroup extends Command { for (int i = 0; i < m_children.size(); i++) { Command child = m_children.elementAt(i).m_command; - Enumeration requirements = command.getRequirements(); + Enumeration requirements = command.getRequirements(); while (requirements.hasMoreElements()) { Object requirement = requirements.nextElement(); diff --git a/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/ConditionalCommand.java b/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/ConditionalCommand.java index 1e188c2391..80c2903907 100644 --- a/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/ConditionalCommand.java +++ b/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/ConditionalCommand.java @@ -37,13 +37,13 @@ public abstract class ConditionalCommand extends Command { private void requireAll() { if (m_onTrue != null) { - for (Enumeration e = m_onTrue.getRequirements(); e.hasMoreElements(); ) { + for (Enumeration e = m_onTrue.getRequirements(); e.hasMoreElements(); ) { requires((Subsystem) e.nextElement()); } } if (m_onFalse != null) { - for (Enumeration e = m_onFalse.getRequirements(); e.hasMoreElements(); ) { + for (Enumeration e = m_onFalse.getRequirements(); e.hasMoreElements(); ) { requires((Subsystem) e.nextElement()); } } diff --git a/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/Scheduler.java b/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/Scheduler.java index 31519960a4..7d2c27fede 100644 --- a/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/Scheduler.java +++ b/wpilibOldCommands/src/main/java/edu/wpi/first/wpilibj/command/Scheduler.java @@ -144,7 +144,7 @@ public final class Scheduler implements Sendable, AutoCloseable { // Only add if not already in if (!m_commandTable.containsKey(command)) { // Check that the requirements can be had - Enumeration requirements = command.getRequirements(); + Enumeration requirements = command.getRequirements(); while (requirements.hasMoreElements()) { Subsystem lock = (Subsystem) requirements.nextElement(); if (lock.getCurrentCommand() != null && !lock.getCurrentCommand().isInterruptible()) { @@ -210,7 +210,7 @@ public final class Scheduler implements Sendable, AutoCloseable { } // Call every subsystem's periodic method - Enumeration subsystems = m_subsystems.getElements(); + Enumeration subsystems = m_subsystems.getElements(); while (subsystems.hasMoreElements()) { ((Subsystem) subsystems.nextElement()).periodic(); } @@ -233,7 +233,7 @@ public final class Scheduler implements Sendable, AutoCloseable { m_additions.removeAllElements(); // Add in the defaults - Enumeration locks = m_subsystems.getElements(); + Enumeration locks = m_subsystems.getElements(); while (locks.hasMoreElements()) { Subsystem lock = (Subsystem) locks.nextElement(); if (lock.getCurrentCommand() == null) { @@ -276,7 +276,7 @@ public final class Scheduler implements Sendable, AutoCloseable { } element.remove(); - Enumeration requirements = command.getRequirements(); + Enumeration requirements = command.getRequirements(); while (requirements.hasMoreElements()) { ((Subsystem) requirements.nextElement()).setCurrentCommand(null); } diff --git a/wpilibOldCommands/src/test/java/edu/wpi/first/wpilibj/MockHardwareExtension.java b/wpilibOldCommands/src/test/java/edu/wpi/first/wpilibj/MockHardwareExtension.java index cdac72849d..e70f182a3b 100644 --- a/wpilibOldCommands/src/test/java/edu/wpi/first/wpilibj/MockHardwareExtension.java +++ b/wpilibOldCommands/src/test/java/edu/wpi/first/wpilibj/MockHardwareExtension.java @@ -30,10 +30,9 @@ public final class MockHardwareExtension implements BeforeAllCallback { private void initializeHardware() { HAL.initialize(500, 0); - DriverStationSim dsSim = new DriverStationSim(); - dsSim.setDsAttached(true); - dsSim.setAutonomous(false); - dsSim.setEnabled(true); - dsSim.setTest(true); + DriverStationSim.setDsAttached(true); + DriverStationSim.setAutonomous(false); + DriverStationSim.setEnabled(true); + DriverStationSim.setTest(true); } } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java index fcc57b9f18..a179f1f870 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/ADXRS450_Gyro.java @@ -9,7 +9,6 @@ import edu.wpi.first.hal.HAL; import edu.wpi.first.hal.SimBoolean; import edu.wpi.first.hal.SimDevice; import edu.wpi.first.hal.SimDouble; -import edu.wpi.first.wpilibj.interfaces.Gyro; import edu.wpi.first.wpilibj.smartdashboard.SendableRegistry; import java.nio.ByteBuffer; import java.nio.ByteOrder; @@ -25,7 +24,7 @@ import java.nio.ByteOrder; * an ADXRS Gyro is supported. */ @SuppressWarnings({"TypeName", "AbbreviationAsWordInName", "PMD.UnusedPrivateField"}) -public class ADXRS450_Gyro extends GyroBase implements Gyro, PIDSource, Sendable, AutoCloseable { +public class ADXRS450_Gyro extends GyroBase { private static final double kSamplePeriod = 0.0005; private static final double kCalibrationSampleTime = 5.0; private static final double kDegreePerSecondPerLSB = 0.0125; diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogEncoder.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogEncoder.java index df7492d5d5..dbbe72bd27 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogEncoder.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogEncoder.java @@ -5,6 +5,7 @@ package edu.wpi.first.wpilibj; import edu.wpi.first.hal.SimDevice; +import edu.wpi.first.hal.SimDevice.Direction; import edu.wpi.first.hal.SimDouble; import edu.wpi.first.wpilibj.AnalogTriggerOutput.AnalogTriggerType; import edu.wpi.first.wpilibj.smartdashboard.SendableBuilder; @@ -39,7 +40,7 @@ public class AnalogEncoder implements Sendable, AutoCloseable { m_simDevice = SimDevice.create("AnalogEncoder", m_analogInput.getChannel()); if (m_simDevice != null) { - m_simPosition = m_simDevice.createDouble("Position", false, 0.0); + m_simPosition = m_simDevice.createDouble("Position", Direction.kInput, 0.0); } // Limits need to be 25% from each end diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogGyro.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogGyro.java index a51e6e895d..11958cbd2d 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogGyro.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/AnalogGyro.java @@ -9,7 +9,6 @@ import static edu.wpi.first.wpilibj.util.ErrorMessages.requireNonNullParam; import edu.wpi.first.hal.AnalogGyroJNI; import edu.wpi.first.hal.FRCNetComm.tResourceType; import edu.wpi.first.hal.HAL; -import edu.wpi.first.wpilibj.interfaces.Gyro; import edu.wpi.first.wpilibj.smartdashboard.SendableRegistry; /** @@ -21,7 +20,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SendableRegistry; * *

This class is for gyro sensors that connect to an analog input. */ -public class AnalogGyro extends GyroBase implements Gyro, PIDSource, Sendable, AutoCloseable { +public class AnalogGyro extends GyroBase { private static final double kDefaultVoltsPerDegreePerSecond = 0.007; protected AnalogInput m_analog; private boolean m_channelAllocated; diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalInput.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalInput.java index 6cbfc8d4ea..867688fa06 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalInput.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalInput.java @@ -17,7 +17,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SendableRegistry; * elsewhere will automatically allocate digital inputs and outputs as required. This class is only * for devices like switches etc. that aren't implemented anywhere else. */ -public class DigitalInput extends DigitalSource implements Sendable, AutoCloseable { +public class DigitalInput extends DigitalSource implements Sendable { private final int m_channel; private int m_handle; diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalOutput.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalOutput.java index b005dff264..4bf63ae86f 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalOutput.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/DigitalOutput.java @@ -15,7 +15,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SendableRegistry; * Class to write digital outputs. This class will write digital outputs. Other devices that are * implemented elsewhere will automatically allocate digital inputs and outputs as required. */ -public class DigitalOutput extends DigitalSource implements Sendable, AutoCloseable { +public class DigitalOutput extends DigitalSource implements Sendable { private static final int invalidPwmGenerator = 0; private int m_pwmGenerator = invalidPwmGenerator; diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PIDController.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PIDController.java index f11e3dbfc2..505ab6962e 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/PIDController.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/PIDController.java @@ -19,7 +19,7 @@ import edu.wpi.first.wpilibj.smartdashboard.SendableBuilder; * @deprecated Use {@link edu.wpi.first.wpilibj.controller.PIDController} instead. */ @Deprecated(since = "2020", forRemoval = true) -public class PIDController extends PIDBase implements Controller, AutoCloseable { +public class PIDController extends PIDBase implements Controller { Notifier m_controlLoop = new Notifier(this::calculate); /** diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/SpeedController.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/SpeedController.java index 50fd11cb27..f795ca77a0 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/SpeedController.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/SpeedController.java @@ -5,6 +5,7 @@ package edu.wpi.first.wpilibj; /** Interface for speed controlling devices. */ +@SuppressWarnings("removal") public interface SpeedController extends PIDOutput { /** * Common interface for setting the speed of a speed controller. diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Ultrasonic.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Ultrasonic.java index c1bfc46f04..81c1bcf534 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Ultrasonic.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Ultrasonic.java @@ -10,6 +10,7 @@ import edu.wpi.first.hal.FRCNetComm.tResourceType; import edu.wpi.first.hal.HAL; import edu.wpi.first.hal.SimBoolean; import edu.wpi.first.hal.SimDevice; +import edu.wpi.first.hal.SimDevice.Direction; import edu.wpi.first.hal.SimDouble; import edu.wpi.first.wpilibj.smartdashboard.SendableBuilder; import edu.wpi.first.wpilibj.smartdashboard.SendableRegistry; @@ -93,8 +94,8 @@ public class Ultrasonic implements PIDSource, Sendable, AutoCloseable { private synchronized void initialize() { m_simDevice = SimDevice.create("Ultrasonic", m_echoChannel.getChannel()); if (m_simDevice != null) { - m_simRangeValid = m_simDevice.createBoolean("Range Valid", false, true); - m_simRange = m_simDevice.createDouble("Range (in)", false, 0.0); + m_simRangeValid = m_simDevice.createBoolean("Range Valid", Direction.kInput, true); + m_simRange = m_simDevice.createDouble("Range (in)", Direction.kInput, 0.0); m_pingChannel.setSimDevice(m_simDevice); m_echoChannel.setSimDevice(m_simDevice); } diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Watchdog.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Watchdog.java index 3663669d30..80dabd068d 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/Watchdog.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/Watchdog.java @@ -197,6 +197,7 @@ public class Watchdog implements Closeable, Comparable { m_suppressTimeoutMessage = suppress; } + @SuppressWarnings("resource") private static void updateAlarm() { if (m_watchdogs.size() == 0) { NotifierJNI.cancelNotifierAlarm(m_notifier); diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/CallbackStore.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/CallbackStore.java index 7710af3685..813cc6d62b 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/CallbackStore.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/CallbackStore.java @@ -82,7 +82,7 @@ public class CallbackStore implements AutoCloseable { m_cancelType = -1; } - @SuppressWarnings("NoFinalizer") + @SuppressWarnings({"NoFinalizer", "deprecation"}) @Override protected void finalize() throws Throwable { try { diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DriverStationSim.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DriverStationSim.java index fac5dcbf2e..ab6a427a4f 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DriverStationSim.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/DriverStationSim.java @@ -11,7 +11,11 @@ import edu.wpi.first.wpilibj.DriverStation; /** Class to control a simulated driver station. */ @SuppressWarnings({"PMD.UseUtilityClass", "PMD.GodClass", "PMD.ExcessivePublicCount"}) -public class DriverStationSim { +public final class DriverStationSim { + private DriverStationSim() { + throw new UnsupportedOperationException("This is a utility class!"); + } + /** * Register a callback on whether the DS is enabled. * diff --git a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/Mechanism2D.java b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/Mechanism2D.java index 79de13dfdf..5d722a5f1a 100644 --- a/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/Mechanism2D.java +++ b/wpilibj/src/main/java/edu/wpi/first/wpilibj/simulation/Mechanism2D.java @@ -5,6 +5,7 @@ package edu.wpi.first.wpilibj.simulation; import edu.wpi.first.hal.SimDevice; +import edu.wpi.first.hal.SimDevice.Direction; import edu.wpi.first.hal.SimDouble; import java.util.HashMap; import java.util.Map; @@ -23,7 +24,8 @@ public class Mechanism2D { ligamentPath = ligamentPath + "/angle"; if (m_device != null) { if (!m_createdItems.containsKey(ligamentPath)) { - m_createdItems.put(ligamentPath, m_device.createDouble(ligamentPath, false, angle)); + m_createdItems.put( + ligamentPath, m_device.createDouble(ligamentPath, Direction.kInput, angle)); } m_createdItems.get(ligamentPath).set(angle); } @@ -39,7 +41,8 @@ public class Mechanism2D { ligamentPath = ligamentPath + "/length"; if (m_device != null) { if (!m_createdItems.containsKey(ligamentPath)) { - m_createdItems.put(ligamentPath, m_device.createDouble(ligamentPath, false, length)); + m_createdItems.put( + ligamentPath, m_device.createDouble(ligamentPath, Direction.kInput, length)); } m_createdItems.get(ligamentPath).set(length); } diff --git a/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/ElevatorSimTest.java b/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/ElevatorSimTest.java index 1903c852f6..0b954415a5 100644 --- a/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/ElevatorSimTest.java +++ b/wpilibj/src/test/java/edu/wpi/first/wpilibj/simulation/ElevatorSimTest.java @@ -19,7 +19,7 @@ import org.junit.jupiter.api.Test; public class ElevatorSimTest { @Test - @SuppressWarnings("LocalVariableName") + @SuppressWarnings({"LocalVariableName", "resource"}) public void testStateSpaceSimWithElevator() { var controller = new PIDController(10, 0, 0); diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/pacgoat/subsystems/Collector.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/pacgoat/subsystems/Collector.java index 6dfdc5594b..5dd83e6373 100644 --- a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/pacgoat/subsystems/Collector.java +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/examples/pacgoat/subsystems/Collector.java @@ -14,7 +14,7 @@ import edu.wpi.first.wpilibj.command.Subsystem; * The Collector subsystem has one motor for the rollers, a limit switch for ball detection, a * piston for opening and closing the claw, and a reed switch to check if the piston is open. */ -public class Collector extends Subsystem implements AutoCloseable { +public class Collector extends Subsystem { // Constants for some useful speeds public static final double kForward = 1; public static final double kStop = 0;