build: drop support for YAML configurations

phosphor-pid-control now only supports json configurations and no longer
builds from a YAML configuration.

Change-Id: I25fa7766399a1345dca89aac20e7b49caa46797e
Signed-off-by: Patrick Venture <venture@google.com>
diff --git a/Makefile.am b/Makefile.am
index 264ae1c..9a31124 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -2,20 +2,6 @@
 
 sbin_PROGRAMS = swampd setsensor
 
-if !CONFIGURE_DBUS
-BUILT_SOURCES = sensorlist-gen.cpp pidlist-gen.cpp zoneinfo-gen.cpp
-endif
-CLEANFILES = $(BUILT_SOURCES)
-
-sensorlist-gen.cpp:
-	$(AM_V_GEN)@SENSORGEN@ -o $(top_builddir) generate-cpp
-
-pidlist-gen.cpp:
-	$(AM_V_GEN)@PIDGEN@ -o $(top_builddir) generate-cpp
-
-zoneinfo-gen.cpp:
-	$(AM_V_GEN)@ZONEGEN@ -o $(top_builddir) generate-cpp
-
 setsensor_SOURCES = setsensor.cpp
 setsensor_LDADD = \
 	$(SDBUSPLUS_LIBS) \
@@ -76,8 +62,7 @@
 	pid/pidthread.cpp \
 	threads/busthread.cpp \
 	build/buildjson.cpp \
-	experiments/drive.cpp \
-	$(BUILT_SOURCES)
+	experiments/drive.cpp
 
 if CONFIGURE_DBUS
 libswampd_la_SOURCES += dbus/dbusconfiguration.cpp
diff --git a/configure.ac b/configure.ac
index d7d34ff..978df6a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -12,10 +12,6 @@
 AC_PROG_INSTALL
 AC_PROG_MAKE_SET
 
-# Python
-AM_PATH_PYTHON([2.7], [AC_SUBST([PYTHON], [echo "$PYTHON"])],
-[AC_MSG_ERROR([Could not find python-2.7 installed...python-2.7 is required])])
-
 # Checks for typedefs, structures, and compiler characteristics.
 AX_CXX_COMPILE_STDCXX_17([noext])
 AX_APPEND_COMPILE_FLAGS([-fpic -Wall -Werror], [CXXFLAGS])
@@ -93,18 +89,6 @@
     AC_SUBST([OESDK_TESTCASE_FLAGS], [$testcase_flags])
 )
 
