pldm: Implement PCIeSlot interface

Adding support to host dbus PCIeSlot interface.
Based on the PDRs received from remote PLDM terminus,
PLDM hosts the dbus interface based on the entity type.
The Slot 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/PCIeSlot.interface.yaml

Change-Id: I98db6c31ddcb35e5c124d060c4ee0ab0f8819e72
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 c8307c6..c5d7e29 100644
--- a/host-bmc/dbus/custom_dbus.hpp
+++ b/host-bmc/dbus/custom_dbus.hpp
@@ -2,6 +2,7 @@
 
 #include "common/utils.hpp"
 #include "cpu_core.hpp"
+#include "pcie_slot.hpp"
 
 #include <sdbusplus/server.hpp>
 #include <xyz/openbmc_project/Inventory/Decorator/LocationCode/server.hpp>
@@ -82,9 +83,23 @@
      */
     std::optional<uint32_t> getMicroCode(const std::string& path) const;
 
+    /** @brief Implement PCIeSlot Interface
+     *
+     *  @param[in] path - the object path
+     */
+    void implementPCIeSlotInterface(const std::string& path);
+
+    /** @brief Set the slot type
+     *
+     *  @param[in] path - the object path
+     *  @param[in] slot type - Slot type
+     */
+    void setSlotType(const std::string& path, const std::string& slotType);
+
   private:
     std::unordered_map<ObjectPath, std::unique_ptr<LocationIntf>> location;
     std::unordered_map<ObjectPath, std::unique_ptr<CPUCore>> cpuCore;
+    std::unordered_map<ObjectPath, std::unique_ptr<PCIeSlot>> pcieSlot;
 };
 
 } // namespace dbus