Generate error map as part of dump types

An error type is a specific type of BMC dump that is generated
when a particular error is logged in the BMC. Previously,
dump types and error types were managed independently, with
error types being defined in separate files, namely 'error_map.hpp'
and its associated mako template 'error_map.mako.cpp'. However, this
practice led to inconsistencies, as the dreport script, which is used
for handling dump collection and packaging, was interpreting error
type as another dump type rather than as additional parameters.

The separate error_map.hpp file and its associated mako template
(error_map.mako.cpp) have been removed. Instead, error types are now
incorporated directly into the dump types along with an error type map
for validating the error names. This integration aligns the code with
the existing behaviour of the dreport script, allowing for more
consistent processing of dump types

As a result of this integration, the error map generation is now part
of the  dump_types_mako.cpp file. To support these changes, a second
input YAML file has been added to the map_gen.py script to generate
the dump types and error types together.

Tests:
Create InternalFailure
> busctl call xyz.openbmc_project.Logging  /xyz/openbmc_project/logging \
  xyz.openbmc_project.Logging.Create Create ssa{ss}  \
  xyz.openbmc_project.Common.Error.InternalFailure \
  xyz.openbmc_project.Logging.Entry.Level.Error 0
> dump created
  /var/lib/phosphor-debug-collector/dumps/1/\
  BMCDUMP.XXXXXXXX.0000001.20230723084043

Create Checkstop
> busctl call xyz.openbmc_project.Logging  /xyz/openbmc_project/logging \
  xyz.openbmc_project.Logging.Create Create ssa{ss}  \
  org.open_power.Host.Boot.Error.Checkstop \
  xyz.openbmc_project.Logging.Entry.Level.Error 0
> /var/lib/phosphor-debug-collector/dumps/4/\
  BMCDUMP.XXXXXXXX.0000004.20230723094150

Change-Id: Iac483f4993b59cf0fc063ed9584785f1a1fa04a8
Signed-off-by: Dhruvaraj Subhashchandran <dhruvaraj@in.ibm.com>
diff --git a/dump_utils.hpp b/dump_utils.hpp
index 01e4166..7bf8a7b 100644
--- a/dump_utils.hpp
+++ b/dump_utils.hpp
@@ -335,5 +335,46 @@
     return T{};
 }
 
+/**
+ * @brief This function fetches the dump type associated with a particular
+ * error.
+ *
+ * @param[in] params The map of parameters passed as input.
+ *
+ * @return The dump type associated with the error.
+ *
+ * @throw std::invalid_argument If the dump type associated with the error
+ * type is not found in the map.
+ */
+inline DumpTypes getErrorDumpType(phosphor::dump::DumpCreateParams& params)
+{
+    using CreateParameters =
+        sdbusplus::xyz::openbmc_project::Dump::server::Create::CreateParameters;
+    using DumpIntr = sdbusplus::common::xyz::openbmc_project::dump::Create;
+    using InvalidArgument =
+        sdbusplus::xyz::openbmc_project::Common::Error::InvalidArgument;
+    using Argument = xyz::openbmc_project::Common::InvalidArgument;
+
+    std::string errorType = extractParameter<std::string>(
+        DumpIntr::convertCreateParametersToString(CreateParameters::ErrorType),
+        params);
+    if (!isErrorTypeValid(errorType))
+    {
+        lg2::error("An invalid error type passed type: {ERROR_TYPE}",
+                   "ERROR_TYPE", errorType);
+        elog<InvalidArgument>(Argument::ARGUMENT_NAME("ERROR_TYPE"),
+                              Argument::ARGUMENT_VALUE(errorType.c_str()));
+    }
+    auto type = stringToDumpType(errorType);
+    if (type.has_value())
+    {
+        return type.value();
+    }
+
+    // Ideally this should never happen, because if the error type is valid
+    // it should be present in the dumpTypeToStringMap
+    throw std::invalid_argument{"Dump type not found"};
+}
+
 } // namespace dump
 } // namespace phosphor