1*733b39daSArchana Kakani #pragma once 2*733b39daSArchana Kakani 3*733b39daSArchana Kakani #include <sdbusplus/bus.hpp> 4*733b39daSArchana Kakani #include <sdbusplus/server.hpp> 5*733b39daSArchana Kakani #include <sdbusplus/server/object.hpp> 6*733b39daSArchana Kakani #include <xyz/openbmc_project/Inventory/Item/PCIeDevice/server.hpp> 7*733b39daSArchana Kakani #include <xyz/openbmc_project/Inventory/Item/PCIeSlot/common.hpp> 8*733b39daSArchana Kakani 9*733b39daSArchana Kakani #include <string> 10*733b39daSArchana Kakani 11*733b39daSArchana Kakani namespace pldm 12*733b39daSArchana Kakani { 13*733b39daSArchana Kakani namespace dbus 14*733b39daSArchana Kakani { 15*733b39daSArchana Kakani using ItemDevice = sdbusplus::server::object_t< 16*733b39daSArchana Kakani sdbusplus::xyz::openbmc_project::Inventory::Item::server::PCIeDevice>; 17*733b39daSArchana Kakani using Generations = sdbusplus::common::xyz::openbmc_project::inventory::item:: 18*733b39daSArchana Kakani PCIeSlot::Generations; 19*733b39daSArchana Kakani 20*733b39daSArchana Kakani /** 21*733b39daSArchana Kakani * @class PCIeDevice 22*733b39daSArchana Kakani * @brief PCIeDevice DBUS support, also includes the device properties 23*733b39daSArchana Kakani */ 24*733b39daSArchana Kakani 25*733b39daSArchana Kakani class PCIeDevice : public ItemDevice 26*733b39daSArchana Kakani { 27*733b39daSArchana Kakani public: 28*733b39daSArchana Kakani PCIeDevice() = delete; 29*733b39daSArchana Kakani ~PCIeDevice() = default; 30*733b39daSArchana Kakani PCIeDevice(const PCIeDevice&) = delete; 31*733b39daSArchana Kakani PCIeDevice& operator=(const PCIeDevice&) = delete; 32*733b39daSArchana Kakani PCIeDevice(sdbusplus::bus_t & bus,const std::string & objPath)33*733b39daSArchana Kakani PCIeDevice(sdbusplus::bus_t& bus, const std::string& objPath) : 34*733b39daSArchana Kakani ItemDevice(bus, objPath.c_str()) 35*733b39daSArchana Kakani {} 36*733b39daSArchana Kakani 37*733b39daSArchana Kakani /** Get lanes in use */ 38*733b39daSArchana Kakani size_t lanesInUse() const override; 39*733b39daSArchana Kakani 40*733b39daSArchana Kakani /** Set lanes in use */ 41*733b39daSArchana Kakani size_t lanesInUse(size_t value) override; 42*733b39daSArchana Kakani 43*733b39daSArchana Kakani /** Get Generation in use */ 44*733b39daSArchana Kakani Generations generationInUse() const override; 45*733b39daSArchana Kakani 46*733b39daSArchana Kakani /** Set Generation in use */ 47*733b39daSArchana Kakani Generations generationInUse(Generations value) override; 48*733b39daSArchana Kakani }; 49*733b39daSArchana Kakani 50*733b39daSArchana Kakani } // namespace dbus 51*733b39daSArchana Kakani } // namespace pldm 52