pldm: Implement Cable interface

Adding support to host Cable dbus interface.
Based on the PDRs received from remote PLDM terminus,
PLDM hosts the dbus interface based on the entity type.
The Cable interface is defined at [1].

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

Change-Id: I23f02387c1d50ce8d9c5921760740760cea2cd47
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 5d7cf2e..8c1dba9 100644
--- a/host-bmc/dbus/custom_dbus.hpp
+++ b/host-bmc/dbus/custom_dbus.hpp
@@ -1,5 +1,6 @@
 #pragma once
 
+#include "cable.hpp"
 #include "common/utils.hpp"
 #include "cpu_core.hpp"
 #include "pcie_device.hpp"
@@ -112,11 +113,27 @@
     void setPCIeDeviceProps(const std::string& path, size_t lanesInUse,
                             const std::string& value);
 
+    /** @brief Implement PCIe Cable Interface
+     *
+     *  @param[in] path - the object path
+     */
+    void implementCableInterface(const std::string& path);
+
+    /** @brief set cable attributes
+     *
+     *  @param[in] path - the object path
+     *  @param[in] length - length of the wire
+     *  @param[in] cableDescription - cable details
+     */
+    void setCableAttributes(const std::string& path, double length,
+                            const std::string& cableDescription);
+
   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;
+    std::unordered_map<ObjectPath, std::unique_ptr<Cable>> cable;
 };
 
 } // namespace dbus