14ecdfaaaSHarshit Aghera /* 24ecdfaaaSHarshit Aghera * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & 34ecdfaaaSHarshit Aghera * AFFILIATES. All rights reserved. 44ecdfaaaSHarshit Aghera * SPDX-License-Identifier: Apache-2.0 54ecdfaaaSHarshit Aghera */ 64ecdfaaaSHarshit Aghera 74ecdfaaaSHarshit Aghera #pragma once 84ecdfaaaSHarshit Aghera 94ecdfaaaSHarshit Aghera #include "MctpRequester.hpp" 104ecdfaaaSHarshit Aghera #include "NvidiaDeviceDiscovery.hpp" 114ecdfaaaSHarshit Aghera #include "NvidiaGpuSensor.hpp" 124ecdfaaaSHarshit Aghera 134ecdfaaaSHarshit Aghera #include <boost/asio/io_context.hpp> 144ecdfaaaSHarshit Aghera #include <boost/asio/steady_timer.hpp> 154ecdfaaaSHarshit Aghera #include <sdbusplus/asio/connection.hpp> 164ecdfaaaSHarshit Aghera #include <sdbusplus/asio/object_server.hpp> 174ecdfaaaSHarshit Aghera 184ecdfaaaSHarshit Aghera #include <chrono> 194ecdfaaaSHarshit Aghera #include <cstdint> 204ecdfaaaSHarshit Aghera #include <memory> 214ecdfaaaSHarshit Aghera #include <string> 224ecdfaaaSHarshit Aghera 234ecdfaaaSHarshit Aghera class GpuDevice 244ecdfaaaSHarshit Aghera { 254ecdfaaaSHarshit Aghera public: 264ecdfaaaSHarshit Aghera GpuDevice(const SensorConfigs& configs, const std::string& name, 274ecdfaaaSHarshit Aghera const std::string& path, 284ecdfaaaSHarshit Aghera const std::shared_ptr<sdbusplus::asio::connection>& conn, 294ecdfaaaSHarshit Aghera uint8_t eid, boost::asio::io_context& io, 304ecdfaaaSHarshit Aghera mctp::MctpRequester& mctpRequester, 314ecdfaaaSHarshit Aghera sdbusplus::asio::object_server& objectServer); 324ecdfaaaSHarshit Aghera 334ecdfaaaSHarshit Aghera const std::string& getPath() const 344ecdfaaaSHarshit Aghera { 354ecdfaaaSHarshit Aghera return path; 364ecdfaaaSHarshit Aghera } 374ecdfaaaSHarshit Aghera 384ecdfaaaSHarshit Aghera private: 394ecdfaaaSHarshit Aghera void makeSensors(); 404ecdfaaaSHarshit Aghera 414ecdfaaaSHarshit Aghera void read(); 424ecdfaaaSHarshit Aghera 434ecdfaaaSHarshit Aghera uint8_t eid{}; 444ecdfaaaSHarshit Aghera 454ecdfaaaSHarshit Aghera std::chrono::milliseconds sensorPollMs; 464ecdfaaaSHarshit Aghera 474ecdfaaaSHarshit Aghera boost::asio::steady_timer waitTimer; 484ecdfaaaSHarshit Aghera 494ecdfaaaSHarshit Aghera mctp::MctpRequester& mctpRequester; 504ecdfaaaSHarshit Aghera 514ecdfaaaSHarshit Aghera std::shared_ptr<sdbusplus::asio::connection> conn; 524ecdfaaaSHarshit Aghera 534ecdfaaaSHarshit Aghera sdbusplus::asio::object_server& objectServer; 544ecdfaaaSHarshit Aghera 554ecdfaaaSHarshit Aghera std::shared_ptr<NvidiaGpuTempSensor> tempSensor; 56*ba138daeSHarshit Aghera std::shared_ptr<NvidiaGpuTempSensor> tLimitSensor; 574ecdfaaaSHarshit Aghera 584ecdfaaaSHarshit Aghera SensorConfigs configs; 594ecdfaaaSHarshit Aghera 604ecdfaaaSHarshit Aghera std::string name; 614ecdfaaaSHarshit Aghera 624ecdfaaaSHarshit Aghera std::string path; 634ecdfaaaSHarshit Aghera }; 64