/* * SPDX-FileCopyrightText: Copyright OpenBMC Authors * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include "MctpRequester.hpp" #include "NvidiaDeviceDiscovery.hpp" #include "NvidiaPcieInterface.hpp" #include #include #include #include #include #include #include #include constexpr const char* pcieDevicePathPrefix = "/xyz/openbmc_project/inventory/pcie_devices/"; class PcieDevice { public: PcieDevice(const SensorConfigs& configs, const std::string& name, const std::string& path, const std::shared_ptr& conn, uint8_t eid, boost::asio::io_context& io, mctp::MctpRequester& mctpRequester, sdbusplus::asio::object_server& objectServer); const std::string& getPath() const { return path; } void init(); private: void makeSensors(); void read(); uint8_t eid{}; std::chrono::milliseconds sensorPollMs; boost::asio::steady_timer waitTimer; mctp::MctpRequester& mctpRequester; std::shared_ptr conn; sdbusplus::asio::object_server& objectServer; SensorConfigs configs; std::string name; std::string path; std::shared_ptr pcieInterface; };