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:
45  virtual void RobotInit();
46  virtual void DisabledInit();
47  virtual void AutonomousInit();
48  virtual void TeleopInit();
49  virtual void TestInit();
50 
51  virtual void RobotPeriodic();
52  virtual void DisabledPeriodic();
53  virtual void AutonomousPeriodic();
54  virtual void TeleopPeriodic();
55  virtual void TestPeriodic();
56 
57  protected:
58  virtual ~IterativeRobotBase() = default;
59 
60  void LoopFunc();
61 
62  private:
63  enum class Mode { kNone, kDisabled, kAutonomous, kTeleop, kTest };
64 
65  Mode m_lastMode = Mode::kNone;
66 };
67 
68 } // namespace frc
Definition: RobotController.cpp:14
virtual void DisabledPeriodic()
Periodic code for disabled mode should go here.
Definition: IterativeRobotBase.cpp:99
virtual void AutonomousPeriodic()
Periodic code for autonomous mode should go here.
Definition: IterativeRobotBase.cpp:114
virtual void DisabledInit()
Initialization code for disabled mode should go here.
Definition: IterativeRobotBase.cpp:44
virtual void RobotInit()
Robot-wide initialization code should go here.
Definition: IterativeRobotBase.cpp:33
virtual void AutonomousInit()
Initialization code for autonomous mode should go here.
Definition: IterativeRobotBase.cpp:54
virtual void TestInit()
Initialization code for test mode should go here.
Definition: IterativeRobotBase.cpp:74
virtual void TeleopInit()
Initialization code for teleop mode should go here.
Definition: IterativeRobotBase.cpp:64
virtual void TestPeriodic()
Periodic code for test mode should go here.
Definition: IterativeRobotBase.cpp:143
Implement a Robot Program framework.
Definition: RobotBase.h:44
virtual void RobotPeriodic()
Periodic code for all modes should go here.
Definition: IterativeRobotBase.cpp:84
virtual void TeleopPeriodic()
Periodic code for teleop mode should go here.
Definition: IterativeRobotBase.cpp:129
IterativeRobotBase implements a specific type of robot program framework, extending the RobotBase cla...
Definition: IterativeRobotBase.h:43