blob: ded741facf61286a9acc9a5fc43bd42ece3e00fb [file] [log] [blame]
Matt Spinler7f3c8a42022-01-21 09:26:06 -06001#include "pel_entry.hpp"
2
Matt Spinler8a09b982025-05-09 14:09:10 -05003#include "pel_types.hpp"
4#include "repository.hpp"
5
Matt Spinler7f3c8a42022-01-21 09:26:06 -06006#include <xyz/openbmc_project/Common/error.hpp>
7
8namespace openpower
9{
10namespace pels
11{
12
13namespace common_error = sdbusplus::xyz::openbmc_project::Common::Error;
14
15bool PELEntry::managementSystemAck(bool value)
16{
Willy Tu6ddbf692023-09-05 10:54:16 -070017 auto current = sdbusplus::server::org::open_power::logging::pel::Entry::
Matt Spinler7f3c8a42022-01-21 09:26:06 -060018 managementSystemAck();
19 if (value != current)
20 {
Willy Tu6ddbf692023-09-05 10:54:16 -070021 current = sdbusplus::server::org::open_power::logging::pel::Entry::
Matt Spinler7f3c8a42022-01-21 09:26:06 -060022 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