xref: /openbmc/pldm/host-bmc/dbus/pcie_device.hpp (revision 733b39da)
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