Skip to content
This repository has been archived by the owner on Jan 13, 2025. It is now read-only.

Commit

Permalink
implementing RobotConfigurator in various Robot classes
Browse files Browse the repository at this point in the history
  • Loading branch information
dejabot committed Jan 16, 2024
1 parent b6774bc commit fe616a5
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 53 deletions.
17 changes: 16 additions & 1 deletion src/main/java/com/team766/hal/RobotConfigurator.java
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}
20 changes: 14 additions & 6 deletions src/main/java/com/team766/hal/RobotSelector.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<String> configuratorProvider =
ConfigFileReader.instance.getString(ROBOT_CONFIGURATOR_KEY);
String robotConfigurator =
Expand All @@ -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();
}
}
}
21 changes: 0 additions & 21 deletions src/main/java/com/team766/robot/example/ExampleConfigurator.java

This file was deleted.

21 changes: 19 additions & 2 deletions src/main/java/com/team766/robot/example/Robot.java
Original file line number Diff line number Diff line change
@@ -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;
}
}
21 changes: 0 additions & 21 deletions src/main/java/com/team766/robot/gatorade/GatoradeConfigurator.java

This file was deleted.

21 changes: 19 additions & 2 deletions src/main/java/com/team766/robot/gatorade/Robot.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,22 @@
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;
public static Shoulder shoulder;
public static Drive drive;
public static Lights lights;

public Robot() {}

public static void robotInit() {
// Initialize mechanisms here
intake = new Intake();
Expand All @@ -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;
}
}

0 comments on commit fe616a5

Please sign in to comment.