/* * SPDX-FileCopyrightText: Copyright OpenBMC Authors * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include "MctpRequester.hpp" #include #include #include #include #include #include #include #include #include struct NvidiaPcieInterface : public std::enable_shared_from_this { public: NvidiaPcieInterface(std::shared_ptr& conn, mctp::MctpRequester& mctpRequester, const std::string& name, const std::string& path, uint8_t eid, sdbusplus::asio::object_server& objectServer); void update(); static size_t decodeLinkWidth(uint32_t value); private: static constexpr size_t maxTelemetryValues = 64; void processResponse(const std::error_code& ec, std::span response); static std::string mapPcieGeneration(uint32_t value); uint8_t eid{}; std::string path; std::shared_ptr conn; mctp::MctpRequester& mctpRequester; std::array request{}; std::shared_ptr pcieDeviceInterface; std::shared_ptr switchInterface; std::vector telemetryValues{maxTelemetryValues}; };