#include "dbus_impl_pdr.hpp"

#include "common/utils.hpp"
#include "xyz/openbmc_project/Common/error.hpp"

#include <libpldm/pdr.h>
#include <libpldm/pldm_types.h>

using namespace sdbusplus::xyz::openbmc_project::Common::Error;

namespace pldm
{
namespace dbus_api
{

std::vector<std::vector<uint8_t>> Pdr::findStateEffecterPDR(
    uint8_t tid, uint16_t entityID, uint16_t stateSetId)
{
    auto pdrs =
        pldm::utils::findStateEffecterPDR(tid, entityID, stateSetId, pdrRepo);

    if (pdrs.empty())
    {
        throw ResourceNotFound();
    }

    return pdrs;
}

std::vector<std::vector<uint8_t>>
    Pdr::findStateSensorPDR(uint8_t tid, uint16_t entityID, uint16_t stateSetId)
{
    auto pdrs =
        pldm::utils::findStateSensorPDR(tid, entityID, stateSetId, pdrRepo);
    if (pdrs.empty())
    {
        throw ResourceNotFound();
    }
    return pdrs;
}
} // namespace dbus_api
} // namespace pldm
