pldm: Implement Fan Interface

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

Change-Id: I353085817abb3646e607659d116207660d0bd0d4
Signed-off-by: Archana Kakani <archana.kakani@ibm.com>
diff --git a/host-bmc/dbus/custom_dbus.cpp b/host-bmc/dbus/custom_dbus.cpp
index d0979e9..e0d4fbf 100644
--- a/host-bmc/dbus/custom_dbus.cpp
+++ b/host-bmc/dbus/custom_dbus.cpp
@@ -126,5 +126,16 @@
                                 pldm::utils::DBusHandler::getBus(), path));
     }
 }
+
+void CustomDBus::implementFanInterface(const std::string& path)
+{
+    if (!fan.contains(path))
+    {
+        fan.emplace(path,
+                    std::make_unique<Fan>(pldm::utils::DBusHandler::getBus(),
+                                          path.c_str()));
+    }
+}
+
 } // namespace dbus
 } // namespace pldm