/* * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & * AFFILIATES. All rights reserved. * 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 constexpr uint8_t gpuEnergySensorId{0}; struct NvidiaGpuEnergySensor : public Sensor { public: NvidiaGpuEnergySensor( 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); ~NvidiaGpuEnergySensor() override; void checkThresholds() override; void update(); private: void processResponse(int sendRecvMsgResult); uint8_t eid{}; uint8_t sensorId; std::shared_ptr conn; mctp::MctpRequester& mctpRequester; sdbusplus::asio::object_server& objectServer; std::array request{}; std::array response{}; };