host-bmc: Implement Panel interface

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

Change-Id: I9e98baa8a0559a6cc38e8557349f4e2369ba6058
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 e099712..d543e1f 100644
--- a/host-bmc/dbus/custom_dbus.hpp
+++ b/host-bmc/dbus/custom_dbus.hpp
@@ -11,6 +11,7 @@
 #include "fan.hpp"
 #include "inventory_item.hpp"
 #include "motherboard.hpp"
+#include "panel.hpp"
 #include "pcie_device.hpp"
 #include "pcie_slot.hpp"
 #include "power_supply.hpp"
@@ -197,6 +198,13 @@
      */
     void updateItemPresentStatus(const std::string& path, bool isPresent);
 
+    /** @brief Implement Panel Interface
+     *
+     *  @param[in] path - The object path
+     *
+     */
+    void implementPanelInterface(const std::string& path);
+
   private:
     std::unordered_map<ObjectPath, std::unique_ptr<Asset>> asset;
     std::unordered_map<ObjectPath, std::unique_ptr<Availability>>
@@ -215,6 +223,7 @@
     std::unordered_map<ObjectPath, std::unique_ptr<Motherboard>> motherboard;
     std::unordered_map<ObjectPath, std::unique_ptr<Fan>> fan;
     std::unordered_map<ObjectPath, std::unique_ptr<Connector>> connector;
+    std::unordered_map<ObjectPath, std::unique_ptr<Panel>> panel;
 };
 
 } // namespace dbus