/* IBM_PROLOG_BEGIN_TAG */ /* This is an automatically generated prolog. */ /* */ /* $Source: src/usr/errl/plugins/errludbuild.H $ */ /* */ /* OpenPOWER HostBoot Project */ /* */ /* Contributors Listed Below - COPYRIGHT 2017 */ /* [+] International Business Machines Corp. */ /* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ /* You may obtain a copy of the License at */ /* */ /* http://www.apache.org/licenses/LICENSE-2.0 */ /* */ /* Unless required by applicable law or agreed to in writing, software */ /* distributed under the License is distributed on an "AS IS" BASIS, */ /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ /* implied. See the License for the specific language governing */ /* permissions and limitations under the License. */ /* */ /* IBM_PROLOG_END_TAG */ #ifndef ERRL_UDBUILD_H #define ERRL_UDBUILD_H /** * @file errludbuild.H * * Defines the ErrlUserDetailsParserBuild class that parses XIP image build * information user detail in an error log */ #include "errluserdetails.H" #include <../devicefw/userif.H> #include <../devicefw/driverif.H> namespace ERRORLOG { /** * @class ErrlUserDetailsBuild * * Parses Build user detail in an error log */ class ErrlUserDetailsParserBuild : public ErrlUserDetailsParser { public: /** * @brief Constructor */ ErrlUserDetailsParserBuild() {} /** * @brief Destructor */ virtual ~ErrlUserDetailsParserBuild() {} /** * @brief Parses image build information user detail data from an error log * * @param i_version Version of the data * @param i_parse ErrlUsrParser object for outputting information * @param i_pBuffer Pointer to buffer containing detail data * @param i_buflen Length of the buffer */ virtual void parse(errlver_t i_version, ErrlUsrParser & i_parser, void * i_pBuffer, const uint32_t i_buflen) const { struct imageBuild_t // Copied from src/include/usr/util/utilxipimage.H { uint32_t buildDate; // Generated by `date +%Y%m%d`, eg, 20110630 uint32_t buildTime; // Generated by `date +%H%M`, eg, 0756 char buildTag[20]; // Generated when releasing image to fw } PACKED; if(i_buflen == sizeof(imageBuild_t)) { imageBuild_t* buildData = static_cast(i_pBuffer); i_parser.PrintNumber("Build Date", "%8d", ntohl(buildData->buildDate)); i_parser.PrintNumber("Build Time", "%04d", ntohl(buildData->buildTime)); i_parser.PrintString("Build Tag", buildData->buildTag); } else { i_parser.PrintNumber("Build Buffer length", "0x%X", i_buflen); i_parser.PrintNumber("Expected length", "0x%X", sizeof(imageBuild_t)); i_parser.PrintHexDump(i_pBuffer, i_buflen); } } // parse private: // Disabled ErrlUserDetailsParserBuild(const ErrlUserDetailsParserBuild &); ErrlUserDetailsParserBuild & operator=( const ErrlUserDetailsParserBuild &); }; } #endif