/* * SPDX-FileCopyrightText: Copyright OpenBMC Authors * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include "MctpRequester.hpp" #include "Thresholds.hpp" #include "sensor.hpp" #include #include #include #include #include #include #include #include #include #include constexpr uint8_t gpuPowerSensorId{0}; struct NvidiaGpuPowerSensor : public Sensor, public std::enable_shared_from_this { public: NvidiaGpuPowerSensor( std::shared_ptr& conn, mctp::MctpRequester& mctpRequester, const std::string& name, const std::string& sensorConfiguration, uint8_t eid, uint8_t sensorId, sdbusplus::asio::object_server& objectServer, std::vector&& thresholdData); ~NvidiaGpuPowerSensor() override; void checkThresholds() override; void update(); private: void processResponse(const std::error_code& ec, std::span buffer); uint8_t eid{}; uint8_t sensorId; uint8_t averagingInterval = 0; std::shared_ptr conn; mctp::MctpRequester& mctpRequester; sdbusplus::asio::object_server& objectServer; std::array request{}; };