PEL: Maintenance procedure callout definitions

A maintenance procedure is a short string that resides in the FRU
identity structure in the SRC section of a PEL that maps to a service
procedure in the service documentation.

This commit adds the initial framework for dealing with these by adding
an enum type to specify them, and a pel_values.hpp function to get the
actual string value of the maintenance procedure based on its enum.

A single procedure is created in this commit,  NoVPDforFRU, which will
be used in a future commit when the location code, part number, etc,
aren't available when trying to do a callout and so this procedure will
be used instead.

Signed-off-by: Matt Spinler <spinler@us.ibm.com>
Change-Id: I45f366e98794462c70d851f743e4f497c0af77b4
diff --git a/extensions/openpower-pels/pel_values.hpp b/extensions/openpower-pels/pel_values.hpp
index d7d4226..163c6da 100644
--- a/extensions/openpower-pels/pel_values.hpp
+++ b/extensions/openpower-pels/pel_values.hpp
@@ -26,6 +26,19 @@
 using PELFieldValue = std::tuple<uint32_t, const char*, const char*>;
 using PELValues = std::vector<PELFieldValue>;
 
+// The maintenance procedure enum
+const int mpEnumPos = 0;
+
+// The maintenance procedure value from the registry
+const int mpRegistryNamePos = 1;
+
+// The string name of the maintenance procedure
+const int mpNamePos = 2;
+
+using MaintenanceProcedureValue =
+    std::tuple<MaintProcedure, const char*, const char*>;
+using MaintenanceProcedureValues = std::vector<MaintenanceProcedureValue>;
+
 const std::string sectionVer = "Section Version";
 const std::string subSection = "Sub-section type";
 const std::string createdBy = "Created by";
@@ -72,6 +85,19 @@
                                      const PELValues& fields);
 
 /**
+ * @brief Finds the entry in the maintenance procedure list
+ *        based on the enum passed in.
+ *
+ * The function asserts that a result is found.
+ *
+ * @param[in] procedure - The procedure enum
+ *
+ * @return const_iterator - Iterator for that list entry
+ */
+MaintenanceProcedureValues::const_iterator
+    getMaintProcedure(MaintProcedure procedure);
+
+/**
  * @brief The values for the 'subsystem' field in the User Header
  */
 extern const PELValues subsystemValues;
@@ -131,6 +157,13 @@
  */
 extern const std::map<bool, std::string> boolString;
 
+/**
+ * @brief All maintenance procedures.
+ *
+ * The procedure enum, registry name, and actual string value.
+ */
+extern const MaintenanceProcedureValues maintenanceProcedures;
+
 } // namespace pel_values
 } // namespace pels
 } // namespace openpower