diff --git a/wpilibcExamples/src/main/cpp/templates/timed/Robot.cpp b/wpilibcExamples/src/main/cpp/templates/timed/Robot.cpp new file mode 100644 index 0000000000..dec86deed8 --- /dev/null +++ b/wpilibcExamples/src/main/cpp/templates/timed/Robot.cpp @@ -0,0 +1,72 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2017 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +#include +#include + +#include +#include +#include +#include + +class Robot : public frc::TimedRobot { +public: + void RobotInit() { + m_chooser.AddDefault(kAutoNameDefault, kAutoNameDefault); + m_chooser.AddObject(kAutoNameCustom, kAutoNameCustom); + frc::SmartDashboard::PutData("Auto Modes", &m_chooser); + } + + /* + * This autonomous (along with the chooser code above) shows how to + * select between different autonomous modes using the dashboard. The + * sendable chooser code works with the Java SmartDashboard. If you + * prefer the LabVIEW Dashboard, remove all of the chooser code and + * uncomment the GetString line to get the auto name from the text box + * below the Gyro. + * + * You can add additional auto modes by adding additional comparisons to + * the if-else structure below with additional strings. If using the + * SendableChooser make sure to add them to the chooser code above as + * well. + */ + void AutonomousInit() override { + m_autoSelected = m_chooser.GetSelected(); + // m_autoSelected = SmartDashboard::GetString("Auto Selector", + // kAutoNameDefault); + std::cout << "Auto selected: " << m_autoSelected << std::endl; + + if (m_autoSelected == kAutoNameCustom) { + // Custom Auto goes here + } else { + // Default Auto goes here + } + } + + void AutonomousPeriodic() { + if (m_autoSelected == kAutoNameCustom) { + // Custom Auto goes here + } else { + // Default Auto goes here + } + } + + void TeleopInit() {} + + void TeleopPeriodic() {} + + void TestPeriodic() { m_lw.Run(); } + +private: + frc::LiveWindow& m_lw = *LiveWindow::GetInstance(); + frc::SendableChooser m_chooser; + const std::string kAutoNameDefault = "Default"; + const std::string kAutoNameCustom = "My Auto"; + std::string m_autoSelected; +}; + +START_ROBOT_CLASS(Robot) diff --git a/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/templates/timed/Robot.java b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/templates/timed/Robot.java new file mode 100644 index 0000000000..22c17f3f33 --- /dev/null +++ b/wpilibjExamples/src/main/java/edu/wpi/first/wpilibj/templates/timed/Robot.java @@ -0,0 +1,87 @@ +/*----------------------------------------------------------------------------*/ +/* Copyright (c) 2017 FIRST. All Rights Reserved. */ +/* Open Source Software - may be modified and shared by FRC teams. The code */ +/* must be accompanied by the FIRST BSD license file in the root directory of */ +/* the project. */ +/*----------------------------------------------------------------------------*/ + +package edu.wpi.first.wpilibj.templates.timed; + +import edu.wpi.first.wpilibj.TimedRobot; +import edu.wpi.first.wpilibj.smartdashboard.SendableChooser; +import edu.wpi.first.wpilibj.smartdashboard.SmartDashboard; + +/** + * The VM is configured to automatically run this class, and to call the + * functions corresponding to each mode, as described in the IterativeRobot + * documentation. If you change the name of this class or the package after + * creating this project, you must also update the build.properties file in the + * project. + */ +public class Robot extends TimedRobot { + + private static final String kDefaultAuto = "Default"; + private static final String kCustomAuto = "My Auto"; + private String m_autoSelected; + private SendableChooser m_chooser = new SendableChooser<>(); + + /** + * This function is run when the robot is first started up and should be + * used for any initialization code. + */ + @Override + public void robotInit() { + m_chooser.addDefault("Default Auto", kDefaultAuto); + m_chooser.addObject("My Auto", kCustomAuto); + SmartDashboard.putData("Auto choices", m_chooser); + } + + /** + * This autonomous (along with the chooser code above) shows how to select + * between different autonomous modes using the dashboard. The sendable + * chooser code works with the Java SmartDashboard. If you prefer the + * LabVIEW Dashboard, remove all of the chooser code and uncomment the + * getString line to get the auto name from the text box below the Gyro + * + *

You can add additional auto modes by adding additional comparisons to + * the switch structure below with additional strings. If using the + * SendableChooser make sure to add them to the chooser code above as well. + */ + @Override + public void autonomousInit() { + m_autoSelected = m_chooser.getSelected(); + // m_autoSelected = SmartDashboard.getString("Auto Selector", + // kDefaultAuto); + System.out.println("Auto selected: " + m_autoSelected); + } + + /** + * This function is called periodically during autonomous. + */ + @Override + public void autonomousPeriodic() { + switch (m_autoSelected) { + case kCustomAuto: + // Put custom auto code here + break; + case kDefaultAuto: + default: + // Put default auto code here + break; + } + } + + /** + * This function is called periodically during operator control. + */ + @Override + public void teleopPeriodic() { + } + + /** + * This function is called periodically during test mode. + */ + @Override + public void testPeriodic() { + } +}