#include "user_header.hpp" #include namespace openpower { namespace pels { using namespace phosphor::logging; Stream& operator>>(Stream& s, UserHeader& uh) { s >> uh._header >> uh._eventSubsystem >> uh._eventScope >> uh._eventSeverity >> uh._eventType >> uh._reserved4Byte1 >> uh._problemDomain >> uh._problemVector >> uh._actionFlags >> uh._reserved4Byte2; return s; } Stream& operator<<(Stream& s, UserHeader& uh) { s << uh._header << uh._eventSubsystem << uh._eventScope << uh._eventSeverity << uh._eventType << uh._reserved4Byte1 << uh._problemDomain << uh._problemVector << uh._actionFlags << uh._reserved4Byte2; return s; } UserHeader::UserHeader(Stream& pel) { try { pel >> *this; validate(); } catch (const std::exception& e) { log("Cannot unflatten user header", entry("ERROR=%s", e.what())); _valid = false; } } void UserHeader::validate() { bool failed = false; if (header().id != userHeaderSectionID) { log("Invalid user header section ID", entry("ID=0x%X", header().id)); failed = true; return; } if (header().version != userHeaderVersion) { log("Invalid user header version", entry("VERSION=0x%X", header().version)); failed = true; return; } _valid = (failed) ? false : true; } } // namespace pels } // namespace openpower