host-bmc: Implement Asset interface

Adding support to host Asset dbus interface.  Based on the Topology data
received from remote PLDM terminus, PLDM hosts the dbus interface.  The
Asset interface is defined at [1].

Tested:
   Functional test passed

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

Change-Id: Ia32e69861192fca6db8c1613fbec281ca3faa3e8
Signed-off-by: Archana Kakani <archana.kakani@ibm.com>
diff --git a/host-bmc/dbus/asset.hpp b/host-bmc/dbus/asset.hpp
new file mode 100644
index 0000000..e1188d7
--- /dev/null
+++ b/host-bmc/dbus/asset.hpp
@@ -0,0 +1,41 @@
+#pragma once
+
+#include <sdbusplus/bus.hpp>
+#include <sdbusplus/server.hpp>
+#include <sdbusplus/server/object.hpp>
+#include <xyz/openbmc_project/Inventory/Decorator/Asset/server.hpp>
+
+#include <string>
+
+namespace pldm
+{
+namespace dbus
+{
+
+using ItemAsset = sdbusplus::server::object_t<
+    sdbusplus::xyz::openbmc_project::Inventory::Decorator::server::Asset>;
+
+class Asset : public ItemAsset
+{
+  public:
+    Asset() = delete;
+    ~Asset() = default;
+    Asset(const Asset&) = delete;
+    Asset& operator=(const Asset&) = delete;
+    Asset(Asset&&) = delete;
+    Asset& operator=(Asset&&) = delete;
+
+    Asset(sdbusplus::bus_t& bus, const std::string& objPath) :
+        ItemAsset(bus, objPath.c_str()), path(objPath)
+    {
+        // no need to save this in pldm memory
+    }
+
+    std::string partNumber(std::string value) override;
+
+  private:
+    std::string path;
+};
+
+} // namespace dbus
+} // namespace pldm