WPILibC++  unspecified
IterativeRobotBase.h
1 /*----------------------------------------------------------------------------*/
2 /* Copyright (c) 2017-2018 FIRST. All Rights Reserved. */
3 /* Open Source Software - may be modified and shared by FRC teams. The code */
4 /* must be accompanied by the FIRST BSD license file in the root directory of */
5 /* the project. */
6 /*----------------------------------------------------------------------------*/
7 
8 #pragma once
9 
10 #include "RobotBase.h"
11 
12 namespace frc {
13 
43 class IterativeRobotBase : public RobotBase {
44  public:
57  virtual void RobotInit();
58 
66  virtual void DisabledInit();
67 
74  virtual void AutonomousInit();
75 
82  virtual void TeleopInit();
83 
90  virtual void TestInit();
91 
98  virtual void RobotPeriodic();
99 
107  virtual void DisabledPeriodic();
108 
116  virtual void AutonomousPeriodic();
117 
125  virtual void TeleopPeriodic();
126 
134  virtual void TestPeriodic();
135 
136  protected:
137  virtual ~IterativeRobotBase() = default;
138 
139  void LoopFunc();
140 
141  private:
142  enum class Mode { kNone, kDisabled, kAutonomous, kTeleop, kTest };
143 
144  Mode m_lastMode = Mode::kNone;
145 };
146 
147 } // namespace frc
Definition: Utility.cpp:119
virtual void DisabledPeriodic()
Periodic code for disabled mode should go here.
Definition: IterativeRobotBase.cpp:49
virtual void AutonomousPeriodic()
Periodic code for autonomous mode should go here.
Definition: IterativeRobotBase.cpp:57
virtual void DisabledInit()
Initialization code for disabled mode should go here.
Definition: IterativeRobotBase.cpp:25
virtual void RobotInit()
Robot-wide initialization code should go here.
Definition: IterativeRobotBase.cpp:21
virtual void AutonomousInit()
Initialization code for autonomous mode should go here.
Definition: IterativeRobotBase.cpp:29
virtual void TestInit()
Initialization code for test mode should go here.
Definition: IterativeRobotBase.cpp:37
virtual void TeleopInit()
Initialization code for teleop mode should go here.
Definition: IterativeRobotBase.cpp:33
virtual void TestPeriodic()
Periodic code for test mode should go here.
Definition: IterativeRobotBase.cpp:73
Implement a Robot Program framework.
Definition: RobotBase.h:53
virtual void RobotPeriodic()
Periodic code for all modes should go here.
Definition: IterativeRobotBase.cpp:41
virtual void TeleopPeriodic()
Periodic code for teleop mode should go here.
Definition: IterativeRobotBase.cpp:65
IterativeRobotBase implements a specific type of robot program framework, extending the RobotBase cla...
Definition: IterativeRobotBase.h:43