From c646ea4dd0cd44fa1371019108577e22bdfb2ed8 Mon Sep 17 00:00:00 2001 From: spderman3333 Date: Fri, 10 Oct 2025 17:27:52 -0700 Subject: [PATCH 1/6] Fixed the disable method in MotorSubystem (now called PositionalMotorSubsyem for clarity). --- .idea/discord.xml | 14 +++++++++ .../com/team2813/lib2813/control/Motor.java | 5 ++++ .../control/motors/SparkMaxWrapper.java | 10 +++++++ .../control/motors/TalonFXWrapper.java | 17 +++++++++++ ...tem.java => PositionalMotorSubsystem.java} | 30 +++++++++---------- 5 files changed, 61 insertions(+), 15 deletions(-) create mode 100644 .idea/discord.xml rename lib/src/main/java/com/team2813/lib2813/subsystems/{MotorSubsystem.java => PositionalMotorSubsystem.java} (90%) diff --git a/.idea/discord.xml b/.idea/discord.xml new file mode 100644 index 00000000..912db825 --- /dev/null +++ b/.idea/discord.xml @@ -0,0 +1,14 @@ + + + + + \ No newline at end of file diff --git a/lib/src/main/java/com/team2813/lib2813/control/Motor.java b/lib/src/main/java/com/team2813/lib2813/control/Motor.java index 6c92ed0b..c73bca6f 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/Motor.java +++ b/lib/src/main/java/com/team2813/lib2813/control/Motor.java @@ -29,4 +29,9 @@ public interface Motor { * @return The current applied current */ Current getAppliedCurrent(); + + /** + * Stops the motor. + */ + void disable(); } diff --git a/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java b/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java index 4ddc5b00..073594e8 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java +++ b/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java @@ -20,6 +20,7 @@ import java.util.ArrayList; import java.util.List; +@Deprecated(forRemoval = true) // We likely wont use sparkmax's ever again. public class SparkMaxWrapper implements PIDMotor { private final List followers = new ArrayList<>(); private final SparkBase motor; @@ -81,6 +82,15 @@ public Current getAppliedCurrent() { return Units.Amps.of(motor.getOutputCurrent()); } + /** + * WARNING: due to the end of support of SparkMaxWrapper, there is no evidence that this method will work. + * Proceed with caution! + */ + @Override + public void disable() { + motor.disable(); + } + @Override public void setPosition(double position) { encoder.setPosition(position); diff --git a/lib/src/main/java/com/team2813/lib2813/control/motors/TalonFXWrapper.java b/lib/src/main/java/com/team2813/lib2813/control/motors/TalonFXWrapper.java index 49f05a12..08c10542 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/motors/TalonFXWrapper.java +++ b/lib/src/main/java/com/team2813/lib2813/control/motors/TalonFXWrapper.java @@ -162,10 +162,27 @@ public TalonFX motor() { return motor; } + /** + * Sets the behavior the motor should exhibit upon receiving a request to stop: "disable()". + * + * @param mode + */ public void setNeutralMode(NeutralModeValue mode) { motor.setNeutralMode(mode); } + /** + * Sends a disable command to the motor, placing it in its neutral value. + * @see TalonFXWrapper#setNeutralMode(NeutralModeValue) + */ + @Override + public void disable() { + motor.disable(); + } + @Override public void configPIDF(int slot, double p, double i, double d, double f) { SlotConfigs conf = new SlotConfigs(); diff --git a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java b/lib/src/main/java/com/team2813/lib2813/subsystems/PositionalMotorSubsystem.java similarity index 90% rename from lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java rename to lib/src/main/java/com/team2813/lib2813/subsystems/PositionalMotorSubsystem.java index c8052804..8e050eb1 100644 --- a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java +++ b/lib/src/main/java/com/team2813/lib2813/subsystems/PositionalMotorSubsystem.java @@ -28,7 +28,7 @@ * * @param the type of the {@link Supplier} used to specify setpoints. */ -public abstract class MotorSubsystem> extends SubsystemBase +public abstract class PositionalMotorSubsystem> extends SubsystemBase implements Motor, Encoder { protected final Motor motor; @@ -44,7 +44,7 @@ public abstract class MotorSubsystem> extends Subsyste private boolean isEnabled; - protected MotorSubsystem(MotorSubsystemConfiguration builder) { + protected PositionalMotorSubsystem(PositionalMotorSubsystemConfiguration builder) { this.controller = builder.controller; this.controller.setTolerance(builder.acceptableError); acceptableError = builder.acceptableError; @@ -136,7 +136,7 @@ public final void enable() { */ public final void disable() { isEnabled = false; - motor.set(controlMode, 0); + motor.disable(); } /** @@ -248,8 +248,8 @@ public void periodic() { } } - /** A configuration for a MotorSubsystem */ - public static class MotorSubsystemConfiguration { + /** A configuration for a PositionalMotorSubsystem */ + public static class PositionalMotorSubsystemConfiguration { /** The default acceptable position error. */ public static final double DEFAULT_ERROR = 5.0; @@ -273,7 +273,7 @@ public static class MotorSubsystemConfiguration { * @param motor the motor to control * @param encoder the encoder providing feedback */ - public MotorSubsystemConfiguration(Motor motor, Encoder encoder) { + public PositionalMotorSubsystemConfiguration(Motor motor, Encoder encoder) { this.motor = Objects.requireNonNull(motor, "motor should not be null"); this.encoder = Objects.requireNonNull(encoder, "encoder should not be null"); controller = new PIDController(0, 0, 0); @@ -290,7 +290,7 @@ public MotorSubsystemConfiguration(Motor motor, Encoder encoder) { * * @param motor the integrated motor controller */ - public MotorSubsystemConfiguration(PIDMotor motor) { + public PositionalMotorSubsystemConfiguration(PIDMotor motor) { this(motor, motor); } @@ -300,7 +300,7 @@ public MotorSubsystemConfiguration(PIDMotor motor) { * @param controller The PID controller * @return {@code this} for chaining */ - public MotorSubsystemConfiguration controller(PIDController controller) { + public PositionalMotorSubsystemConfiguration controller(PIDController controller) { this.controller = controller; return this; } @@ -312,7 +312,7 @@ public MotorSubsystemConfiguration controller(PIDController controller) { * @param controlMode The mode to use when controlling the motor * @return {@code this} for chaining */ - public MotorSubsystemConfiguration controlMode(ControlMode controlMode) { + public PositionalMotorSubsystemConfiguration controlMode(ControlMode controlMode) { this.controlMode = controlMode; return this; } @@ -325,7 +325,7 @@ public MotorSubsystemConfiguration controlMode(ControlMode controlMode) { * @param d the derivative * @return {@code this} for chaining */ - public MotorSubsystemConfiguration PID(double p, double i, double d) { + public PositionalMotorSubsystemConfiguration PID(double p, double i, double d) { controller.setPID(p, i, d); return this; } @@ -336,7 +336,7 @@ public MotorSubsystemConfiguration PID(double p, double i, double d) { * @param startingPosition the initial setpoint * @return {@code this} for chaining */ - public MotorSubsystemConfiguration startingPosition(Angle startingPosition) { + public PositionalMotorSubsystemConfiguration startingPosition(Angle startingPosition) { this.startingPosition = startingPosition.in(this.rotationUnit); return this; } @@ -350,12 +350,12 @@ public MotorSubsystemConfiguration startingPosition(Angle startingPosition) { * @param startingPositionSupplier supplier to use to get the initial setpoint * @return {@code this} for chaining */ - public MotorSubsystemConfiguration startingPosition(Supplier startingPositionSupplier) { + public PositionalMotorSubsystemConfiguration startingPosition(Supplier startingPositionSupplier) { return startingPosition(startingPositionSupplier.get()); } /** Sets the acceptable position error. */ - public MotorSubsystemConfiguration acceptableError(double error) { + public PositionalMotorSubsystemConfiguration acceptableError(double error) { this.acceptableError = error; return this; } @@ -365,13 +365,13 @@ public MotorSubsystemConfiguration acceptableError(double error) { * * @param rotationUnit The angle unit to use for calculations */ - public MotorSubsystemConfiguration rotationUnit(AngleUnit rotationUnit) { + public PositionalMotorSubsystemConfiguration rotationUnit(AngleUnit rotationUnit) { startingPosition = rotationUnit.convertFrom(startingPosition, this.rotationUnit); this.rotationUnit = rotationUnit; return this; } - public MotorSubsystemConfiguration publishTo(NetworkTableInstance ntInstance) { + public PositionalMotorSubsystemConfiguration publishTo(NetworkTableInstance ntInstance) { this.ntInstance = ntInstance; return this; } From c6fdfa239b994bcbc3a6c93b2394c78279144dfb Mon Sep 17 00:00:00 2001 From: spderman3333 Date: Fri, 10 Oct 2025 17:44:40 -0700 Subject: [PATCH 2/6] Added .idea to .gitignore --- .gitignore | 1 + .idea/.gitignore | 3 --- .idea/compiler.xml | 6 ------ .idea/discord.xml | 14 -------------- .idea/google-java-format.xml | 6 ------ .idea/misc.xml | 5 ----- .idea/vcs.xml | 6 ------ 7 files changed, 1 insertion(+), 40 deletions(-) delete mode 100644 .idea/.gitignore delete mode 100644 .idea/compiler.xml delete mode 100644 .idea/discord.xml delete mode 100644 .idea/google-java-format.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/vcs.xml diff --git a/.gitignore b/.gitignore index e4fe6314..7b182589 100644 --- a/.gitignore +++ b/.gitignore @@ -132,3 +132,4 @@ fabric.properties # Exclude local preference files generated by VSCode editors. .vscode/ +.idea/ diff --git a/.idea/.gitignore b/.idea/.gitignore deleted file mode 100644 index 26d33521..00000000 --- a/.idea/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml deleted file mode 100644 index b589d56e..00000000 --- a/.idea/compiler.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/discord.xml b/.idea/discord.xml deleted file mode 100644 index 912db825..00000000 --- a/.idea/discord.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/google-java-format.xml b/.idea/google-java-format.xml deleted file mode 100644 index 8b57f452..00000000 --- a/.idea/google-java-format.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 87489874..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 35eb1ddf..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 5d1390ed606364610ca5022a4c81516788f94bfe Mon Sep 17 00:00:00 2001 From: spderman3333 Date: Fri, 10 Oct 2025 21:20:33 -0700 Subject: [PATCH 3/6] Added MotorSubsytem for backwards compat. (its just a mask of Pos.MotorSubsytem) --- .../lib2813/subsystems/MotorSubsystem.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java diff --git a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java b/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java new file mode 100644 index 00000000..f391791f --- /dev/null +++ b/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java @@ -0,0 +1,29 @@ +package com.team2813.lib2813.subsystems; + +import com.team2813.lib2813.control.Encoder; +import com.team2813.lib2813.control.Motor; +import com.team2813.lib2813.control.PIDMotor; +import edu.wpi.first.units.measure.Angle; + +import java.util.function.Supplier; + +/** + * This class is a mask of PositionalMotorSubsystem, kept for backwards compatibility. + * @see com.team2813.lib2813.subsystems.PositionalMotorSubsystem + */ +public abstract class MotorSubsystem> extends PositionalMotorSubsystem { + + MotorSubsystem(MotorSubsystemConfiguration motorSubsystemConfiguration) { + super(motorSubsystemConfiguration); + } + + public static class MotorSubsystemConfiguration extends PositionalMotorSubsystemConfiguration { + public MotorSubsystemConfiguration(Motor motor, Encoder encoder) { + super(motor, encoder); + } + + public MotorSubsystemConfiguration(PIDMotor pidMotor) { + super(pidMotor); + } + } +} From f53c6f0837eb16cc8f678b439e729a54ac4610b3 Mon Sep 17 00:00:00 2001 From: spderman3333 Date: Fri, 10 Oct 2025 21:24:36 -0700 Subject: [PATCH 4/6] Spotless: Applied --- .../main/java/com/team2813/lib2813/control/Motor.java | 4 +--- .../lib2813/control/motors/SparkMaxWrapper.java | 4 ++-- .../lib2813/control/motors/TalonFXWrapper.java | 10 +++++++--- .../team2813/lib2813/subsystems/MotorSubsystem.java | 5 +++-- .../lib2813/subsystems/PositionalMotorSubsystem.java | 3 ++- 5 files changed, 15 insertions(+), 11 deletions(-) diff --git a/lib/src/main/java/com/team2813/lib2813/control/Motor.java b/lib/src/main/java/com/team2813/lib2813/control/Motor.java index c73bca6f..80bad2c5 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/Motor.java +++ b/lib/src/main/java/com/team2813/lib2813/control/Motor.java @@ -30,8 +30,6 @@ public interface Motor { */ Current getAppliedCurrent(); - /** - * Stops the motor. - */ + /** Stops the motor. */ void disable(); } diff --git a/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java b/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java index 073594e8..b1ccc032 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java +++ b/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java @@ -83,8 +83,8 @@ public Current getAppliedCurrent() { } /** - * WARNING: due to the end of support of SparkMaxWrapper, there is no evidence that this method will work. - * Proceed with caution! + * WARNING: due to the end of support of SparkMaxWrapper, there is no evidence that this method + * will work. Proceed with caution! */ @Override public void disable() { diff --git a/lib/src/main/java/com/team2813/lib2813/control/motors/TalonFXWrapper.java b/lib/src/main/java/com/team2813/lib2813/control/motors/TalonFXWrapper.java index 08c10542..ec6cc48b 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/motors/TalonFXWrapper.java +++ b/lib/src/main/java/com/team2813/lib2813/control/motors/TalonFXWrapper.java @@ -163,11 +163,14 @@ public TalonFX motor() { } /** - * Sets the behavior the motor should exhibit upon receiving a request to stop: "disable()". + * Sets the behavior the motor should exhibit upon receiving a request to stop: + * "disable()". + * *
    - *
  • Coast: The motor stops applying an input, but continues to move with its inertia.
  • - *
  • Brake: The motor stops applying an input, and actively opposes its inertia.
  • + *
  • Coast: The motor stops applying an input, but continues to move with its inertia. + *
  • Brake: The motor stops applying an input, and actively opposes its inertia. *
