pldm: Implement PCIeDevice interface

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

Change-Id: I69472efef33c3ad030ba4c831f07f60833b2c40b
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 c5d7e29..5d7cf2e 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_device.hpp"
 #include "pcie_slot.hpp"
 
 #include <sdbusplus/server.hpp>
@@ -96,9 +97,25 @@
      */
     void setSlotType(const std::string& path, const std::string& slotType);
 
+    /** @brief Implement PCIe Device Interface
+     *
+     *  @param[in] path - the object path
+     */
+    void implementPCIeDeviceInterface(const std::string& path);
+
+    /** @brief Set PCIe Device Lanes in use property
+     *
+     *  @param[in] path - the object path
+     *  @param[in] lanesInUse - Lanes in use
+     *  @param[in] value - Generation in use
+     */
+    void setPCIeDeviceProps(const std::string& path, size_t lanesInUse,
+                            const std::string& value);
+
   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<PCIeDevice>> pcieDevice;
     std::unordered_map<ObjectPath, std::unique_ptr<PCIeSlot>> pcieSlot;
 };