xref: /openbmc/pldm/host-bmc/dbus/pcie_slot.hpp (revision 423e8f53)
1 #pragma once
2 
3 #include <sdbusplus/bus.hpp>
4 #include <sdbusplus/server.hpp>
5 #include <sdbusplus/server/object.hpp>
6 #include <xyz/openbmc_project/Inventory/Item/PCIeSlot/server.hpp>
7 
8 #include <string>
9 
10 namespace pldm
11 {
12 namespace dbus
13 {
14 using ItemSlot = sdbusplus::server::object_t<
15     sdbusplus::xyz::openbmc_project::Inventory::Item::server::PCIeSlot>;
16 
17 /**
18  * @class PCIeSlot
19  * @brief PCIeSlot support includes the slot properties and functions
20  */
21 class PCIeSlot : public ItemSlot
22 {
23   public:
24     PCIeSlot() = delete;
25     ~PCIeSlot() = default;
26     PCIeSlot(const PCIeSlot&) = delete;
27     PCIeSlot& operator=(const PCIeSlot&) = delete;
28 
29     PCIeSlot(sdbusplus::bus_t& bus, const std::string& objPath) :
30         ItemSlot(bus, objPath.c_str())
31     {}
32 
33     /** Get value of Generation */
34     Generations generation() const override;
35 
36     /** Set value of Generation */
37     Generations generation(Generations value) override;
38 
39     /** Get value of Lanes */
40     size_t lanes() const override;
41 
42     /** Set value of Lanes */
43     size_t lanes(size_t value) override;
44 
45     /** Get value of SlotType */
46     SlotTypes slotType() const override;
47 
48     /** Set value of SlotType */
49     SlotTypes slotType(SlotTypes value) override;
50 
51     /** Get value of HotPluggable */
52     bool hotPluggable() const override;
53 
54     /** Set value of HotPluggable */
55     bool hotPluggable(bool value) override;
56 };
57 
58 } // namespace dbus
59 } // namespace pldm
60