+ * * @param mode */ public void setNeutralMode(NeutralModeValue mode) { @@ -176,6 +179,7 @@ public void setNeutralMode(NeutralModeValue mode) { /** * Sends a disable command to the motor, placing it in its neutral value. + * * @see TalonFXWrapper#setNeutralMode(NeutralModeValue) */ @Override diff --git a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java b/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java index f391791f..e396ba03 100644 --- a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java +++ b/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java @@ -4,14 +4,15 @@ import com.team2813.lib2813.control.Motor; import com.team2813.lib2813.control.PIDMotor; import edu.wpi.first.units.measure.Angle; - import java.util.function.Supplier; /** * This class is a mask of PositionalMotorSubsystem, kept for backwards compatibility. + * * @see com.team2813.lib2813.subsystems.PositionalMotorSubsystem */ -public abstract class MotorSubsystem> extends PositionalMotorSubsystem { +public abstract class MotorSubsystem> + extends PositionalMotorSubsystem { MotorSubsystem(MotorSubsystemConfiguration motorSubsystemConfiguration) { super(motorSubsystemConfiguration); diff --git a/lib/src/main/java/com/team2813/lib2813/subsystems/PositionalMotorSubsystem.java b/lib/src/main/java/com/team2813/lib2813/subsystems/PositionalMotorSubsystem.java index 8e050eb1..09dee92f 100644 --- a/lib/src/main/java/com/team2813/lib2813/subsystems/PositionalMotorSubsystem.java +++ b/lib/src/main/java/com/team2813/lib2813/subsystems/PositionalMotorSubsystem.java @@ -350,7 +350,8 @@ public PositionalMotorSubsystemConfiguration startingPosition(Angle startingPosi * @param startingPositionSupplier supplier to use to get the initial setpoint * @return {@code this} for chaining */ - public PositionalMotorSubsystemConfiguration startingPosition(Supplier startingPositionSupplier) { + public PositionalMotorSubsystemConfiguration startingPosition( + Supplier startingPositionSupplier) { return startingPosition(startingPositionSupplier.get()); } From 14cfbb5f6b62090c1825e7bf4143b1c5280a985a Mon Sep 17 00:00:00 2001 From: spderman3333 Date: Sat, 11 Oct 2025 15:20:49 -0700 Subject: [PATCH 5/6] Addressed some recommendations --- lib/src/main/java/com/team2813/lib2813/control/Motor.java | 7 +++++++ .../team2813/lib2813/control/motors/SparkMaxWrapper.java | 8 ++++++-- .../com/team2813/lib2813/subsystems/MotorSubsystem.java | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/lib/src/main/java/com/team2813/lib2813/control/Motor.java b/lib/src/main/java/com/team2813/lib2813/control/Motor.java index 80bad2c5..3e76bc38 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/Motor.java +++ b/lib/src/main/java/com/team2813/lib2813/control/Motor.java @@ -32,4 +32,11 @@ public interface Motor { /** Stops the motor. */ void disable(); + + /** + * Stops the motor. + */ + default void stopMotor() { + disable(); + } } diff --git a/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java b/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java index b1ccc032..8e784423 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java +++ b/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java @@ -20,7 +20,11 @@ import java.util.ArrayList; import java.util.List; -@Deprecated(forRemoval = true) // We likely wont use sparkmax's ever again. +/** + * Wrapper class for SparkMax brushed and brushless motor controllers. + * Deprecated as we will likely not use SparkMaxes again. + */ +@Deprecated(forRemoval = true) public class SparkMaxWrapper implements PIDMotor { private final List followers = new ArrayList<>(); private final SparkBase motor; @@ -88,7 +92,7 @@ public Current getAppliedCurrent() { */ @Override public void disable() { - motor.disable(); + motor.stopMotor(); } @Override diff --git a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java b/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java index e396ba03..e0f57b6e 100644 --- a/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java +++ b/lib/src/main/java/com/team2813/lib2813/subsystems/MotorSubsystem.java @@ -11,6 +11,7 @@ * * @see com.team2813.lib2813.subsystems.PositionalMotorSubsystem */ +@Deprecated(forRemoval = true) public abstract class MotorSubsystem> extends PositionalMotorSubsystem { From 42d57fff714d0e4914826427c2b6e55bc501ecd0 Mon Sep 17 00:00:00 2001 From: spderman3333 Date: Sat, 11 Oct 2025 15:27:34 -0700 Subject: [PATCH 6/6] My code was not spotless. --- lib/src/main/java/com/team2813/lib2813/control/Motor.java | 4 +--- .../com/team2813/lib2813/control/motors/SparkMaxWrapper.java | 4 ++-- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/src/main/java/com/team2813/lib2813/control/Motor.java b/lib/src/main/java/com/team2813/lib2813/control/Motor.java index 3e76bc38..330ee69b 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/Motor.java +++ b/lib/src/main/java/com/team2813/lib2813/control/Motor.java @@ -33,9 +33,7 @@ public interface Motor { /** Stops the motor. */ void disable(); - /** - * Stops the motor. - */ + /** Stops the motor. */ default void stopMotor() { disable(); } diff --git a/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java b/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java index 8e784423..1790e129 100644 --- a/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java +++ b/lib/src/main/java/com/team2813/lib2813/control/motors/SparkMaxWrapper.java @@ -21,8 +21,8 @@ import java.util.List; /** - * Wrapper class for SparkMax brushed and brushless motor controllers. - * Deprecated as we will likely not use SparkMaxes again. + * Wrapper class for SparkMax brushed and brushless motor controllers. Deprecated as we will likely + * not use SparkMaxes again. */ @Deprecated(forRemoval = true) public class SparkMaxWrapper implements PIDMotor {