blob: d9e89b60993e8038ab29fe4f28adfcb7c191e80f [file] [log] [blame]
brians343bc112013-02-10 01:53:46 +00001#include "WPILib/DriverStation.h"
2#include "WPILib/RobotBase.h"
3
4namespace aos {
5namespace crio {
6
Brian Silverman3204dd82013-03-12 18:42:01 -07007// Designed for a subclass (that implements all of the pure virtual methods...)
8// to be passed to START_ROBOT_CLASS (a WPILib macro) to start all of the code.
brians343bc112013-02-10 01:53:46 +00009class ControlsManager : public RobotBase {
10 public:
Brian Silvermanffe3d712013-03-15 21:35:59 -070011 ControlsManager();
12
brians343bc112013-02-10 01:53:46 +000013 virtual void StartCompetition();
Brian Silverman3204dd82013-03-12 18:42:01 -070014
15 static ControlsManager &GetInstance() {
brians343bc112013-02-10 01:53:46 +000016 return *static_cast<ControlsManager *>(&RobotBase::getInstance());
17 }
Brian Silverman3204dd82013-03-12 18:42:01 -070018 DriverStation *GetDS() {
brians343bc112013-02-10 01:53:46 +000019 return m_ds;
20 }
Brian Silverman3204dd82013-03-12 18:42:01 -070021
22 private:
Brian Silverman5f950452013-03-16 16:18:33 -070023 // Called when it is time to create anything that uses WPILib.
Brian Silvermanffe3d712013-03-15 21:35:59 -070024 virtual void CreateObjects() = 0;
Brian Silverman5f950452013-03-16 16:18:33 -070025 // Called when it is time to add controls loops to any CRIOControlLoopRunners.
Brian Silverman3204dd82013-03-12 18:42:01 -070026 virtual void RegisterControlLoops() = 0;
Brian Silverman5f950452013-03-16 16:18:33 -070027 // Called when it is time to start any SensorBroadcasters.
Brian Silverman3204dd82013-03-12 18:42:01 -070028 virtual void StartSensorBroadcasters() = 0;
brians343bc112013-02-10 01:53:46 +000029};
30
31} // namespace crio
32} // namespace aos