platform-mc: Support CPER Event handler
Handle CPER event(0x07) which is defined in `Table 11 - PLDM Event
Type` and section `16.17 eventData format for CPEREvent` in DSP0248
v1.3.0.
The code supports:
1. Handle the PLDM event which has eventClass as CPEREvent (0x07).
2. Store the CPER data in PLDM CPER event to file at `/var/cper/`.
3. Call `CreateDump` method of `xyz.openbmc_project.Dump.Manager` D-Bus
service to create dump fault log.
4. The user can find the dump fault logs in Redfish FaultLog entries
thru URL `/redfish/v1/Managers/bmc/LogServices/FaultLog/Entries`. Each
CPER entry includes the URL to download the created CPER data file
`/redfish/v1/Managers/bmc/LogServices/FaultLog/Entries/<id>/attachment`.
5. The user can use `cper-parser` in `libcper` to parse the CPER data in
the attached file.
Signed-off-by: Thu Nguyen <thu@os.amperecomputing.com>
Change-Id: I85c53933183178c6b5acdfc12c805e8a4cf1ca2a
diff --git a/platform-mc/event_manager.hpp b/platform-mc/event_manager.hpp
index f40db44..c654eb7 100644
--- a/platform-mc/event_manager.hpp
+++ b/platform-mc/event_manager.hpp
@@ -87,6 +87,30 @@
const uint8_t* sensorData,
size_t sensorDataLength);
+ /** @brief Helper method to process the PLDM CPER event class
+ *
+ * @param[in] tid - tid where the event is from
+ * @param[in] eventId - Event ID which is the source of event
+ * @param[in] eventData - CPER event data
+ * @param[in] eventDataSize - event data length
+ *
+ * @return PLDM completion code
+ */
+ int processCperEvent(pldm_tid_t tid, uint16_t eventId,
+ const uint8_t* eventData, const size_t eventDataSize);
+
+ /** @brief Helper method to create CPER dump log
+ *
+ * @param[in] dataType - CPER event data type
+ * @param[in] dataPath - CPER event data fault log file path
+ * @param[in] typeName - Terminus name which creates CPER event
+ *
+ * @return PLDM completion code
+ */
+ int createCperDumpEntry(const std::string& dataType,
+ const std::string& dataPath,
+ const std::string& typeName);
+
/** @brief Reference of terminusManager */
TerminusManager& terminusManager;