From bc6494e7b643ef7641666c40bce75ddd53aed5cc Mon Sep 17 00:00:00 2001 From: CoolSpy3 Date: Thu, 29 Jun 2023 16:13:49 -0700 Subject: [PATCH 1/3] create SensorFactory --- .../lib199/MotorControllerFactory.java | 50 +++-------------- .../lib199/SensorFactory.java | 54 +++++++++++++++++++ 2 files changed, 60 insertions(+), 44 deletions(-) create mode 100644 src/main/java/org/carlmontrobotics/lib199/SensorFactory.java diff --git a/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java b/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java index 63be3b75..3b908bcf 100644 --- a/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java +++ b/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java @@ -7,29 +7,24 @@ package org.carlmontrobotics.lib199; +import org.carlmontrobotics.MotorConfig; +import org.carlmontrobotics.lib199.sim.MockSparkMax; +import org.carlmontrobotics.lib199.sim.MockTalonSRX; +import org.carlmontrobotics.lib199.sim.MockVictorSPX; + import com.ctre.phoenix.motorcontrol.NeutralMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import com.ctre.phoenix.motorcontrol.can.WPI_VictorSPX; -import com.ctre.phoenix.sensors.CANCoder; import com.revrobotics.CANSparkMax; import com.revrobotics.CANSparkMax.ExternalFollower; import com.revrobotics.CANSparkMax.IdleMode; import com.revrobotics.CANSparkMaxLowLevel; import com.revrobotics.SparkMaxPIDController; -import org.carlmontrobotics.MotorConfig; -import org.carlmontrobotics.lib199.sim.MockSparkMax; -import org.carlmontrobotics.lib199.sim.MockTalonSRX; -import org.carlmontrobotics.lib199.sim.MockVictorSPX; -import org.carlmontrobotics.lib199.sim.MockedCANCoder; - -import edu.wpi.first.cameraserver.CameraServer; -import edu.wpi.first.cscore.UsbCamera; -import edu.wpi.first.cscore.VideoSource.ConnectionStrategy; import edu.wpi.first.wpilibj.RobotBase; /** - * Add your docs here. + * A class containing methods to create and configure motor controllers. */ public class MotorControllerFactory { public static WPI_VictorSPX createVictor(int port) { @@ -150,37 +145,4 @@ public static CANSparkMax createSparkMax(int id, MotorConfig config) { return spark; } - public static CANCoder createCANCoder(int port) { - CANCoder canCoder = new CANCoder(port); - if(RobotBase.isSimulation()) new MockedCANCoder(canCoder); - return canCoder; - } - - /** - * Configures a USB Camera. - * See {@link CameraServer#startAutomaticCapture} for more details. - * This MUST be called AFTER AHRS initialization or the code will be unable to connect to the gyro. - * - * @return The configured camera - */ - public static UsbCamera configureCamera() { - UsbCamera camera = CameraServer.startAutomaticCapture(); - camera.setConnectionStrategy(ConnectionStrategy.kKeepOpen); - CameraServer.getServer().setSource(camera); - return camera; - } - - /** - * This method is equivalent to calling {@link #configureCamera()} {@code numCameras} times. - * The last camera will be set as the primary Camera feed. - * To change it, call {@code CameraServer.getServer().setSource()}. - * - * @param numCameras The number of cameras to configure - * @return The configured cameras. - */ - public static UsbCamera[] configureCameras(int numCameras) { - UsbCamera[] cameras = new UsbCamera[numCameras]; - for(int i = 0; i < numCameras; i++) cameras[i] = configureCamera(); - return cameras; - } } \ No newline at end of file diff --git a/src/main/java/org/carlmontrobotics/lib199/SensorFactory.java b/src/main/java/org/carlmontrobotics/lib199/SensorFactory.java new file mode 100644 index 00000000..da6bc964 --- /dev/null +++ b/src/main/java/org/carlmontrobotics/lib199/SensorFactory.java @@ -0,0 +1,54 @@ +package org.carlmontrobotics.lib199; + +import org.carlmontrobotics.lib199.sim.MockedCANCoder; + +import com.ctre.phoenix.sensors.CANCoder; + +import edu.wpi.first.cameraserver.CameraServer; +import edu.wpi.first.cscore.UsbCamera; +import edu.wpi.first.cscore.VideoSource.ConnectionStrategy; +import edu.wpi.first.wpilibj.RobotBase; + +/** + * A class containing methods to create and configure sensors. + */ +public class SensorFactory { + public static CANCoder createCANCoder(int port) { + CANCoder canCoder = new CANCoder(port); + if (RobotBase.isSimulation()) + new MockedCANCoder(canCoder); + return canCoder; + } + + /** + * Configures a USB Camera. + * See {@link CameraServer#startAutomaticCapture} for more details. + * This MUST be called AFTER AHRS initialization or the code will be unable to + * connect to the gyro. + * + * @return The configured camera + */ + public static UsbCamera configureCamera() { + UsbCamera camera = CameraServer.startAutomaticCapture(); + camera.setConnectionStrategy(ConnectionStrategy.kKeepOpen); + CameraServer.getServer().setSource(camera); + return camera; + } + + /** + * This method is equivalent to calling {@link #configureCamera()} + * {@code numCameras} times. + * The last camera will be set as the primary Camera feed. + * To change it, call {@code CameraServer.getServer().setSource()}. + * + * @param numCameras The number of cameras to configure + * @return The configured cameras. + */ + public static UsbCamera[] configureCameras(int numCameras) { + UsbCamera[] cameras = new UsbCamera[numCameras]; + for (int i = 0; i < numCameras; i++) + cameras[i] = configureCamera(); + return cameras; + } + +} From 6e7ce21914e487ef9cec015c388f94296f6e83b8 Mon Sep 17 00:00:00 2001 From: CoolSpy3 Date: Thu, 29 Jun 2023 16:17:42 -0700 Subject: [PATCH 2/3] add newline --- .../org/carlmontrobotics/lib199/MotorControllerFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java b/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java index 3b908bcf..a3568686 100644 --- a/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java +++ b/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java @@ -145,4 +145,4 @@ public static CANSparkMax createSparkMax(int id, MotorConfig config) { return spark; } -} \ No newline at end of file +} From e4d98c9cdabaeffd3035dabc3dc52da793ebcc23 Mon Sep 17 00:00:00 2001 From: CoolSpy3 Date: Sat, 8 Jul 2023 22:45:05 -0700 Subject: [PATCH 3/3] deprecate MotorControllerFactory methods --- .../lib199/MotorControllerFactory.java | 62 ++++++++++++++++--- .../lib199/SensorFactory.java | 7 +++ 2 files changed, 62 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java b/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java index a3568686..392d7595 100644 --- a/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java +++ b/src/main/java/org/carlmontrobotics/lib199/MotorControllerFactory.java @@ -7,24 +7,29 @@ package org.carlmontrobotics.lib199; -import org.carlmontrobotics.MotorConfig; -import org.carlmontrobotics.lib199.sim.MockSparkMax; -import org.carlmontrobotics.lib199.sim.MockTalonSRX; -import org.carlmontrobotics.lib199.sim.MockVictorSPX; - import com.ctre.phoenix.motorcontrol.NeutralMode; import com.ctre.phoenix.motorcontrol.can.WPI_TalonSRX; import com.ctre.phoenix.motorcontrol.can.WPI_VictorSPX; +import com.ctre.phoenix.sensors.CANCoder; import com.revrobotics.CANSparkMax; import com.revrobotics.CANSparkMax.ExternalFollower; import com.revrobotics.CANSparkMax.IdleMode; import com.revrobotics.CANSparkMaxLowLevel; import com.revrobotics.SparkMaxPIDController; +import org.carlmontrobotics.MotorConfig; +import org.carlmontrobotics.lib199.sim.MockSparkMax; +import org.carlmontrobotics.lib199.sim.MockTalonSRX; +import org.carlmontrobotics.lib199.sim.MockVictorSPX; +import org.carlmontrobotics.lib199.sim.MockedCANCoder; + +import edu.wpi.first.cameraserver.CameraServer; +import edu.wpi.first.cscore.UsbCamera; +import edu.wpi.first.cscore.VideoSource.ConnectionStrategy; import edu.wpi.first.wpilibj.RobotBase; /** - * A class containing methods to create and configure motor controllers. + * Add your docs here. */ public class MotorControllerFactory { public static WPI_VictorSPX createVictor(int port) { @@ -145,4 +150,47 @@ public static CANSparkMax createSparkMax(int id, MotorConfig config) { return spark; } -} + /** + * @deprecated Use {@link SensorFactory#createCANCoder(int)} instead. + */ + @Deprecated + public static CANCoder createCANCoder(int port) { + CANCoder canCoder = new CANCoder(port); + if(RobotBase.isSimulation()) new MockedCANCoder(canCoder); + return canCoder; + } + + /** + * Configures a USB Camera. + * See {@link CameraServer#startAutomaticCapture} for more details. + * This MUST be called AFTER AHRS initialization or the code will be unable to connect to the gyro. + * + * @return The configured camera + * + * @deprecated Use {@link SensorFactory#configureCamera()} instead. + */ + @Deprecated + public static UsbCamera configureCamera() { + UsbCamera camera = CameraServer.startAutomaticCapture(); + camera.setConnectionStrategy(ConnectionStrategy.kKeepOpen); + CameraServer.getServer().setSource(camera); + return camera; + } + + /** + * This method is equivalent to calling {@link #configureCamera()} {@code numCameras} times. + * The last camera will be set as the primary Camera feed. + * To change it, call {@code CameraServer.getServer().setSource()}. + * + * @param numCameras The number of cameras to configure + * @return The configured cameras. + * + * @deprecated Use {@link SensorFactory#configureCameras(int)} instead. + */ + @Deprecated + public static UsbCamera[] configureCameras(int numCameras) { + UsbCamera[] cameras = new UsbCamera[numCameras]; + for(int i = 0; i < numCameras; i++) cameras[i] = configureCamera(); + return cameras; + } +} \ No newline at end of file diff --git a/src/main/java/org/carlmontrobotics/lib199/SensorFactory.java b/src/main/java/org/carlmontrobotics/lib199/SensorFactory.java index da6bc964..7b778844 100644 --- a/src/main/java/org/carlmontrobotics/lib199/SensorFactory.java +++ b/src/main/java/org/carlmontrobotics/lib199/SensorFactory.java @@ -13,6 +13,13 @@ * A class containing methods to create and configure sensors. */ public class SensorFactory { + + /** + * Creates a CANCoder object, linking it to the simulator if necessary + * + * @param port The CAN ID of the CANCoder + * @return The CANCoder object + */ public static CANCoder createCANCoder(int port) { CANCoder canCoder = new CANCoder(port); if (RobotBase.isSimulation())