IPMI changes to mark non present as non functional

When marking a unit as functional, both functional state
and presence need to be checked to avoid marking non-present
units as functional.

Change-Id: If7b710c39f1c2590b82378ebdb7014dc924599ff
Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
diff --git a/types.hpp b/types.hpp
index d3be704..0177c8f 100644
--- a/types.hpp
+++ b/types.hpp
@@ -51,6 +51,18 @@
 };
 
 /**
+ * @enum PreReqValues
+ * Pre-req conditions for a property.
+ */
+struct PreReqValues
+{
+    Value assert; //Value in case of assert.
+    Value deassert; //Value in case of deassert.
+};
+
+using PreReqOffsetValueMap = std::map<Offset, PreReqValues>;
+
+/**
  * @struct SetSensorReadingReq
  *
  * IPMI Request data for Set Sensor Reading and Event Status Command
@@ -88,9 +100,11 @@
 
 using OffsetValueMap = std::map<Offset,Values>;
 
-using DbusPropertyMap = std::map<DbusProperty,OffsetValueMap>;
+using DbusPropertyValues = std::pair<PreReqOffsetValueMap, OffsetValueMap>;
 
-using DbusInterfaceMap = std::map<DbusInterface,DbusPropertyMap>;
+using DbusPropertyMap = std::map<DbusProperty, DbusPropertyValues>;
+
+using DbusInterfaceMap = std::map<DbusInterface, DbusPropertyMap>;
 
 using InstancePath = std::string;
 using Type = uint8_t;