xref: /openbmc/phosphor-logging/extensions/openpower-pels/pel_entry.cpp (revision 6ddbf69e835749143440584d54e3ccb4e39ee3df)
12fb10211SVijay Lobo #include "pel_entry.hpp"
22fb10211SVijay Lobo 
32fb10211SVijay Lobo #include <xyz/openbmc_project/Common/error.hpp>
42fb10211SVijay Lobo 
52fb10211SVijay Lobo namespace openpower
62fb10211SVijay Lobo {
72fb10211SVijay Lobo namespace pels
82fb10211SVijay Lobo {
92fb10211SVijay Lobo 
102fb10211SVijay Lobo namespace common_error = sdbusplus::xyz::openbmc_project::Common::Error;
112fb10211SVijay Lobo 
managementSystemAck(bool value)122fb10211SVijay Lobo bool PELEntry::managementSystemAck(bool value)
132fb10211SVijay Lobo {
14*6ddbf69eSWilly Tu     auto current = sdbusplus::server::org::open_power::logging::pel::Entry::
152fb10211SVijay Lobo         managementSystemAck();
162fb10211SVijay Lobo     if (value != current)
172fb10211SVijay Lobo     {
18*6ddbf69eSWilly Tu         current = sdbusplus::server::org::open_power::logging::pel::Entry::
192fb10211SVijay Lobo             managementSystemAck(value);
202fb10211SVijay Lobo 
212fb10211SVijay Lobo         Repository::LogID id{Repository::LogID::Obmc(getMyId())};
222fb10211SVijay Lobo         if (auto logId = _repo->getLogID(id); logId.has_value())
232fb10211SVijay Lobo         {
242fb10211SVijay Lobo             // Update HMC acknowledge bit in PEL
252fb10211SVijay Lobo             _repo->setPELHMCTransState(
262fb10211SVijay Lobo                 logId->pelID.id,
272fb10211SVijay Lobo                 (value ? TransmissionState::acked : TransmissionState::newPEL));
282fb10211SVijay Lobo         }
292fb10211SVijay Lobo         else
302fb10211SVijay Lobo         {
312fb10211SVijay Lobo             throw common_error::InvalidArgument();
322fb10211SVijay Lobo         }
332fb10211SVijay Lobo     }
342fb10211SVijay Lobo     return current;
352fb10211SVijay Lobo }
362fb10211SVijay Lobo 
372fb10211SVijay Lobo } // namespace pels
382fb10211SVijay Lobo } // namespace openpower
39