Automatically generate the drivetrain constants.

Change-Id: Ib96f7d55734d44d8ac9d918ec90edf3b1fb46cd3
diff --git a/frc971/control_loops/python/control_loop.py b/frc971/control_loops/python/control_loop.py
index 881880f..d3968a6 100644
--- a/frc971/control_loops/python/control_loop.py
+++ b/frc971/control_loops/python/control_loop.py
@@ -1,5 +1,6 @@
 import controls
 import numpy
+import os
 
 class Constant(object):
   def __init__ (self, name, formatt, value):
@@ -52,14 +53,14 @@
     return self._namespaces[0]
 
   def _HeaderGuard(self, header_file):
-    return (self._TopDirectory().upper() + '_CONTROL_LOOPS_' +
-            header_file.upper().replace('.', '_').replace('/', '_') +
-            '_')
+    return ('_'.join([namespace.upper() for namespace in self._namespaces]) +
+            os.path.basename(header_file).upper()
+                .replace('.', '_').replace('/', '_') + '_')
 
   def Write(self, header_file, cc_file):
     """Writes the loops to the specified files."""
     self.WriteHeader(header_file)
-    self.WriteCC(header_file, cc_file)
+    self.WriteCC(os.path.basename(header_file), cc_file)
 
   def _GenericType(self, typename):
     """Returns a loop template using typename for the type."""
@@ -121,8 +122,8 @@
   def WriteCC(self, header_file_name, cc_file):
     """Writes the cc file to the file named cc_file."""
     with open(cc_file, 'w') as fd:
-      fd.write('#include \"%s/control_loops/%s\"\n' %
-               (self._TopDirectory(), header_file_name))
+      fd.write('#include \"%s/%s\"\n' %
+               (os.path.join(*self._namespaces), header_file_name))
       fd.write('\n')
       fd.write('#include <vector>\n')
       fd.write('\n')