Create GPU Inventory device
adds Item.accelerator interface for GPU devices
Tested
```
root@gb200nvl-obmc:~# busctl introspect xyz.openbmc_project.GpuSensor /xyz/openbmc_project/inventory/NVIDIA_GB200_GPU_0
NAME TYPE SIGNATURE RESULT/VALUE FLAGS
org.freedesktop.DBus.Introspectable interface - - -
.Introspect method - s -
org.freedesktop.DBus.Peer interface - - -
.GetMachineId method - s -
.Ping method - - -
org.freedesktop.DBus.Properties interface - - -
.Get method ss v -
.GetAll method s a{sv} -
.Set method ssv - -
.PropertiesChanged signal sa{sv}as - -
xyz.openbmc_project.Inventory.Item.Accelerator interface - - -
.Type property s "GPU" emits-change
```
Change-Id: I20434529860cb37889e63651bbcd97cadfa9d54e
Signed-off-by: Rohit PAI <ropai@nvidia.com>
diff --git a/src/nvidia-gpu/Inventory.hpp b/src/nvidia-gpu/Inventory.hpp
new file mode 100644
index 0000000..255a5a4
--- /dev/null
+++ b/src/nvidia-gpu/Inventory.hpp
@@ -0,0 +1,35 @@
+#pragma once
+
+#include "MctpRequester.hpp"
+
+#include <NvidiaGpuMctpVdm.hpp>
+#include <sdbusplus/asio/connection.hpp>
+#include <sdbusplus/asio/object_server.hpp>
+
+#include <array>
+#include <memory>
+#include <string>
+
+class Inventory
+{
+ public:
+ enum class DeviceType
+ {
+ Unknown,
+ GPU,
+ };
+
+ Inventory(const std::shared_ptr<sdbusplus::asio::connection>& conn,
+ sdbusplus::asio::object_server& objectServer,
+ const std::string& inventoryName,
+ mctp::MctpRequester& mctpRequester, DeviceType deviceType,
+ uint8_t eid);
+
+ private:
+ std::shared_ptr<sdbusplus::asio::dbus_interface> acceleratorInterface;
+
+ std::string name;
+ mctp::MctpRequester& mctpRequester;
+ DeviceType deviceType;
+ uint8_t eid;
+};