summaryrefslogtreecommitdiffstats
path: root/extensions/openpower-pels/failing_mtms.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/openpower-pels/failing_mtms.hpp')
-rw-r--r--extensions/openpower-pels/failing_mtms.hpp114
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
OpenPOWER on IntegriCloud