#include "pel_minimal.hpp" #include "stream.hpp" namespace attn { namespace pel { PelMinimal::PelMinimal(std::vector& data) { initialize(data); } void PelMinimal::initialize(std::vector& data) { Stream pelData{data}; _ph = std::make_unique(pelData); _uh = std::make_unique(pelData); _ps = std::make_unique(pelData); _eh = std::make_unique(pelData); } void PelMinimal::raw(std::vector& pelBuffer) const { Stream pelData{pelBuffer}; // stream from object to buffer _ph->flatten(pelData); _uh->flatten(pelData); _ps->flatten(pelData); _eh->flatten(pelData); } size_t PelMinimal::size() const { size_t size = 0; // size of private header section if (_ph) { size += _ph->header().size; } // size of user header section if (_uh) { size += _uh->header().size; } // size of primary SRC section if (_ps) { size += _ps->header().size; } // size of extended user section if (_eh) { size += _eh->header().size; } return ((size > _maxPELSize) ? _maxPELSize : size); } void PelMinimal::setSubsystem(uint8_t subsystem) { _uh->setSubsystem(subsystem); } void PelMinimal::setSeverity(uint8_t severity) { _uh->setSeverity(severity); } void PelMinimal::setType(uint8_t type) { _uh->setType(type); } void PelMinimal::setAction(uint16_t action) { _uh->setAction(action); } void PelMinimal::setSrcWords(std::array srcWords) { _ps->setSrcWords(srcWords); } void PelMinimal::setAsciiString(std::array asciiString) { _ps->setAsciiString(asciiString); } uint8_t PelMinimal::getSectionCount() { return _ph->getSectionCount(); } void PelMinimal::setSectionCount(uint8_t sectionCount) { _ph->setSectionCount(sectionCount); } void PelMinimal::setSymptomId(const std::string& symptomId) { _eh->setSymptomId(symptomId); } void PelMinimal::setPlid(uint32_t plid) { _ph->setPlid(plid); } } // namespace pel } // namespace attn