host-bmc: Implement Inventory Item interface

Adding support to host Inventory Item dbus interface.  PLDM hosts the
dbus interface based on the entity type.  The Inventory Item interface
is defined at [1].

Tested:
   Functional test passed

[1]: https://github.com/openbmc/phosphor-dbus-interfaces/blob/master/yaml/xyz/openbmc_project/Inventory/Item.interface.yaml

Change-Id: Ifed3cc01d825a69d64afcffd8447f7c8d9387913
Signed-off-by: Archana Kakani <archana.kakani@ibm.com>
diff --git a/host-bmc/dbus/custom_dbus.hpp b/host-bmc/dbus/custom_dbus.hpp
index e292462..e099712 100644
--- a/host-bmc/dbus/custom_dbus.hpp
+++ b/host-bmc/dbus/custom_dbus.hpp
@@ -9,6 +9,7 @@
 #include "cpu_core.hpp"
 #include "fabric_adapter.hpp"
 #include "fan.hpp"
+#include "inventory_item.hpp"
 #include "motherboard.hpp"
 #include "pcie_device.hpp"
 #include "pcie_slot.hpp"
@@ -190,11 +191,19 @@
      */
     void setAvailabilityState(const std::string& path, const bool& state);
 
+    /** @brief Set the Inventory Item property
+     *  @param[in] path - The object path
+     *  @param[in] bool - the presence of fru
+     */
+    void updateItemPresentStatus(const std::string& path, bool isPresent);
+
   private:
     std::unordered_map<ObjectPath, std::unique_ptr<Asset>> asset;
     std::unordered_map<ObjectPath, std::unique_ptr<Availability>>
         availabilityState;
     std::unordered_map<ObjectPath, std::unique_ptr<LocationIntf>> location;
+    std::unordered_map<ObjectPath, std::unique_ptr<InventoryItem>>
+        presentStatus;
     std::unordered_map<ObjectPath, std::unique_ptr<CPUCore>> cpuCore;
     std::unordered_map<ObjectPath, std::unique_ptr<ItemChassis>> chassis;
     std::unordered_map<ObjectPath, std::unique_ptr<PCIeDevice>> pcieDevice;