diff --git a/src/main/java/com/team766/hal/RobotConfigurator.java b/src/main/java/com/team766/hal/RobotConfigurator.java index 62a821e74..773af69d9 100644 --- a/src/main/java/com/team766/hal/RobotConfigurator.java +++ b/src/main/java/com/team766/hal/RobotConfigurator.java @@ -3,11 +3,26 @@ import com.team766.framework.AutonomousMode; import com.team766.framework.Procedure; -// TODO: better name? +/** + * Provides Robot-specific components: initializes {@link Mechanism}s, creates the Operator Interface (OI), + * and returns the {@link AutonomousMode}s. + * + * @see RobotSelector + */ public interface RobotConfigurator { + + /** + * Initializes the {@link Mechanism}s for this robot. + */ void initializeMechanisms(); + /** + * Creates the Operator Interface (OI) for this robot. + */ Procedure createOI(); + /** + * Returns an array of {@link AutonomousMode}s available for this robot. + */ AutonomousMode[] getAutonomousModes(); } diff --git a/src/main/java/com/team766/hal/RobotSelector.java b/src/main/java/com/team766/hal/RobotSelector.java index 5da01c38c..20fc4e4ca 100644 --- a/src/main/java/com/team766/hal/RobotSelector.java +++ b/src/main/java/com/team766/hal/RobotSelector.java @@ -6,16 +6,24 @@ import com.team766.logging.Logger; import com.team766.logging.LoggerExceptionUtils; import com.team766.logging.Severity; -import com.team766.robot.example.ExampleConfigurator; +import com.team766.robot.example.Robot; -public final class RobotSelector { +/** + * Utility class that reads the name of a {@link RobotConfigurator} from the config file, under the key + * 'robotConfigurator', and creates an instance of that configurator. + */ +/* packaage */ final class RobotSelector { private static final String ROBOT_CONFIGURATOR_KEY = "robotConfigurator"; - private static final String DEFAULT_CONFIGURATOR = ExampleConfigurator.class.getName(); + private static final String DEFAULT_CONFIGURATOR = Robot.class.getName(); - private RobotSelector() {} + private RobotSelector() {} // utility class - public static RobotConfigurator createConfigurator() { + /** + * Creates a configurator specified by the 'robotConfigurator' key in the config file. + * If unable to create this configurator, backs off to the example one. + */ + /* package */ static RobotConfigurator createConfigurator() { ValueProvider configuratorProvider = ConfigFileReader.instance.getString(ROBOT_CONFIGURATOR_KEY); String robotConfigurator = @@ -32,7 +40,7 @@ public static RobotConfigurator createConfigurator() { "Unable to create RobotConfigurator {0}. Using default.", robotConfigurator); LoggerExceptionUtils.logException(e); - return new ExampleConfigurator(); + return new Robot(); } } } diff --git a/src/main/java/com/team766/robot/example/ExampleConfigurator.java b/src/main/java/com/team766/robot/example/ExampleConfigurator.java deleted file mode 100644 index c5be72b6a..000000000 --- a/src/main/java/com/team766/robot/example/ExampleConfigurator.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.team766.robot.example; - -import com.team766.framework.AutonomousMode; -import com.team766.framework.Procedure; -import com.team766.hal.RobotConfigurator; - -public class ExampleConfigurator implements RobotConfigurator { - public ExampleConfigurator() {} - - public void initializeMechanisms() { - Robot.robotInit(); - } - - public Procedure createOI() { - return new OI(); - } - - public AutonomousMode[] getAutonomousModes() { - return AutonomousModes.AUTONOMOUS_MODES; - } -} diff --git a/src/main/java/com/team766/robot/example/Robot.java b/src/main/java/com/team766/robot/example/Robot.java index 83a2aa8ec..a885bd439 100644 --- a/src/main/java/com/team766/robot/example/Robot.java +++ b/src/main/java/com/team766/robot/example/Robot.java @@ -1,11 +1,28 @@ package com.team766.robot.example; +import com.team766.framework.AutonomousMode; +import com.team766.framework.Procedure; +import com.team766.hal.RobotConfigurator; import com.team766.robot.example.mechanisms.*; -public class Robot { - // Declare mechanisms here +public class Robot implements RobotConfigurator { + // Declare mechanisms (as static fields) here + + public Robot() {} public static void robotInit() { // Initialize mechanisms here } + + public void initializeMechanisms() { + robotInit(); + } + + public Procedure createOI() { + return new OI(); + } + + public AutonomousMode[] getAutonomousModes() { + return AutonomousModes.AUTONOMOUS_MODES; + } } diff --git a/src/main/java/com/team766/robot/gatorade/GatoradeConfigurator.java b/src/main/java/com/team766/robot/gatorade/GatoradeConfigurator.java deleted file mode 100644 index 25fd10a81..000000000 --- a/src/main/java/com/team766/robot/gatorade/GatoradeConfigurator.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.team766.robot.gatorade; - -import com.team766.framework.AutonomousMode; -import com.team766.framework.Procedure; -import com.team766.hal.RobotConfigurator; - -public class GatoradeConfigurator implements RobotConfigurator { - public GatoradeConfigurator() {} - - public void initializeMechanisms() { - Robot.robotInit(); - } - - public Procedure createOI() { - return new OI(); - } - - public AutonomousMode[] getAutonomousModes() { - return AutonomousModes.AUTONOMOUS_MODES; - } -} diff --git a/src/main/java/com/team766/robot/gatorade/Robot.java b/src/main/java/com/team766/robot/gatorade/Robot.java index 739f04af7..6259ee11f 100644 --- a/src/main/java/com/team766/robot/gatorade/Robot.java +++ b/src/main/java/com/team766/robot/gatorade/Robot.java @@ -1,10 +1,13 @@ package com.team766.robot.gatorade; +import com.team766.framework.AutonomousMode; +import com.team766.framework.Procedure; +import com.team766.hal.RobotConfigurator; import com.team766.robot.common.mechanisms.Drive; import com.team766.robot.gatorade.mechanisms.*; -public class Robot { - // Declare mechanisms here +public class Robot implements RobotConfigurator { + // Declare mechanisms (as static fields) here public static Intake intake; public static Wrist wrist; public static Elevator elevator; @@ -12,6 +15,8 @@ public class Robot { public static Drive drive; public static Lights lights; + public Robot() {} + public static void robotInit() { // Initialize mechanisms here intake = new Intake(); @@ -21,4 +26,16 @@ public static void robotInit() { drive = new Drive(); lights = new Lights(); } + + public void initializeMechanisms() { + robotInit(); + } + + public Procedure createOI() { + return new OI(); + } + + public AutonomousMode[] getAutonomousModes() { + return AutonomousModes.AUTONOMOUS_MODES; + } }