xref: /openbmc/phosphor-logging/extensions/openpower-pels/pel_entry.cpp (revision 8a09b982ddeb0c1e13190d9cd196e06a778d6140)
1 #include "pel_entry.hpp"
2 
3 #include "pel_types.hpp"
4 #include "repository.hpp"
5 
6 #include <xyz/openbmc_project/Common/error.hpp>
7 
8 namespace openpower
9 {
10 namespace pels
11 {
12 
13 namespace common_error = sdbusplus::xyz::openbmc_project::Common::Error;
14 
managementSystemAck(bool value)15 bool PELEntry::managementSystemAck(bool value)
16 {
17     auto current = sdbusplus::server::org::open_power::logging::pel::Entry::
18         managementSystemAck();
19     if (value != current)
20     {
21         current = sdbusplus::server::org::open_power::logging::pel::Entry::
22             managementSystemAck(value);
23 
24         Repository::LogID id{Repository::LogID::Obmc(getMyId())};
25         if (auto logId = _repo->getLogID(id); logId.has_value())
26         {
27             // Update HMC acknowledge bit in PEL
28             _repo->setPELHMCTransState(
29                 logId->pelID.id,
30                 (value ? TransmissionState::acked : TransmissionState::newPEL));
31         }
32         else
33         {
34             throw common_error::InvalidArgument();
35         }
36     }
37     return current;
38 }
39 
40 } // namespace pels
41 } // namespace openpower
42