PEL: Let Callout object ctor take a MRU list

A list of MRUs (Manufacturing Replaceable Units) can now be passed into
the Callout object constructor.  There is also a new MRU object
constructor that will build that object with a MRU list as well.

This will be used in the future when someone wants to add MRUs to a
callout.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: Ic0e93e081a91ffc47dfd6642a34f02fd9a6edb8e
diff --git a/extensions/openpower-pels/mru.hpp b/extensions/openpower-pels/mru.hpp
index e2293f1..db66e3b 100644
--- a/extensions/openpower-pels/mru.hpp
+++ b/extensions/openpower-pels/mru.hpp
@@ -57,6 +57,15 @@
     explicit MRU(Stream& pel);
 
     /**
+     * @brief Constructor
+     *
+     * Creates the object using the passed in MRUs
+     *
+     * @param[in] mrus - The  MRUs
+     */
+    explicit MRU(const std::vector<MRUCallout>& mrus);
+
+    /**
      * @brief Flatten the object into the stream
      *
      * @param[in] stream - The stream to write to
@@ -84,6 +93,26 @@
     }
 
     /**
+     * @brief Returns the size field
+     *
+     * @return size_t - The size of the MRU substructure
+     */
+    size_t size() const
+    {
+        return _size;
+    }
+
+    /**
+     * @brief Returns the flags field
+     *
+     * @return uint8_t - The flags
+     */
+    uint8_t flags() const
+    {
+        return _flags;
+    }
+
+    /**
      * @brief The type identifier value of this structure.
      */
     static const uint16_t substructureType = 0x4D52; // "MR"