Fill in PGOOD fault checking code

Fill in the code to check for a PGOOD fault.  This is where
the power sequencer device detects that one of its child devices
lost PGOOD.  A separate error log will be created for each input
that has a fault.  Each input will only have an error logged against
it once for the lifetime of the object.

Errors are detected by reading the real time status of the PGOOD input,
which is exposed as a GPIO by the device driver.

Ideally we would be able to use a summary bit in the status_word
register to see if there is an error before doing any GPIO reads,
but as the device drivers sends a clear faults every time we read
that register, and the GPI fault bits are edge triggered in the
mfr_status register that feeds status_word, we would never detect
any failures.  If this was ever fixed in the core PMBus device
driver code, we could add this functionality in and save some
CPU cycles.

Change-Id: I5000f2ebc2b22dcca946154afd2405b29734ccaf
Signed-off-by: Matt Spinler <spinler@us.ibm.com>
diff --git a/power-sequencer/types.hpp b/power-sequencer/types.hpp
index 7eba8d6..b236cc9 100644
--- a/power-sequencer/types.hpp
+++ b/power-sequencer/types.hpp
@@ -12,12 +12,22 @@
 namespace ucd90160
 {
 
+constexpr auto gpiNumField = 0;
+constexpr auto pinIDField = 1;
+constexpr auto gpiNameField = 2;
+constexpr auto pollField = 3;
+
+using GPIConfig = std::tuple<size_t, size_t, std::string, bool>;
+
+using GPIConfigs = std::vector<GPIConfig>;
+
 using RailNames = std::vector<std::string>;
 
 constexpr auto pathField = 0;
 constexpr auto railNamesField = 1;
+constexpr auto gpiConfigField = 2;
 
-using DeviceDefinition = std::tuple<std::string, RailNames>;
+using DeviceDefinition = std::tuple<std::string, RailNames, GPIConfigs>;
 
 //Maps a device instance to its definition
 using DeviceMap = std::map<size_t, DeviceDefinition>;