blob: 08f9750f390b9691703671a47035bf0ebc7b8d18 [file] [log] [blame]
George Liu682ee182020-12-25 15:24:33 +08001#include "custom_dbus.hpp"
2
3namespace pldm
4{
5namespace dbus
6{
7void CustomDBus::setLocationCode(const std::string& path, std::string value)
8{
9 if (!location.contains(path))
10 {
11 location.emplace(path,
12 std::make_unique<LocationIntf>(
13 pldm::utils::DBusHandler::getBus(), path.c_str()));
14 }
15
16 location.at(path)->locationCode(value);
17}
18
Patrick Williams366507c2025-02-03 14:28:01 -050019std::optional<std::string> CustomDBus::getLocationCode(
20 const std::string& path) const
George Liu682ee182020-12-25 15:24:33 +080021{
22 if (location.contains(path))
23 {
24 return location.at(path)->locationCode();
25 }
26
27 return std::nullopt;
28}
29
Kamalkumar Patel56da5742024-05-23 04:53:07 -050030void CustomDBus::implementCpuCoreInterface(const std::string& path)
31{
32 if (!cpuCore.contains(path))
33 {
34 cpuCore.emplace(path, std::make_unique<CPUCore>(
35 pldm::utils::DBusHandler::getBus(), path));
36 }
37}
38
39void CustomDBus::setMicroCode(const std::string& path, uint32_t value)
40{
41 if (!cpuCore.contains(path))
42 {
43 cpuCore.emplace(path, std::make_unique<CPUCore>(
44 pldm::utils::DBusHandler::getBus(), path));
45 }
46 cpuCore.at(path)->microcode(value);
47}
48
49std::optional<uint32_t> CustomDBus::getMicroCode(const std::string& path) const
50{
51 if (cpuCore.contains(path))
52 {
53 return cpuCore.at(path)->microcode();
54 }
55
56 return std::nullopt;
57}
Archana Kakanibf1fd272024-06-05 13:25:53 -050058
59void CustomDBus::implementPCIeSlotInterface(const std::string& path)
60{
61 if (!pcieSlot.contains(path))
62 {
63 pcieSlot.emplace(path, std::make_unique<PCIeSlot>(
64 pldm::utils::DBusHandler::getBus(), path));
65 }
66}
67
68void CustomDBus::setSlotType(const std::string& path,
69 const std::string& slotType)
70{
71 auto typeOfSlot =
72 pldm::dbus::PCIeSlot::convertSlotTypesFromString(slotType);
73 if (pcieSlot.contains(path))
74 {
75 pcieSlot.at(path)->slotType(typeOfSlot);
76 }
77}
Archana Kakani733b39d2024-06-05 21:05:20 -050078
79void CustomDBus::implementPCIeDeviceInterface(const std::string& path)
80{
81 if (!pcieDevice.contains(path))
82 {
83 pcieDevice.emplace(path, std::make_unique<PCIeDevice>(
84 pldm::utils::DBusHandler::getBus(), path));
85 }
86}
87
88void CustomDBus::setPCIeDeviceProps(const std::string& path, size_t lanesInUse,
89 const std::string& value)
90{
91 Generations generationsInUse =
92 pldm::dbus::PCIeSlot::convertGenerationsFromString(value);
93
94 if (pcieDevice.contains(path))
95 {
96 pcieDevice.at(path)->lanesInUse(lanesInUse);
97 pcieDevice.at(path)->generationInUse(generationsInUse);
98 }
99}
100
Archana Kakanib40f4f82024-06-06 01:04:38 -0500101void CustomDBus::implementCableInterface(const std::string& path)
102{
103 if (!cable.contains(path))
104 {
105 cable.emplace(path, std::make_unique<Cable>(
106 pldm::utils::DBusHandler::getBus(), path));
107 }
108}
109
110void CustomDBus::setCableAttributes(const std::string& path, double length,
111 const std::string& cableDescription)
112{
113 if (cable.contains(path))
114 {
115 cable.at(path)->length(length);
116 cable.at(path)->cableTypeDescription(cableDescription);
117 }
118}
119
Kamalkumar Patel2ed986c2024-05-08 02:20:47 -0500120void CustomDBus::implementMotherboardInterface(const std::string& path)
121{
122 if (!motherboard.contains(path))
123 {
124 motherboard.emplace(path,
125 std::make_unique<Motherboard>(
126 pldm::utils::DBusHandler::getBus(), path));
127 }
128}
Archana Kakani413f51e2025-02-03 04:14:36 -0600129
Archana Kakani42876b62025-02-04 04:22:29 -0600130void CustomDBus::implementFabricAdapter(const std::string& path)
131{
132 if (!fabricAdapter.contains(path))
133 {
134 fabricAdapter.emplace(
135 path, std::make_unique<FabricAdapter>(
136 pldm::utils::DBusHandler::getBus(), path.c_str()));
137 }
138}
139
Archana Kakani24e9a9b2025-02-04 00:27:25 -0600140void CustomDBus::implementPowerSupplyInterface(const std::string& path)
141{
142 if (!powersupply.contains(path))
143 {
144 powersupply.emplace(
145 path, std::make_unique<PowerSupply>(
146 pldm::utils::DBusHandler::getBus(), path.c_str()));
147 }
148}
149
Archana Kakani413f51e2025-02-03 04:14:36 -0600150void CustomDBus::implementFanInterface(const std::string& path)
151{
152 if (!fan.contains(path))
153 {
154 fan.emplace(path,
155 std::make_unique<Fan>(pldm::utils::DBusHandler::getBus(),
156 path.c_str()));
157 }
158}
159
Archana Kakani17b1e8a2025-02-04 03:50:24 -0600160void CustomDBus::implementConnecterInterface(const std::string& path)
161{
162 if (!connector.contains(path))
163 {
164 connector.emplace(
165 path, std::make_unique<Connector>(
166 pldm::utils::DBusHandler::getBus(), path.c_str()));
167 }
168}
169
Archana Kakanidb65c3b2025-02-03 05:27:28 -0600170void CustomDBus::implementChassisInterface(const std::string& path)
171{
172 if (!chassis.contains(path))
173 {
174 chassis.emplace(path,
175 std::make_unique<ItemChassis>(
176 pldm::utils::DBusHandler::getBus(), path.c_str()));
177 }
178}
179
Archana Kakani1634a6e2025-02-04 01:12:29 -0600180void CustomDBus::implementAssetInterface(const std::string& path)
181{
182 if (!asset.contains(path))
183 {
184 asset.emplace(path, std::make_unique<Asset>(
185 pldm::utils::DBusHandler::getBus(), path));
186 }
187}
188
Archana Kakanif9355372025-02-04 03:13:24 -0600189void CustomDBus::setAvailabilityState(const std::string& path,
190 const bool& state)
191{
192 if (!availabilityState.contains(path))
193 {
194 availabilityState.emplace(
195 path, std::make_unique<Availability>(
196 pldm::utils::DBusHandler::getBus(), path.c_str()));
197 }
198
199 availabilityState.at(path)->available(state);
200}
201
George Liu682ee182020-12-25 15:24:33 +0800202} // namespace dbus
203} // namespace pldm