blob: 85e2d450cf639f4e4f9b9356139d948a934d26ab [file] [log] [blame]
Brian Silvermanffe3d712013-03-15 21:35:59 -07001#include "aos/common/libstdc++/memory"
2
brians343bc112013-02-10 01:53:46 +00003#include "aos/crio/controls/ControlsManager.h"
Brian Silverman3204dd82013-03-12 18:42:01 -07004#include "aos/crio/motor_server/crio_control_loop_runner.h"
5#include "aos/common/sensors/sensor_broadcaster.h"
brians343bc112013-02-10 01:53:46 +00006
Brian Silverman3204dd82013-03-12 18:42:01 -07007#include "frc971/queues/sensor_values.h"
8#include "frc971/input/sensor_packer.h"
9#include "frc971/input/sensor_unpacker.h"
brians343bc112013-02-10 01:53:46 +000010
Brian Silvermanffe3d712013-03-15 21:35:59 -070011using ::std::unique_ptr;
12
brians343bc112013-02-10 01:53:46 +000013namespace frc971 {
14
15class MyRobot : public ::aos::crio::ControlsManager {
16 public:
Brian Silvermanffe3d712013-03-15 21:35:59 -070017 MyRobot() {}
18
19 virtual void CreateObjects() {
20 packer_ = unique_ptr< ::frc971::SensorPacker>( new ::frc971::SensorPacker());
21 unpacker_ = unique_ptr< ::frc971::SensorUnpacker>( new ::frc971::SensorUnpacker());
22 broadcaster_ = unique_ptr< ::aos::sensors::SensorBroadcaster< ::frc971::sensor_values>>(
23 new ::aos::sensors::SensorBroadcaster< ::frc971::sensor_values>(packer_.get()));
24 control_loop_runner_ = unique_ptr< ::aos::crio::CRIOControlLoopRunner< ::frc971::sensor_values>>(new ::aos::crio::CRIOControlLoopRunner< ::frc971::sensor_values>(broadcaster_.get(), unpacker_.get()));
25 }
Brian Silverman3204dd82013-03-12 18:42:01 -070026
brians343bc112013-02-10 01:53:46 +000027 virtual void RegisterControlLoops() {
Brian Silvermanffe3d712013-03-15 21:35:59 -070028 //control_loop_runner_->AddControlLoop(&shooter_);
brians343bc112013-02-10 01:53:46 +000029 }
30
Brian Silverman3204dd82013-03-12 18:42:01 -070031 virtual void StartSensorBroadcasters() {
Brian Silvermanffe3d712013-03-15 21:35:59 -070032 broadcaster_->Start();
Brian Silverman3204dd82013-03-12 18:42:01 -070033 }
34
Brian Silvermanffe3d712013-03-15 21:35:59 -070035 unique_ptr< ::frc971::SensorPacker> packer_;
36 unique_ptr< ::frc971::SensorUnpacker> unpacker_;
37 unique_ptr< ::aos::sensors::SensorBroadcaster< ::frc971::sensor_values>> broadcaster_;
38 unique_ptr< ::aos::crio::CRIOControlLoopRunner< ::frc971::sensor_values>>
Brian Silverman3204dd82013-03-12 18:42:01 -070039 control_loop_runner_;
brians343bc112013-02-10 01:53:46 +000040};
41
42} // namespace frc971
43
44START_ROBOT_CLASS(::frc971::MyRobot);