This page is out of date. You can find a new guide to options here
AbstractOptionsOp extends AbstractOp. You can use it to take input from the gamepad and store settings for autonomous in a file on the robot phone. It uses OptionsFile from the state-machine-framework.
ftc/evlib/opmodes/AbstractOptionsOp.java
package ftc.evlib.opmodes;
import ftc.electronvolts.util.files.Logger;
import ftc.electronvolts.util.files.OptionsFile;
import ftc.electronvolts.util.units.Time;
import ftc.evlib.hardware.config.RobotCfg;
import ftc.evlib.util.EVConverters;
import ftc.evlib.util.FileUtil;
/**
* This file was made by the electronVolts, FTC team 7393
* Date Created: 10/29/16
*
* extends AbstractTeleOp and adds saving and loading an OptionsFile and removes the match timer
*
* @see AbstractTeleOp
* @see OptionsFile
*/
public abstract class AbstractOptionsOp extends AbstractTeleOp<RobotCfg> {
private final String filename;
public OptionsFile optionsFile;
/**
* The filename will be set by the subclasses
*
* @param filename the name of the file where the options are stored
*/
public AbstractOptionsOp(String filename) {
this.filename = filename;
}
/**
* @return a dummy RobotCfg
*/
@Override
protected RobotCfg createRobotCfg() {
return new RobotCfg(hardwareMap) {
@Override
public void act() {
}
@Override
public void stop() {
}
};
}
@Override
protected Logger createLogger() {
//the OptionsOp has no logging
return null;
}
@Override
public Time getMatchTime() {
//the OptionsOp has no time limit
return null;
}
/**
* Load the options from the file
*/
public void loadOptionsFile() {
optionsFile = new OptionsFile(EVConverters.getInstance(), FileUtil.getOptionsFile(filename));
}
/**
* save the options from the file
*/
public void saveOptionsFile() {
optionsFile.writeToFile(FileUtil.getOptionsFile(filename));
}
@Override
protected void setup() {
//load the file when the opmode starts
loadOptionsFile();
}
@Override
protected void setup_act() {
}
@Override
protected void go() {
}
@Override
public void post_act() {
super.post_act();
//display telemetry instructions
telemetry.addData("* back button => erase changes", "");
//reload the file if the back button is pressed
if (driver1.back.justPressed()) loadOptionsFile();
//display telemetry instructions
telemetry.addData("* start button => save", "");
//save the file if the start button is pressed
if (driver1.start.justPressed()) saveOptionsFile();
telemetry.addData("* Stop the opmode to save and quit.", "");
}
@Override
protected void end() {
//save the file when the opmode ends
saveOptionsFile();
}
}