Implementing Motherboard interface

This commit adds support to host motherboard interface which can be
used to generate Dbus Object paths. The Dbus object paths will be
represents the hardware components within the system architecture and
help to understand the architecture better way. The motherboard will
represent the system board and other entity are connected to it.
The interface is implemented at:[1]

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

Change-Id: Ie7987ea0fb03d2d6ffd9e485924cfea7446d97d9
Signed-off-by: Kamalkumar Patel <kamalkumar.patel@ibm.com>
diff --git a/host-bmc/dbus/custom_dbus.hpp b/host-bmc/dbus/custom_dbus.hpp
index 8c1dba9..9baa1dc 100644
--- a/host-bmc/dbus/custom_dbus.hpp
+++ b/host-bmc/dbus/custom_dbus.hpp
@@ -3,6 +3,7 @@
 #include "cable.hpp"
 #include "common/utils.hpp"
 #include "cpu_core.hpp"
+#include "motherboard.hpp"
 #include "pcie_device.hpp"
 #include "pcie_slot.hpp"
 
@@ -127,6 +128,12 @@
      */
     void setCableAttributes(const std::string& path, double length,
                             const std::string& cableDescription);
+    /** @brief Implement interface for motherboard property
+     *
+     *  @param[in] path  - The object path
+     *
+     */
+    void implementMotherboardInterface(const std::string& path);
 
   private:
     std::unordered_map<ObjectPath, std::unique_ptr<LocationIntf>> location;
@@ -134,6 +141,7 @@
     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;
+    std::unordered_map<ObjectPath, std::unique_ptr<Motherboard>> motherboard;
 };
 
 } // namespace dbus