pseq: Add support for UCD90160 device

Refactor power sequencer class hierarchy to add support for the UCD90160
device.

Tested:
* Verify UCD information is obtained successfully from EntityManager
* Verify JSON configuration file is found and parsed successfully
* Test where no pgood error occurs
  * During power on
    * Verify power on continues
    * Verify no error is logged
  * After chassis is powered on
    * Verify chassis remains powered on
    * Verify no error is logged
* Test where pgood error occurs
  * During power on
    * Verify power on stops and chassis is powered off
    * Verify correct error is logged
    * Verify callouts and additional data in error log are correct
    * Detected via rail
    * Detected via pin
  * After chassis is powered on
    * Verify chassis is powered off
    * Verify correct error is logged
    * Verify callouts and additional data in error log are correct
    * Detected via rail
    * Detected via pin

Signed-off-by: Jim Wright <jlwright@us.ibm.com>
Change-Id: Ib00bc1ea34b504c245a4f0cb3979a86e51507f3c
Signed-off-by: Shawn McCarney <shawnmm@us.ibm.com>
diff --git a/phosphor-power-sequencer/src/ucd90160_monitor.hpp b/phosphor-power-sequencer/src/ucd90160_monitor.hpp
new file mode 100644
index 0000000..31d4567
--- /dev/null
+++ b/phosphor-power-sequencer/src/ucd90160_monitor.hpp
@@ -0,0 +1,37 @@
+#pragma once
+
+#include "ucd90x_monitor.hpp"
+
+#include <sdbusplus/bus.hpp>
+
+#include <cstdint>
+
+namespace phosphor::power::sequencer
+{
+
+/**
+ * @class UCD90160Monitor
+ * This class implements fault analysis for the UCD90160
+ * power sequencer device.
+ */
+class UCD90160Monitor : public UCD90xMonitor
+{
+  public:
+    UCD90160Monitor() = delete;
+    UCD90160Monitor(const UCD90160Monitor&) = delete;
+    UCD90160Monitor& operator=(const UCD90160Monitor&) = delete;
+    UCD90160Monitor(UCD90160Monitor&&) = delete;
+    UCD90160Monitor& operator=(UCD90160Monitor&&) = delete;
+    virtual ~UCD90160Monitor() = default;
+
+    /**
+     * Create a device object for UCD90160 monitoring.
+     * @param bus D-Bus bus object
+     * @param i2cBus The bus number of the power sequencer device
+     * @param i2cAddress The I2C address of the power sequencer device
+     */
+    UCD90160Monitor(sdbusplus::bus_t& bus, std::uint8_t i2cBus,
+                    std::uint16_t i2cAddress);
+};
+
+} // namespace phosphor::power::sequencer