-AS_IF([test "x$SENSOR_YAML_GEN" == "x"], [SENSOR_YAML_GEN="sensor-example.yaml"])
-SENSORGEN="$PYTHON ${srcdir}/scripts/sensor_gen.py -i $SENSOR_YAML_GEN"
-AC_SUBST(SENSORGEN)
-
-AS_IF([test "x$PID_YAML_GEN" == "x"], [PID_YAML_GEN="pid-example.yaml"])
-PIDGEN="$PYTHON ${srcdir}/scripts/pid_gen.py -i $PID_YAML_GEN"
-AC_SUBST(PIDGEN)
-
-AS_IF([test "x$ZONE_YAML_GEN" == "x"], [ZONE_YAML_GEN="zone-example.yaml"])
-ZONEGEN="$PYTHON ${srcdir}/scripts/zone_gen.py -i $ZONE_YAML_GEN"
-AC_SUBST(ZONEGEN)
-
 AC_ARG_ENABLE([configure-dbus],
     AS_HELP_STRING(
         [--enable-configure-dbus], [Enable configuring pid from D-Bus.]
diff --git a/dbus/dbusconfiguration.cpp b/dbus/dbusconfiguration.cpp
index fa7a3dd..5fceaa9 100644
--- a/dbus/dbusconfiguration.cpp
+++ b/dbus/dbusconfiguration.cpp
@@ -32,9 +32,9 @@
 
 static constexpr bool DEBUG = false; // enable to print found configuration
 
-std::map<std::string, struct SensorConfig> sensorConfig = {};
-std::map<int64_t, PIDConf> zoneConfig = {};
-std::map<int64_t, struct ZoneConfig> zoneDetailsConfig = {};
+extern std::map<std::string, struct SensorConfig> sensorConfig;
+extern std::map<int64_t, PIDConf> zoneConfig;
+extern std::map<int64_t, struct ZoneConfig> zoneDetailsConfig;
 
 constexpr const char* pidConfigurationInterface =
     "xyz.openbmc_project.Configuration.Pid";
diff --git a/examples/README b/examples/README
new file mode 100644
index 0000000..33c2077
--- /dev/null
+++ b/examples/README
@@ -0,0 +1,82 @@
+# Sensor Config
+
+This program is only meant to control fans given thermal sensor readings.
+
+All sensors in phosphor-dbus-interfaces for OpenBMC use Sensor.Value as their
+accessor.  This provides read-only access to information.  The goal of the
+configuration is to specify how it can be read and if it's a fan, how the PID
+output can be written.  Initially there'll only be sysfs and passive dbus
+access.  If a writePath for a sensor is a dbus path, then the system will need
+to verify which Control.Fan* interfaces is registered and send values to the
+Target property of that interface.
+
+The min/max specified are to range a writePercent to the sensor.  The current
+FanController object outputs the new fan speed goal as a PWM percentage.  Other
+fan PID control objects may not, and they can leave the fields as 0 & 0.
+
+The only requirement for a sensor is that it isn't writeonly.  Only fans are
+expected to have a writePath set, and in this current version non-fan sensors
+are assumed readonly.
+
+The sensor names are unique across all zones.
+
+"sensors" : [
+  {
+    "name": "fan1",  /* Name of the sensor. */
+    "type": "fan",   /* Type of sensor, fan, temp, margin */
+    "readPath": "",  /* How the sensor can be read[1] */
+    "writePath": "", /* How the sensor can be set[2] */
+    "min": 0,        /* The minimum value used for scaling writes (int64) */
+    "max": 255,      /* The maximum value used for scaling writes (int64) */
+    "timeout": 0     /* The timeout value for the sensor, used for failsafe, 0
+                      * means no timeout (int64) */
+  },
+]
+
+[1] readPath has multiple options:
+* If it has "/xyz/openbmc_project/extsensors/" in it, it's an EXTERNAL or
+  host-provided sensor.
+* If it has "/xyz/openbmc_project/" in it, it's a sensor whose value is
+  received passively over dbus.
+* If it has "/sys/" in it, it's a sensor read directly from sysfs.
+
+[2]
+* This can be left blank if the sensor is read-only.
+* If it has "/sys/" in it, it's a sensor written to sysfs.
+  * If min and max are non-zero, it'll convert the value to within the range.
+    and output that modified value.  So, if it receives a value of .90 and min
+    is 0, and max is 255, it'll convert that to a value of 229.5 that is then
+    cast to int64_t.
+
+# PID Config
+
+The PID configuration is a list of PIDs per zone.
+
+"zones" : [
+  {
+    "id": 1, /* zone id. */
+    "minThermalRpm": 3000.0, /* The minimum thermal RPM value. (double) */
+    "failsafePercent": 75.0, /* The percent to use when the zone is in fail-safe mode. (double) */
+    "pids": [
+      {
+        "name": "fan1-5",           /* PID name */
+        "type": "fan",              /* Type of PID, fan, temp, or margin. */
+        "inputs": ["fan1", "fan5"], /* Sensor names that are inputs for the PID */
+        "setpoint": 90.0,           /* For temp/margin PIDs this is the setpoint, ignored otherwise (double) */
+        "pid": {
+          "samplePeriod": 0.1,          /* The input sample period. (double) */
+          "proportionalCoeff": 0.0,     /* The proportional coefficient. (double) */
+          "integralCoeff": 0.0,         /* The integral coefficient. (double) */
+          "feedFwdOffOffsetCoeff": 0.0, /* The feed-forward offset coefficient. (double) */
+          "feedFwdGainCoeff": 0.010,    /* The feed-forward gain coefficient. (double) */
+          "integralLimit_min": 0.0,     /* The integral limit clamp, min, max (double) */
+          "integralLimit_max": 0.0,
+          "outLim_min": 30.0,           /* the PID output clamp, min, max (double) */
+          "outLim_max": 100.0,
+          "slewNeg": 0.0, /* The slew negative value. (double) */
+          "slewPos": 0.0  /* The slew positive value. (double) */
+        }
+      }
+    ]
+  }
+]
diff --git a/examples/fan-info.json b/examples/fan-info.json
index 45afe3f..15c2d09 100644
--- a/examples/fan-info.json
+++ b/examples/fan-info.json
@@ -71,7 +71,7 @@
                     "inputs": ["fan1", "fan5"],
                     "setpoint": 90.0,
                     "pid": {
-                        "sampleperiod": 0.1,
+                        "samplePeriod": 0.1,
                         "proportionalCoeff": 0.0,
                         "integralCoeff": 0.0,
                         "feedFwdOffOffsetCoeff": 0.0,
@@ -90,7 +90,7 @@
                     "inputs": ["fan2", "fan6"],
                     "setpoint": 90.0,
                     "pid": {
-                        "sampleperiod": 0.1,
+                        "samplePeriod": 0.1,
                         "proportionalCoeff": 0.0,
                         "integralCoeff": 0.0,
                         "feedFwdOffOffsetCoeff": 0.0,
@@ -109,7 +109,7 @@
                     "inputs": ["fan3", "fan7"],
                     "setpoint": 90.0,
                     "pid": {
-                        "sampleperiod": 0.1,
+                        "samplePeriod": 0.1,
                         "proportionalCoeff": 0.0,
                         "integralCoeff": 0.0,
                         "feedFwdOffOffsetCoeff": 0.0,
@@ -128,7 +128,7 @@
                     "inputs": ["fan4", "fan8"],
                     "setpoint": 90.0,
                     "pid": {
-                        "sampleperiod": 0.1,
+                        "samplePeriod": 0.1,
                         "proportionalCoeff": 0.0,
                         "integralCoeff": 0.0,
                         "feedFwdOffOffsetCoeff": 0.0,
@@ -147,7 +147,7 @@
                     "inputs": ["fleeting0"],
                     "setpoint": 10,
                     "pid": {
-                        "sampleperiod": 1,
+                        "samplePeriod": 1,
                         "proportionalCoeff": 750.0,
                         "integralCoeff": 16.0,
                         "feedFwdOffOffsetCoeff": 0.0,
diff --git a/main.cpp b/main.cpp
index ef6cb48..012eca4 100644
--- a/main.cpp
+++ b/main.cpp
@@ -46,11 +46,11 @@
 #endif
 
 /* The YAML converted sensor list. */
-extern std::map<std::string, struct SensorConfig> sensorConfig;
+std::map<std::string, struct SensorConfig> sensorConfig = {};
 /* The YAML converted PID list. */
-extern std::map<int64_t, PIDConf> zoneConfig;
+std::map<int64_t, PIDConf> zoneConfig = {};
 /* The YAML converted Zone configuration. */
-extern std::map<int64_t, struct ZoneConfig> zoneDetailsConfig;
+std::map<int64_t, struct ZoneConfig> zoneDetailsConfig = {};
 
 /** the swampd daemon will check for the existence of this file. */
 constexpr auto jsonConfigurationPath = "/usr/share/swampd/config.json";
@@ -97,27 +97,26 @@
     {
         dbus_configuration::init(modeControlBus);
     }
-#endif
+#else
+    const std::string& path =
+        (configPath.length() > 0) ? configPath : jsonConfigurationPath;
 
     /*
      * When building the sensors, if any of the dbus passive ones aren't on the
      * bus, it'll fail immediately.
      */
-    if (configPath.length() > 0)
+    try
     {
-        try
-        {
-            auto jsonData = parseValidateJson(configPath);
-            sensorConfig = buildSensorsFromJson(jsonData);
-            std::tie(zoneConfig, zoneDetailsConfig) =
-                buildPIDsFromJson(jsonData);
-        }
-        catch (const std::exception& e)
-        {
-            std::cerr << "Failed during building: " << e.what() << "\n";
-            exit(EXIT_FAILURE); /* fatal error. */
-        }
+        auto jsonData = parseValidateJson(path);
+        sensorConfig = buildSensorsFromJson(jsonData);
+        std::tie(zoneConfig, zoneDetailsConfig) = buildPIDsFromJson(jsonData);
     }
+    catch (const std::exception& e)
+    {
+        std::cerr << "Failed during building: " << e.what() << "\n";
+        exit(EXIT_FAILURE); /* fatal error. */
+    }
+#endif
 
     SensorManager mgmr = buildSensors(sensorConfig);
     std::unordered_map<int64_t, std::unique_ptr<PIDZone>> zones =
diff --git a/scripts/README b/scripts/README
deleted file mode 100644
index 8695774..0000000
--- a/scripts/README
+++ /dev/null
@@ -1,25 +0,0 @@
-# Sensor Config
-This program is only meant to control fans given thermal sensor readings.
-
-All sensors in phosphor-dbus-interfaces for OpenBMC use Sensor.Value as their
-accessor.  This provides read-only access to information.  The goal of the
-configuration is to specify how it can be read and if it's a fan, how the PID
-output can be written.  Initially there'll only be sysfs and passive dbus
-access.  If a writePath for a sensor is a dbus path, then the system will need
-to verify which Control.Fan* interfaces is registered and send values to the
-Target property of that interface.
-
-The min/max specified are to range a writePercent to the sensor.  The current
-FanController object outputs the new fan speed goal as a PWM percentage.  Other
-fan PID control objects may not, and they can leave the fields as 0 & 0.
-
-The only requirement for a sensor is that it isn't writeonly.  Only fans are
-expected to have a writePath set, and in this current version non-fan sensors
-are assumed readonly. 
-
-The sensor names are unique across all zones.
-
-# PID Config
-
-The PID configuration is a list of PIDs per zone.
-
diff --git a/scripts/pid-example.txt b/scripts/pid-example.txt
deleted file mode 100644
index 5161d7f..0000000
--- a/scripts/pid-example.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-0x01:  /* zone ID */
-  fan2-6: /* PID name */
-    type: fan /* Type of PID, fan, temp, or margin. */
-    inputs:   /* Sensor names that are inputs for the PID */
-      fan2
-      fan6
-    /* For temp/margin PIDs this is the setpoint, ignored otherwise (double) */
-    setpoint: 90.0
-    pid: /* The PID calculation configuration. */
-      samplePeriod: 0.1        /* The input sample period. (double) */
-      proportionalCoeff: 0.01      /* The proportional coefficient. (double) */
-      integralCoeff: 0.001     /* The integral coefficient. (double) */
-      /* The feed-forward offset coefficient. (double) */
-      feedFwdOffOffsetCoeff: 0.0
-      /* The feed-forward gain coefficient. (double) */
-      feedFwdGainCoeff: 0.0
-      integralCoeff:   /* The integral limit clamp, min, max (double) */
-        min: 0
-        max: 100
-      outLimit: /* the PID output clamp, min, max (double) */
-        min: 0
-        max: 100
-      slewNeg: -100 /* The slew negative value. (double) */
-      slewPos: 0 /* The slew positive value. (double) */
diff --git a/scripts/pid-example.yaml b/scripts/pid-example.yaml
deleted file mode 100644
index 001eab1..0000000
--- a/scripts/pid-example.yaml
+++ /dev/null
@@ -1,59 +0,0 @@
-0x01:
-  fan2-6:
-    type: fan
-    inputs:
-      fan2
-      fan6
-    setpoint: 90.0
-    pid:
-      samplePeriod: 0.1
-      proportionalCoeff: 0.01
-      integralCoeff: 0.001
-      feedFwdOffOffsetCoeff: 0.0
-      feedFwdGainCoeff: 0.0
-      integralLimit:
-        min: 0
-        max: 100
-      outLimit:
-        min: 0
-        max: 100
-      slewNeg: 0
-      slewPos: 0
-  temp1:
-    type: temp
-    inputs:
-      temp1
-    setpoint: 30.0
-    pid:
-      samplePeriod: 1
-      proportionalCoeff: 94.0
-      integralCoeff: 2.0
-      feedFwdOffOffsetCoeff: 0.0
-      feedFwdGainCoeff: 0.0
-      integralLimit:
-        min: 3000
-        max: 10000
-      outLimit:
-        min: 3000
-        max: 10000
-      slewNeg: 0
-      slewPos: 0
-  sluggish0:
-    type: margin
-    inputs:
-      sluggish0
-    setpoint: 50
-    pid:
-      samplePeriod: 1
-      proportionalCoeff: 94.0
-      integralCoeff: 2.0
-      feedFwdOffOffsetCoeff: 0.0
-      feedFwdGainCoeff: 0.0
-      integralLimit:
-        min: 3000
-        max: 10000
-      outLimit:
-        min: 3000
-        max: 10000
-      slewNeg: 0
-      slewPos: 0
diff --git a/scripts/pid_gen.py b/scripts/pid_gen.py
deleted file mode 100644
index cd62199..0000000
--- a/scripts/pid_gen.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-import yaml
-import argparse
-from mako.template import Template
-
-
-def generate_cpp(sensor_yaml, output_dir):
-    with open(os.path.join(script_dir, sensor_yaml), 'r') as f:
-        ifile = yaml.safe_load(f)
-        if not isinstance(ifile, dict):
-            ifile = {}
-
-        # Render the mako template
-
-        t = Template(filename=os.path.join(
-                     script_dir,
-                     "writepid.mako.cpp"))
-
-        output_cpp = os.path.join(output_dir, "pidlist-gen.cpp")
-        with open(output_cpp, 'w') as fd:
-            fd.write(t.render(PIDDict=ifile))
-
-
-def main():
-
-    valid_commands = {
-        'generate-cpp': generate_cpp
-    }
-    parser = argparse.ArgumentParser(
-        description="IPMI Sensor parser and code generator")
-
-    parser.add_argument(
-        '-i', '--sensor_yaml', dest='sensor_yaml',
-        default='example.yaml', help='input sensor yaml file to parse')
-
-    parser.add_argument(
-        "-o", "--output-dir", dest="outputdir",
-        default=".",
-        help="output directory")
-
-    parser.add_argument(
-        'command', metavar='COMMAND', type=str,
-        choices=valid_commands.keys(),
-        help='Command to run.')
-
-    args = parser.parse_args()
-
-    if (not (os.path.isfile(os.path.join(script_dir, args.sensor_yaml)))):
-        sys.exit("Can not find input yaml file " + args.sensor_yaml)
-
-    function = valid_commands[args.command]
-    function(args.sensor_yaml, args.outputdir)
-
-
-if __name__ == '__main__':
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    main()
diff --git a/scripts/sensor-example.txt b/scripts/sensor-example.txt
deleted file mode 100644
index b1318b8..0000000
--- a/scripts/sensor-example.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-fan2: /* Name of the sensor. */
-  type: fan /* Type of sensor, fan, temp, margin */
-  /* How the sensor can be read[1] */
-  readPath: /xyz/openbmc_project/sensors/fan_tach/fan2
-  /* How the sensor can be set[2] */
-  writePath: /sys/class/hwmon/hwmon0/pwm1
-  /* The minimum value used for scaling writes (int64) */
-  min: 0
-  /* The maximum value used for scaling writes (int64) */
-  max: 255
-  /* The timeout value for the sensor, used for failsafe, 0 means no timeout
-   * (int64)
-   */
-  timeout: 0
-
-[1] readPath has multiple options:
-* If it has "/xyz/openbmc_project/extsensors/" in it, it's an EXTERNAL or
-  host-provided sensor.
-* If it has "/xyz/openbmc_project/" in it, it's a sensor whose value is
-  received passively over dbus.
-* If it has "/sys/" in it, it's a sensor read directly from sysfs.
-
-[2]
-* This can be left blank if the sensor is read-only.
-* If it has "/sys/" in it, it's a sensor written to sysfs.
-  * If min and max are non-zero, it'll convert the value to within the range.
-    and output that modified value.  So, if it receives a value of .90 and min
-    is 0, and max is 255, it'll convert that to a value of 229.5 that is then
-    cast to int64_t.
diff --git a/scripts/sensor-example.yaml b/scripts/sensor-example.yaml
deleted file mode 100644
index 1debe3e..0000000
--- a/scripts/sensor-example.yaml
+++ /dev/null
@@ -1,31 +0,0 @@
-fan2:
-  type: fan
-  readPath: /xyz/openbmc_project/sensors/fan_tach/fan2
-  writePath: /sys/class/hwmon/hwmon0/pwm1
-  min: 0
-  max: 255
-  timeout: 0
-
-fan6:
-  type: fan
-  readPath: /xyz/openbmc_project/sensors/fan_tach/fan6
-  writePath:
-  min: 0
-  max: 0
-  timeout: 0
-
-temp1:
-  type: temp
-  readPath: /xyz/openbmc_project/sensors/temperature/temp1
-  writePath: 
-  min: 0
-  max: 0
-  timeout: 0
-
-sluggish0:
-  type: margin
-  readPath: /xyz/openbmc_project/extsensors/margin/sluggish0
-  writePath:
-  min: 0
-  max: 0
-  timeout: 0
diff --git a/scripts/sensor_gen.py b/scripts/sensor_gen.py
deleted file mode 100644
index 7e9c6ca..0000000
--- a/scripts/sensor_gen.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-import yaml
-import argparse
-from mako.template import Template
-
-
-def generate_cpp(sensor_yaml, output_dir):
-    with open(os.path.join(script_dir, sensor_yaml), 'r') as f:
-        ifile = yaml.safe_load(f)
-        if not isinstance(ifile, dict):
-            ifile = {}
-
-        # Render the mako template
-
-        t = Template(filename=os.path.join(
-                     script_dir,
-                     "writesensor.mako.cpp"))
-
-        output_cpp = os.path.join(output_dir, "sensorlist-gen.cpp")
-        with open(output_cpp, 'w') as fd:
-            fd.write(t.render(sensorDict=ifile))
-
-
-def main():
-
-    valid_commands = {
-        'generate-cpp': generate_cpp
-    }
-    parser = argparse.ArgumentParser(
-        description="IPMI Sensor parser and code generator")
-
-    parser.add_argument(
-        '-i', '--sensor_yaml', dest='sensor_yaml',
-        default='example.yaml', help='input sensor yaml file to parse')
-
-    parser.add_argument(
-        "-o", "--output-dir", dest="outputdir",
-        default=".",
-        help="output directory")
-
-    parser.add_argument(
-        'command', metavar='COMMAND', type=str,
-        choices=valid_commands.keys(),
-        help='Command to run.')
-
-    args = parser.parse_args()
-
-    if (not (os.path.isfile(os.path.join(script_dir, args.sensor_yaml)))):
-        sys.exit("Can not find input yaml file " + args.sensor_yaml)
-
-    function = valid_commands[args.command]
-    function(args.sensor_yaml, args.outputdir)
-
-
-if __name__ == '__main__':
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    main()
\ No newline at end of file
diff --git a/scripts/writepid.mako.cpp b/scripts/writepid.mako.cpp
deleted file mode 100644
index 2e6738d..0000000
--- a/scripts/writepid.mako.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-## This file is a template.  The comment below is emitted
-## into the rendered file; feel free to edit this file.
-
-// !!! WARNING: This is GENERATED Code... Please do NOT edit !!!
-
-#include <map>
-#include "conf.hpp"
-
-std::map<int64_t, PIDConf> zoneConfig = {
-% for zone in PIDDict.iterkeys():
-    % if zone:
-    {${zone},
-        {
-            % for key, details in PIDDict[zone].iteritems():
-            {"${key}",
-                {"${details['type']}",
-                 {
-                   % for item in details['inputs'].split():
-                   "${item}",
-                   % endfor
-                 },
-                 <%
-                      # If the PID type is a fan, setpoint field is unused,
-                      # so just use a default of 0.  If the PID is not a type
-                      # of fan, require the setpoint field.
-                      if 'fan' == details['type']:
-                          setpoint = 0
-                      else:
-                          setpoint = details['setpoint']
-
-                      neg_hysteresis = 0
-                      pos_hysteresis = 0
-                      if 'neg_hysteresis' in details['pid']:
-                          neg_hysteresis = details['pid']['neg_hysteresis']
-                      if 'pos_hysteresis' in details['pid']:
-                          pos_hysteresis = details['pid']['pos_hysteresis']
-                  %>
-                 ${setpoint},
-                 {${details['pid']['samplePeriod']},
-                  ${details['pid']['proportionalCoeff']},
-                  ${details['pid']['integralCoeff']},
-                  ${details['pid']['feedFwdOffOffsetCoeff']},
-                  ${details['pid']['feedFwdGainCoeff']},
-                  {${details['pid']['integralLimit']['min']}, ${details['pid']['integralLimit']['max']}},
-                  {${details['pid']['outLimit']['min']}, ${details['pid']['outLimit']['max']}},
-                  ${details['pid']['slewNeg']},
-                  ${details['pid']['slewPos']},
-                  ${neg_hysteresis},
-                  ${pos_hysteresis}},
-                },
-            },
-            % endfor
-        },
-    },
-   % endif
-% endfor
-};
diff --git a/scripts/writesensor.mako.cpp b/scripts/writesensor.mako.cpp
deleted file mode 100644
index 56e7965..0000000
--- a/scripts/writesensor.mako.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-## This file is a template.  The comment below is emitted
-## into the rendered file; feel free to edit this file.
-
-// !!! WARNING: This is GENERATED Code... Please do NOT edit !!!
-
-#include <map>
-#include "conf.hpp"
-
-std::map<std::string, struct SensorConfig> sensorConfig = {
-% for key in sensorDict.iterkeys():
-   % if key:
-   <%
-           sensor = sensorDict[key]
-           type = sensor["type"]
-           readPath = sensor["readPath"]
-           writePath = sensor.get("writePath", "")
-           min = sensor.get("min", 0)
-           max = sensor.get("max", 0)
-           # Presently only thermal inputs have their timeout
-           # checked, but we should default it as 2s, which is
-           # the previously hard-coded value.
-           # If it's a fan sensor though, let's set the default
-           # to 0.
-           if type == "fan":
-               timeout = sensor.get("timeout", 0)
-           else:
-               timeout = sensor.get("timeout", 2)
-   %>
-    {"${key}",
-        {"${type}","${readPath}","${writePath}", ${min}, ${max}, ${timeout}},
-    },
-   % endif
-% endfor
-};
-
-
diff --git a/scripts/writezone.mako.cpp b/scripts/writezone.mako.cpp
deleted file mode 100644
index f466060..0000000
--- a/scripts/writezone.mako.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-## This file is a template.  The comment below is emitted
-## into the rendered file; feel free to edit this file.
-
-// !!! WARNING: This is GENERATED Code... Please do NOT edit !!!
-
-#include <map>
-#include "conf.hpp"
-
-std::map<int64_t, struct ZoneConfig> zoneDetailsConfig = {
-% for zone in ZoneDict.iterkeys():
-   % if zone:
-   <%
-           zConf = ZoneDict[zone]
-           min = zConf["minThermalRpm"]
-           percent = zConf["failsafePercent"]
-   %>
-    {${zone},
-        {${min}, ${percent}},
-    },
-   % endif
-% endfor
-};
diff --git a/scripts/zone-example.txt b/scripts/zone-example.txt
deleted file mode 100644
index 3f987a2..0000000
--- a/scripts/zone-example.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-0x01: /* The zone ID */
-  minThermalRpm: 3000.0 /* The minimum thermal RPM value. (double) */
-  /* The percent to use when the zone is in fail-safe mode. (double) */
-  failsafePercent: 90.0
diff --git a/scripts/zone-example.yaml b/scripts/zone-example.yaml
deleted file mode 100644
index 8fecf71..0000000
--- a/scripts/zone-example.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-0x01:
-  minThermalRpm: 3000.0
-  failsafePercent: 90.0
diff --git a/scripts/zone_gen.py b/scripts/zone_gen.py
deleted file mode 100644
index a98a3b5..0000000
--- a/scripts/zone_gen.py
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import sys
-import yaml
-import argparse
-from mako.template import Template
-
-
-def generate_cpp(zoneinfo_yaml, output_dir):
-    with open(os.path.join(script_dir, zoneinfo_yaml), 'r') as f:
-        ifile = yaml.safe_load(f)
-        if not isinstance(ifile, dict):
-            ifile = {}
-
-        # Render the mako template
-
-        t = Template(filename=os.path.join(
-                     script_dir,
-                     "writezone.mako.cpp"))
-
-        output_cpp = os.path.join(output_dir, "zoneinfo-gen.cpp")
-        with open(output_cpp, 'w') as fd:
-            fd.write(t.render(ZoneDict=ifile))
-
-
-def main():
-
-    valid_commands = {
-        'generate-cpp': generate_cpp
-    }
-    parser = argparse.ArgumentParser(
-        description="IPMI Zone info parser and code generator")
-
-    parser.add_argument(
-        '-i', '--zoneinfo_yaml', dest='zoneinfo_yaml',
-        default='example.yaml', help='input zone yaml file to parse')
-
-    parser.add_argument(
-        "-o", "--output-dir", dest="outputdir",
-        default=".",
-        help="output directory")
-
-    parser.add_argument(
-        'command', metavar='COMMAND', type=str,
-        choices=valid_commands.keys(),
-        help='Command to run.')
-
-    args = parser.parse_args()
-
-    if (not (os.path.isfile(os.path.join(script_dir, args.zoneinfo_yaml)))):
-        sys.exit("Can not find input yaml file " + args.zoneinfo_yaml)
-
-    function = valid_commands[args.command]
-    function(args.zoneinfo_yaml, args.outputdir)
-
-
-if __name__ == '__main__':
-    script_dir = os.path.dirname(os.path.realpath(__file__))
-    main()