diff options
Diffstat (limited to 'extensions/openpower-pels/failing_mtms.hpp')
-rw-r--r-- | extensions/openpower-pels/failing_mtms.hpp | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/extensions/openpower-pels/failing_mtms.hpp b/extensions/openpower-pels/failing_mtms.hpp new file mode 100644 index 0000000..8f5cd44 --- /dev/null +++ b/extensions/openpower-pels/failing_mtms.hpp @@ -0,0 +1,114 @@ +#pragma once + +#include "data_interface.hpp" +#include "mtms.hpp" +#include "section.hpp" +#include "stream.hpp" + +namespace openpower +{ +namespace pels +{ + +/** + * @class FailingMTMS + * + * This represents the Failing Enclosure MTMS section in a PEL. + * It is a required section. In the BMC case, the enclosure is + * the system enclosure. + */ +class FailingMTMS : public Section +{ + public: + FailingMTMS() = delete; + ~FailingMTMS() = default; + FailingMTMS(const FailingMTMS&) = default; + FailingMTMS& operator=(const FailingMTMS&) = default; + FailingMTMS(FailingMTMS&&) = default; + FailingMTMS& operator=(FailingMTMS&&) = default; + + /** + * @brief Constructor + * + * @param[in] dataIface - The object to use to obtain + * the MTM and SN. + */ + explicit FailingMTMS(const DataInterfaceBase& dataIface); + + /** + * @brief Constructor + * + * Fills in this class's data fields from the stream. + * + * @param[in] pel - the PEL data stream + */ + explicit FailingMTMS(Stream& pel); + + /** + * @brief Flatten the section into the stream + * + * @param[in] stream - The stream to write to + */ + void flatten(Stream& stream) const override; + + /** + * @brief Returns the size of this section when flattened into a PEL + * + * @return size_t - the size of the section + */ + static constexpr size_t flattenedSize() + { + return Section::flattenedSize() + MTMS::flattenedSize(); + } + + /** + * @brief Returns the machine type+model as a string + * + * @return std::string the MTM + */ + std::string getMachineTypeModel() const + { + return _mtms.machineTypeAndModel(); + } + + /** + * @brief Returns the machine serial number as a string + * + * @return std::string the serial number + */ + std::string getMachineSerialNumber() const + { + return _mtms.machineSerialNumber(); + } + + /** + * @brief Get section in JSON. + * @return std::optional<std::string> - Failing MTMS section in JSON + */ + std::optional<std::string> getJSON() const override; + + private: + /** + * @brief Validates the section contents + * + * Updates _valid (in Section) with the results. + */ + void validate() override; + + /** + * @brief Fills in the object from the stream data + * + * @param[in] stream - The stream to read from + */ + void unflatten(Stream& stream); + + /** + * @brief The structure that holds the TM and SN fields. + * This is also used in other places in the PEL. + */ + MTMS _mtms; +}; + +} // namespace pels + +} // namespace openpower |