| #include "user_header.hpp" |
| |
| #include <phosphor-logging/log.hpp> |
| |
| 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<level::ERR>("Cannot unflatten user header", |
| entry("ERROR=%s", e.what())); |
| _valid = false; |
| } |
| } |
| |
| void UserHeader::validate() |
| { |
| bool failed = false; |
| if (header().id != userHeaderSectionID) |
| { |
| log<level::ERR>("Invalid user header section ID", |
| entry("ID=0x%X", header().id)); |
| failed = true; |
| return; |
| } |
| |
| if (header().version != userHeaderVersion) |
| { |
| log<level::ERR>("Invalid user header version", |
| entry("VERSION=0x%X", header().version)); |
| failed = true; |
| return; |
| } |
| |
| _valid = (failed) ? false : true; |
| } |
| |
| } // namespace pels |
| } // namespace openpower |