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/fan.hpp b/host-bmc/dbus/fan.hpp
new file mode 100644
index 0000000..61a995d
--- /dev/null
+++ b/host-bmc/dbus/fan.hpp
@@ -0,0 +1,33 @@
+#pragma once
+
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/server.hpp>
+#include <sdbusplus/server/object.hpp>
+#include <xyz/openbmc_project/Inventory/Item/Fan/server.hpp>
+
+#include <string>
+
+namespace pldm
+{
+namespace dbus
+{
+using ItemFan = sdbusplus::server::object_t<
+    sdbusplus::xyz::openbmc_project::Inventory::Item::server::Fan>;
+
+class Fan : public ItemFan
+{
+  public:
+    Fan() = delete;
+    ~Fan() = default;
+    Fan(const Fan&) = delete;
+    Fan& operator=(const Fan&) = delete;
+    Fan(Fan&&) = delete;
+    Fan& operator=(Fan&&) = delete;
+
+    Fan(sdbusplus::bus_t& bus, const std::string& objPath) :
+        ItemFan(bus, objPath.c_str())
+    {}
+};
+
+} // namespace dbus
+} // namespace pldm