blob: 5971f4600753b6b279e87e23a3d8674caa1ae211 [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:
23 // Hooks that subclasses have to implement to do the correct things at the
24 // correct times.
Brian Silvermanffe3d712013-03-15 21:35:59 -070025 virtual void CreateObjects() = 0;
Brian Silverman3204dd82013-03-12 18:42:01 -070026 virtual void RegisterControlLoops() = 0;
27 virtual void StartSensorBroadcasters() = 0;
brians343bc112013-02-10 01:53:46 +000028};
29
30} // namespace crio
31} // namespace aos