Autogen rule written for 'claw' module.

Change-Id: Iad44bde1de4f3503f4cf01739577c6ab55da8bf0
diff --git a/y2015/control_loops/claw/BUILD b/y2015/control_loops/claw/BUILD
index e671004..200b422 100644
--- a/y2015/control_loops/claw/BUILD
+++ b/y2015/control_loops/claw/BUILD
@@ -25,17 +25,41 @@
   ],
 )
 
+genrule(
+  name = 'genrule_claw',
+  visibility = ['//visibility:private'],
+  cmd = '$(location //y2015/control_loops/python:claw) $(OUTS)',
+  tools = [
+    '//y2015/control_loops/python:claw',
+  ],
+  outs = [
+    'claw_motor_plant.h',
+    'claw_motor_plant.cc',
+  ],
+)
+
 cc_library(
-  name = 'claw_lib',
+  name = 'claw_plants',
   srcs = [
-    'claw.cc',
     'claw_motor_plant.cc',
   ],
   hdrs = [
-    'claw.h',
     'claw_motor_plant.h',
   ],
   deps = [
+    '//frc971/control_loops:state_feedback_loop',
+  ],
+)
+
+cc_library(
+  name = 'claw_lib',
+  hdrs = [
+    'claw.h',
+  ],
+  srcs = [
+    'claw.cc',
+  ],
+  deps = [
     ':claw_queue',
     '//aos/common/controls:control_loop',
     '//aos/common:time',
@@ -43,6 +67,7 @@
     '//y2015:constants',
     '//frc971/control_loops:state_feedback_loop',
     '//frc971/zeroing:zeroing',
+    ':claw_plants',
   ],
 )
 
diff --git a/y2015/control_loops/claw/claw.cc b/y2015/control_loops/claw/claw.cc
index e487024..e6ab9e7 100644
--- a/y2015/control_loops/claw/claw.cc
+++ b/y2015/control_loops/claw/claw.cc
@@ -33,7 +33,8 @@
 Claw::Claw(control_loops::ClawQueue *claw)
     : aos::controls::ControlLoop<control_loops::ClawQueue>(claw),
       last_piston_edge_(Time::Now()),
-      claw_loop_(new ClawCappedStateFeedbackLoop(MakeClawLoop())),
+      claw_loop_(new ClawCappedStateFeedbackLoop(
+          ::y2015::control_loops::claw::MakeClawLoop())),
       claw_estimator_(constants::GetValues().claw.zeroing),
       profile_(::aos::controls::kLoopFrequency) {}
 
diff --git a/y2015/control_loops/claw/claw_lib_test.cc b/y2015/control_loops/claw/claw_lib_test.cc
index 10fcc07..6b3ad87 100644
--- a/y2015/control_loops/claw/claw_lib_test.cc
+++ b/y2015/control_loops/claw/claw_lib_test.cc
@@ -25,7 +25,8 @@
  public:
   // Constructs a claw simulation.
   ClawSimulation()
-      : claw_plant_(new StateFeedbackPlant<2, 1, 1>(MakeClawPlant())),
+      : claw_plant_(new StateFeedbackPlant<2, 1, 1>(
+            y2015::control_loops::claw::MakeClawPlant())),
         pot_and_encoder_(constants::GetValues().claw.zeroing.index_difference),
         claw_queue_(".frc971.control_loops.claw_queue", 0x9d7452fb,
                     ".frc971.control_loops.claw_queue.goal",
diff --git a/y2015/control_loops/claw/claw_motor_plant.cc b/y2015/control_loops/claw/claw_motor_plant.cc
deleted file mode 100644
index 5f5c206..0000000
--- a/y2015/control_loops/claw/claw_motor_plant.cc
+++ /dev/null
@@ -1,49 +0,0 @@
-#include "y2015/control_loops/claw/claw_motor_plant.h"
-
-#include <vector>
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace frc971 {
-namespace control_loops {
-
-StateFeedbackPlantCoefficients<2, 1, 1> MakeClawPlantCoefficients() {
-  Eigen::Matrix<double, 2, 2> A;
-  A << 1.0, 0.00482455476758, 0.0, 0.930652495326;
-  Eigen::Matrix<double, 2, 1> B;
-  B << 6.97110924671e-05, 0.0275544125308;
-  Eigen::Matrix<double, 1, 2> C;
-  C << 1, 0;
-  Eigen::Matrix<double, 1, 1> D;
-  D << 0;
-  Eigen::Matrix<double, 1, 1> U_max;
-  U_max << 12.0;
-  Eigen::Matrix<double, 1, 1> U_min;
-  U_min << -12.0;
-  return StateFeedbackPlantCoefficients<2, 1, 1>(A, B, C, D, U_max, U_min);
-}
-
-StateFeedbackController<2, 1, 1> MakeClawController() {
-  Eigen::Matrix<double, 2, 1> L;
-  L << 0.998251427366, 26.9874526231;
-  Eigen::Matrix<double, 1, 2> K;
-  K << 74.4310031124, 4.72251126222;
-  Eigen::Matrix<double, 2, 2> A_inv;
-  A_inv << 1.0, -0.00518405612386, 0.0, 1.07451492907;
-  return StateFeedbackController<2, 1, 1>(L, K, A_inv, MakeClawPlantCoefficients());
-}
-
-StateFeedbackPlant<2, 1, 1> MakeClawPlant() {
-  ::std::vector< ::std::unique_ptr<StateFeedbackPlantCoefficients<2, 1, 1>>> plants(1);
-  plants[0] = ::std::unique_ptr<StateFeedbackPlantCoefficients<2, 1, 1>>(new StateFeedbackPlantCoefficients<2, 1, 1>(MakeClawPlantCoefficients()));
-  return StateFeedbackPlant<2, 1, 1>(&plants);
-}
-
-StateFeedbackLoop<2, 1, 1> MakeClawLoop() {
-  ::std::vector< ::std::unique_ptr<StateFeedbackController<2, 1, 1>>> controllers(1);
-  controllers[0] = ::std::unique_ptr<StateFeedbackController<2, 1, 1>>(new StateFeedbackController<2, 1, 1>(MakeClawController()));
-  return StateFeedbackLoop<2, 1, 1>(&controllers);
-}
-
-}  // namespace control_loops
-}  // namespace frc971
diff --git a/y2015/control_loops/claw/claw_motor_plant.h b/y2015/control_loops/claw/claw_motor_plant.h
deleted file mode 100644
index 6cb9cdb..0000000
--- a/y2015/control_loops/claw/claw_motor_plant.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef Y2015_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
-#define Y2015_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_
-
-#include "frc971/control_loops/state_feedback_loop.h"
-
-namespace frc971 {
-namespace control_loops {
-
-StateFeedbackPlantCoefficients<2, 1, 1> MakeClawPlantCoefficients();
-
-StateFeedbackController<2, 1, 1> MakeClawController();
-
-StateFeedbackPlant<2, 1, 1> MakeClawPlant();
-
-StateFeedbackLoop<2, 1, 1> MakeClawLoop();
-
-}  // namespace control_loops
-}  // namespace frc971
-
-#endif  // Y2015_CONTROL_LOOPS_CLAW_CLAW_MOTOR_PLANT_H_