xref: /openbmc/dbus-sensors/src/nvidia-gpu/NvidiaGpuDevice.hpp (revision ba138dae62cfd96571372a3e22317dc57ab72c80)
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