xref: /openbmc/dbus-sensors/src/nvidia-gpu/NvidiaDriverInformation.hpp (revision b341fa2b68ff4d10c3eca0f58a16448b475d1cff)
1 /*
2  * SPDX-FileCopyrightText: Copyright OpenBMC Authors
3  * SPDX-License-Identifier: Apache-2.0
4  */
5 
6 #pragma once
7 
8 #include "MctpRequester.hpp"
9 
10 #include <NvidiaGpuMctpVdm.hpp>
11 #include <sdbusplus/asio/connection.hpp>
12 #include <sdbusplus/asio/object_server.hpp>
13 
14 #include <array>
15 #include <cstdint>
16 #include <memory>
17 #include <string>
18 
19 struct NvidiaDriverInformation :
20     public std::enable_shared_from_this<NvidiaDriverInformation>
21 {
22   public:
23     NvidiaDriverInformation(
24         std::shared_ptr<sdbusplus::asio::connection>& conn,
25         mctp::MctpRequester& mctpRequester, const std::string& name,
26         const sdbusplus::message::object_path& path, uint8_t eid,
27         sdbusplus::asio::object_server& objectServer);
28 
29     void update();
30 
31   private:
32     void processResponse(const std::error_code& ec,
33                          std::span<const uint8_t> buffer);
34 
35     uint8_t eid{};
36 
37     std::shared_ptr<sdbusplus::asio::connection> conn;
38 
39     mctp::MctpRequester& mctpRequester;
40 
41     std::array<uint8_t, sizeof(ocp::accelerator_management::CommonRequest)>
42         request{};
43 
44     std::shared_ptr<sdbusplus::asio::dbus_interface> versionInterface;
45     std::shared_ptr<sdbusplus::asio::dbus_interface> associationInterface;
46 };
47