fixes to make the new sensor stuff work
diff --git a/frc971/crio/main.cc b/frc971/crio/main.cc
index 649946b..85e2d45 100644
--- a/frc971/crio/main.cc
+++ b/frc971/crio/main.cc
@@ -1,3 +1,5 @@
+#include "aos/common/libstdc++/memory"
+
#include "aos/crio/controls/ControlsManager.h"
#include "aos/crio/motor_server/crio_control_loop_runner.h"
#include "aos/common/sensors/sensor_broadcaster.h"
@@ -6,26 +8,34 @@
#include "frc971/input/sensor_packer.h"
#include "frc971/input/sensor_unpacker.h"
+using ::std::unique_ptr;
+
namespace frc971 {
class MyRobot : public ::aos::crio::ControlsManager {
public:
- MyRobot()
- : broadcaster_(&packer_),
- control_loop_runner_(&broadcaster_, &unpacker_) {}
+ MyRobot() {}
+
+ virtual void CreateObjects() {
+ packer_ = unique_ptr< ::frc971::SensorPacker>( new ::frc971::SensorPacker());
+ unpacker_ = unique_ptr< ::frc971::SensorUnpacker>( new ::frc971::SensorUnpacker());
+ broadcaster_ = unique_ptr< ::aos::sensors::SensorBroadcaster< ::frc971::sensor_values>>(
+ new ::aos::sensors::SensorBroadcaster< ::frc971::sensor_values>(packer_.get()));
+ control_loop_runner_ = unique_ptr< ::aos::crio::CRIOControlLoopRunner< ::frc971::sensor_values>>(new ::aos::crio::CRIOControlLoopRunner< ::frc971::sensor_values>(broadcaster_.get(), unpacker_.get()));
+ }
virtual void RegisterControlLoops() {
- //control_loop_runner_.AddControlLoop(&shooter_);
+ //control_loop_runner_->AddControlLoop(&shooter_);
}
virtual void StartSensorBroadcasters() {
- broadcaster_.Start();
+ broadcaster_->Start();
}
- ::frc971::SensorPacker packer_;
- ::frc971::SensorUnpacker unpacker_;
- ::aos::sensors::SensorBroadcaster< ::frc971::sensor_values> broadcaster_;
- ::aos::crio::CRIOControlLoopRunner< ::frc971::sensor_values>
+ unique_ptr< ::frc971::SensorPacker> packer_;
+ unique_ptr< ::frc971::SensorUnpacker> unpacker_;
+ unique_ptr< ::aos::sensors::SensorBroadcaster< ::frc971::sensor_values>> broadcaster_;
+ unique_ptr< ::aos::crio::CRIOControlLoopRunner< ::frc971::sensor_values>>
control_loop_runner_;
};