/* * SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & * AFFILIATES. All rights reserved. * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include "MctpRequester.hpp" #include #include #include #include #include #include #include #include constexpr uint8_t gpuPeakPowerSensorId{0}; // GPU Power Sensor Averaging Interval in seconds, 0 implies default constexpr uint8_t gpuPowerAveragingIntervalInSec{0}; struct NvidiaGpuPowerPeakReading { public: NvidiaGpuPowerPeakReading(mctp::MctpRequester& mctpRequester, const std::string& name, uint8_t eid, uint8_t sensorId, sdbusplus::asio::object_server& objectServer); ~NvidiaGpuPowerPeakReading(); void update(); private: void processResponse(int sendRecvMsgResult); uint8_t eid{}; uint8_t sensorId; uint8_t averagingInterval{gpuPowerAveragingIntervalInSec}; std::tuple< uint64_t, std::vector>> readings; mctp::MctpRequester& mctpRequester; sdbusplus::asio::object_server& objectServer; std::array request{}; std::array response{}; std::shared_ptr telemetryReportInterface; };