Brian Silverman | ffe3d71 | 2013-03-15 21:35:59 -0700 | [diff] [blame^] | 1 | #include "aos/common/libstdc++/memory" |
| 2 | |
brians | 343bc11 | 2013-02-10 01:53:46 +0000 | [diff] [blame] | 3 | #include "aos/crio/controls/ControlsManager.h" |
Brian Silverman | 3204dd8 | 2013-03-12 18:42:01 -0700 | [diff] [blame] | 4 | #include "aos/crio/motor_server/crio_control_loop_runner.h" |
| 5 | #include "aos/common/sensors/sensor_broadcaster.h" |
brians | 343bc11 | 2013-02-10 01:53:46 +0000 | [diff] [blame] | 6 | |
Brian Silverman | 3204dd8 | 2013-03-12 18:42:01 -0700 | [diff] [blame] | 7 | #include "frc971/queues/sensor_values.h" |
| 8 | #include "frc971/input/sensor_packer.h" |
| 9 | #include "frc971/input/sensor_unpacker.h" |
brians | 343bc11 | 2013-02-10 01:53:46 +0000 | [diff] [blame] | 10 | |
Brian Silverman | ffe3d71 | 2013-03-15 21:35:59 -0700 | [diff] [blame^] | 11 | using ::std::unique_ptr; |
| 12 | |
brians | 343bc11 | 2013-02-10 01:53:46 +0000 | [diff] [blame] | 13 | namespace frc971 { |
| 14 | |
| 15 | class MyRobot : public ::aos::crio::ControlsManager { |
| 16 | public: |
Brian Silverman | ffe3d71 | 2013-03-15 21:35:59 -0700 | [diff] [blame^] | 17 | 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 Silverman | 3204dd8 | 2013-03-12 18:42:01 -0700 | [diff] [blame] | 26 | |
brians | 343bc11 | 2013-02-10 01:53:46 +0000 | [diff] [blame] | 27 | virtual void RegisterControlLoops() { |
Brian Silverman | ffe3d71 | 2013-03-15 21:35:59 -0700 | [diff] [blame^] | 28 | //control_loop_runner_->AddControlLoop(&shooter_); |
brians | 343bc11 | 2013-02-10 01:53:46 +0000 | [diff] [blame] | 29 | } |
| 30 | |
Brian Silverman | 3204dd8 | 2013-03-12 18:42:01 -0700 | [diff] [blame] | 31 | virtual void StartSensorBroadcasters() { |
Brian Silverman | ffe3d71 | 2013-03-15 21:35:59 -0700 | [diff] [blame^] | 32 | broadcaster_->Start(); |
Brian Silverman | 3204dd8 | 2013-03-12 18:42:01 -0700 | [diff] [blame] | 33 | } |
| 34 | |
Brian Silverman | ffe3d71 | 2013-03-15 21:35:59 -0700 | [diff] [blame^] | 35 | 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 Silverman | 3204dd8 | 2013-03-12 18:42:01 -0700 | [diff] [blame] | 39 | control_loop_runner_; |
brians | 343bc11 | 2013-02-10 01:53:46 +0000 | [diff] [blame] | 40 | }; |
| 41 | |
| 42 | } // namespace frc971 |
| 43 | |
| 44 | START_ROBOT_CLASS(::frc971::MyRobot); |