#include "pel_entry.hpp"

#include <iostream>
#include <xyz/openbmc_project/Common/error.hpp>

namespace openpower
{
namespace pels
{

namespace common_error = sdbusplus::xyz::openbmc_project::Common::Error;

bool PELEntry::managementSystemAck(bool value)
{
    auto current = sdbusplus::org::open_power::Logging::PEL::server::Entry::
        managementSystemAck();
    if (value != current)
    {
        current = sdbusplus::org::open_power::Logging::PEL::server::Entry::
            managementSystemAck(value);

        Repository::LogID id{Repository::LogID::Obmc(getMyId())};
        if (auto logId = _repo->getLogID(id); logId.has_value())
        {
            // Update HMC acknowledge bit in PEL
            _repo->setPELHMCTransState(
                logId->pelID.id,
                (value ? TransmissionState::acked : TransmissionState::newPEL));
        }
        else
        {
            throw common_error::InvalidArgument();
        }
    }
    return current;
}

} // namespace pels
} // namespace openpower
