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