/* * 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 gpuTempSensorId{0}; constexpr uint8_t gpuTLimitSensorId{2}; constexpr uint8_t gpuDramTempSensorId{1}; constexpr uint8_t smaTempSensorId{5}; struct NvidiaGpuTempSensor : public Sensor, public std::enable_shared_from_this { public: NvidiaGpuTempSensor( 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); ~NvidiaGpuTempSensor() 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 getTemperatureReadingRequest{}; std::array getTemperatureReadingResponse{}; };