diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.core/src/main/java/edu/wpi/first/wpilib/plugins/core/wizards/NewProjectMainPage.java b/eclipse-plugins/edu.wpi.first.wpilib.plugins.core/src/main/java/edu/wpi/first/wpilib/plugins/core/wizards/NewProjectMainPage.java
index d253820a49..db27d8f8d5 100644
--- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.core/src/main/java/edu/wpi/first/wpilib/plugins/core/wizards/NewProjectMainPage.java
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.core/src/main/java/edu/wpi/first/wpilib/plugins/core/wizards/NewProjectMainPage.java
@@ -35,7 +35,7 @@ public class NewProjectMainPage extends WizardPage {
private Text worldText;
private Button worldButton;
- Button iterativeRobot, commandRobot;
+ Button iterativeRobot, commandRobot, sampleRobot;
private boolean showPackage;
private boolean showProjectTypes;
private TeamNumberPage teamNumberPage;
@@ -109,6 +109,12 @@ public class NewProjectMainPage extends WizardPage {
gd = new GridData(GridData.FILL_HORIZONTAL);
gd.widthHint = 300;
commandRobot.setLayoutData(gd);
+
+ sampleRobot = new Button(projectTypeGroup, SWT.RADIO | SWT.WRAP);
+ sampleRobot.setText("Sample Robot: A robot project used for small sample programs or for highly advanced programs with more complete control over program flow");
+ gd = new GridData(GridData.FILL_HORIZONTAL);
+ gd.widthHint = 300;
+ sampleRobot.setLayoutData(gd);
}
label = new Label(container, SWT.NULL);
@@ -214,6 +220,7 @@ public class NewProjectMainPage extends WizardPage {
public ProjectType getProjectType() {
if (!showProjectTypes) return null;
else if (iterativeRobot.getSelection()) return types.get(ProjectType.ITERATIVE);
+ else if (sampleRobot.getSelection()) return types.get(ProjectType.SAMPLE);
else return types.get(ProjectType.COMMAND_BASED);
}
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.core/src/main/java/edu/wpi/first/wpilib/plugins/core/wizards/ProjectType.java b/eclipse-plugins/edu.wpi.first.wpilib.plugins.core/src/main/java/edu/wpi/first/wpilib/plugins/core/wizards/ProjectType.java
index 17433743be..794095be03 100644
--- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.core/src/main/java/edu/wpi/first/wpilib/plugins/core/wizards/ProjectType.java
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.core/src/main/java/edu/wpi/first/wpilib/plugins/core/wizards/ProjectType.java
@@ -4,7 +4,7 @@ import java.net.URL;
import java.util.Map;
public interface ProjectType {
- String SIMPLE = "SIMPLE";
+ String SAMPLE = "SAMPLE";
String ITERATIVE = "ITERATIVE";
String COMMAND_BASED = "COMMAND_BASED";
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/examples/GettingStarted/src/Robot.cpp b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/examples/GettingStarted/src/Robot.cpp
new file mode 100644
index 0000000000..dcbadc89c6
--- /dev/null
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/examples/GettingStarted/src/Robot.cpp
@@ -0,0 +1,59 @@
+#include "WPILib.h"
+
+class Robot: public IterativeRobot
+{
+
+ RobotDrive myRobot; // robot drive system
+ Joystick stick; // only joystick
+ LiveWindow *lw;
+ int autoLoopCounter;
+
+public:
+ Robot() :
+ myRobot(0, 1), // these must be initialized in the same order
+ stick(1), // as they are declared above.
+ lw(NULL),
+ autoLoopCounter(0)
+ {
+ myRobot.SetExpiration(0.1);
+ }
+
+private:
+ void RobotInit()
+ {
+ lw = LiveWindow::GetInstance();
+ }
+
+ void AutonomousInit()
+ {
+ autoLoopCounter = 0;
+ }
+
+ void AutonomousPeriodic()
+ {
+ if(autoLoopCounter < 100) //Check if we've completed 100 loops (approximately 2 seconds)
+ {
+ myRobot.Drive(-0.5, 0.0); // drive forwards half speed
+ autoLoopCounter++;
+ } else {
+ myRobot.Drive(0.0, 0.0); // stop robot
+ }
+ }
+
+ void TeleopInit()
+ {
+
+ }
+
+ void TeleopPeriodic()
+ {
+ myRobot.ArcadeDrive(stick); // drive with arcade style (use right stick)
+ }
+
+ void TestPeriodic()
+ {
+ lw->Run();
+ }
+};
+
+START_ROBOT_CLASS(Robot);
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/examples/examples.xml b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/examples/examples.xml
index e373c1f9e4..cfcbc038d5 100644
--- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/examples/examples.xml
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/resources/templates/examples/examples.xml
@@ -15,6 +15,26 @@
Simulation
Examples that can be run in simulation.
-->
+
+ Getting Started with C++
+ Examples for getting started with FRC C++
+
+
+ Getting Started
+ An example program which demonstrates the simplest autonomous and
+ teleoperated routines.
+
+ Getting Started with C++
+
+
+ src
+
+
+
+
+
+
CommandBased Robot
Examples for CommandBased robot programs.
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/java/edu/wpi/first/wpilib/plugins/cpp/wizards/newproject/CPPProjectType.java b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/java/edu/wpi/first/wpilib/plugins/cpp/wizards/newproject/CPPProjectType.java
index 61c59fa166..3c316d7dea 100644
--- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/java/edu/wpi/first/wpilib/plugins/cpp/wizards/newproject/CPPProjectType.java
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.cpp/src/main/java/edu/wpi/first/wpilib/plugins/cpp/wizards/newproject/CPPProjectType.java
@@ -38,10 +38,18 @@ public class CPPProjectType implements ProjectType {
return files;
}
};
+ static ProjectType SAMPLE = new CPPProjectType() {
+ @Override public Map getFiles(String packageName) {
+ Map files = super.getFiles(packageName);
+ files.put("src/Robot.cpp", "sample/Robot.cpp");
+ return files;
+ }
+ };
@SuppressWarnings("serial")
static Map TYPES = new HashMap() {{
put(ProjectType.ITERATIVE, ITERATIVE);
put(ProjectType.COMMAND_BASED, COMMAND_BASED);
+ put(ProjectType.SAMPLE, SAMPLE);
}};
@Override
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/examples/GettingStarted/src/org/usfirst/frc/team190/robot/Robot.java b/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/examples/GettingStarted/src/org/usfirst/frc/team190/robot/Robot.java
new file mode 100644
index 0000000000..6d5a5d6d8e
--- /dev/null
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/examples/GettingStarted/src/org/usfirst/frc/team190/robot/Robot.java
@@ -0,0 +1,69 @@
+package $package;
+
+import edu.wpi.first.wpilibj.IterativeRobot;
+import edu.wpi.first.wpilibj.Joystick;
+import edu.wpi.first.wpilibj.RobotDrive;
+import edu.wpi.first.wpilibj.livewindow.LiveWindow;
+
+/**
+ * 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 manifest file in the resource
+ * directory.
+ */
+public class Robot extends IterativeRobot {
+ RobotDrive myRobot;
+ Joystick stick;
+ int autoLoopCounter;
+
+ /**
+ * This function is run when the robot is first started up and should be
+ * used for any initialization code.
+ */
+ public void robotInit() {
+ myRobot = new RobotDrive(0,1);
+ stick = new Joystick(1);
+ }
+
+ /**
+ * This function is run once each time the robot enters autonomous mode
+ */
+ public void autonomousInit() {
+ autoLoopCounter = 0;
+ }
+
+ /**
+ * This function is called periodically during autonomous
+ */
+ public void autonomousPeriodic() {
+ if(autoLoopCounter < 100) //Check if we've completed 100 loops (approximately 2 seconds)
+ {
+ myRobot.drive(-0.5, 0.0); // drive forwards half speed
+ autoLoopCounter++;
+ } else {
+ myRobot.drive(0.0, 0.0); // stop robot
+ }
+ }
+
+ /**
+ * This function is called once each time the robot enters tele-operated mode
+ */
+ public void teleopInit(){
+ }
+
+ /**
+ * This function is called periodically during operator control
+ */
+ public void teleopPeriodic() {
+ myRobot.arcadeDrive(stick);
+ }
+
+ /**
+ * This function is called periodically during test mode
+ */
+ public void testPeriodic() {
+ LiveWindow.run();
+ }
+
+}
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/examples/examples.xml b/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/examples/examples.xml
index 9e432d1b08..c8ebc7a77b 100644
--- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/examples/examples.xml
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/examples/examples.xml
@@ -15,6 +15,25 @@
Simulation
Examples that can be run in simulation.
-->
+
+ Getting Started with Java
+ Examples for getting started with FRC Java
+
+
+ Getting Started
+ An example program which demonstrates the simplest autonomous and
+ teleoperated routines.
+
+ Getting Started with Java
+
+
+ src/$package-dir
+
+
+
+
+
CommandBased Robot
Examples for CommandBased robot programs.
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/sample/Robot.java b/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/sample/Robot.java
index d67a17ec45..63e37ac15c 100644
--- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/sample/Robot.java
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/resources/templates/sample/Robot.java
@@ -3,6 +3,9 @@ package $package;
import edu.wpi.first.wpilibj.SampleRobot;
+import edu.wpi.first.wpilibj.RobotDrive;
+import edu.wpi.first.wpilibj.Joystick;
+import edu.wpi.first.wpilibj.Timer;
/**
* This is a demo program showing the use of the RobotDrive class.
diff --git a/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/src/main/java/edu/wpi/first/wpilib/plugins/java/wizards/newproject/JavaProjectType.java b/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/src/main/java/edu/wpi/first/wpilib/plugins/java/wizards/newproject/JavaProjectType.java
index 3765c69302..bc8740eab6 100644
--- a/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/src/main/java/edu/wpi/first/wpilib/plugins/java/wizards/newproject/JavaProjectType.java
+++ b/eclipse-plugins/edu.wpi.first.wpilib.plugins.java/src/main/java/edu/wpi/first/wpilib/plugins/java/wizards/newproject/JavaProjectType.java
@@ -8,10 +8,10 @@ import edu.wpi.first.wpilib.plugins.core.wizards.ProjectType;
import edu.wpi.first.wpilib.plugins.java.WPILibJavaPlugin;
public class JavaProjectType implements ProjectType {
- static ProjectType SIMPLE = new JavaProjectType() {
+ static ProjectType SAMPLE = new JavaProjectType() {
@Override public Map getFiles(String packageName) {
Map files = super.getFiles(packageName);
- files.put("src/"+packageName.replace(".", "/")+"/Robot.java", "simple/Robot.java");
+ files.put("src/"+packageName.replace(".", "/")+"/Robot.java", "sample/Robot.java");
return files;
}
};
@@ -40,7 +40,7 @@ public class JavaProjectType implements ProjectType {
};
@SuppressWarnings("serial")
static Map TYPES = new HashMap() {{
- put(ProjectType.SIMPLE, SIMPLE);
+ put(ProjectType.SAMPLE, SAMPLE);
put(ProjectType.ITERATIVE, ITERATIVE);
put(ProjectType.COMMAND_BASED, COMMAND_BASED);
}};