oem-meta: santabarbara: add handler for event logs from rainbow MMC

Add support for decoding the event logs emitted by the Rainbow MMC. To
distinguish between MITA and Rainbow event formats, the function
lookupFaultByIndex is updated so that it can retrieve the corresponding
event type and provide the correct interpretation.

This commit is base on
82142: oem-meta: Add file IO responder for event logs from BIC
https://gerrit.openbmc.org/c/openbmc/pldm/+/82142

Tested by triggering MITA fault logs to verify correct event type
handling.
```
    "7": {
        "additional_data": {
            "FAILURE_DATA": "MTIA_PVDD1P5_S - [02 03]",
            "VOLTAGE_REGULATOR": "/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/pvdd1p5_s",
            "_CODE_FILE": "../../../../../../workspace/sources/pldm/oem/meta/libpldmresponder/file_io_type_event_log.cpp",
            "_CODE_FUNC": "void pldm::responder::oem_meta::recordEventLog(const FaultDesc&, EventAssert, const FaultData&)",
            "_CODE_LINE": "451",
            "_PID": "1267"
        },
        "event_id": "",
        "message": "xyz.openbmc_project.State.Power.VoltageRegulatorFault",
        "redfish": {
            "args": [
                "/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/pvdd1p5_s"
            ],
            "id": "OpenBMC_StatePower.VoltageRegulatorFault",
            "message": "A fault has been detected on voltage regulator '/xyz/openbmc_project/inventory/system/board/Minerva_Aegis/pvdd1p5_s'"
        },
        "resolution": "",
        "resolved": false,
        "severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
        "timestamp": "2026-01-26T05:38:09.990000000Z",
        "updated_timestamp": "2026-01-26T05:38:09.990000000Z"
    }
}
```

Tested by triggering Rainbow fault logs to verify correct event
type handling.
```
"86": {
  "additional_data": {
    "FAILURE_DATA": "RAINBOW_OWL_E_TRVDD0P75 - [7C 00]",
    "VOLTAGE_REGULATOR": "/xyz/openbmc_project/inventory/system/board/Santabarbara_Rainbow_0/owl_e_trvdd0p75",
    "_CODE_FILE": "../../../../../../workspace/sources/pldm/oem/meta/libpldmresponder/file_io_type_event_log.cpp",
    "_CODE_FUNC": "void pldm::responder::oem_meta::recordEventLog(const FaultDesc&, EventAssert, const FaultData&)",
    "_CODE_LINE": "439",
    "_PID": "1038"
  },
  "event_id": "",
  "message": "xyz.openbmc_project.State.Power.VoltageRegulatorFault",
  "redfish": {
    "args": [
      "/xyz/openbmc_project/inventory/system/board/Santabarbara_Rainbow_0/owl_e_trvdd0p75"
    ],
    "id": "OpenBMC_StatePower.VoltageRegulatorFault",
    "message": "A fault has been detected on voltage regulator '/xyz/openbmc_project/inventory/system/board/Santabarbara_Rainbow_0/owl_e_trvdd0p75'"
  },
  "resolution": "",
  "resolved": false,
  "severity": "xyz.openbmc_project.Logging.Entry.Level.Error",
  "timestamp": "2025-11-26T01:34:28.595000000Z",
  "updated_timestamp": "2025-11-26T01:34:28.595000000Z"
}
```

Change-Id: Ie5d6e6fe26baf1cb7c23d19127d0d84f66f37c27
Signed-off-by: Henry Wu <Henry_Wu@quantatw.com>
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
1 file changed
tree: 0d1a34480d551e2fc5acb014934e75f7de56c7fe
  1. common/
  2. configurations/
  3. docs/
  4. fw-update/
  5. host-bmc/
  6. libpldmresponder/
  7. oem/
  8. platform-mc/
  9. pldmd/
  10. pldmtool/
  11. requester/
  12. softoff/
  13. subprojects/
  14. test/
  15. tools/
  16. utilities/
  17. .clang-format
  18. .clang-tidy
  19. .eslintignore
  20. .gitignore
  21. .linter-ignore
  22. LICENSE
  23. meson.build
  24. meson.options
  25. OWNERS
  26. README.md
README.md

PLDM - Platform Level Data Model

License

Overview

PLDM (Platform Level Data Model) is a key component of the OpenBMC project, providing a standardized data model and message formats for various platform management functionalities. It defines a method to manage, monitor, and control the firmware and hardware of a system.

The OpenBMC PLDM project aims to implement the specifications defined by the Distributed Management Task Force (DMTF), allowing for interoperable management interfaces across different hardware and firmware components.

Features

  • Standardized Messaging: Adheres to the DMTF's PLDM specifications, enabling consistent and interoperable communication between different components.
  • Modularity: Supports multiple PLDM types, including base, FRU,Firmware update, Platform Monitoring and Control, and BIOS Control and Configuration.
  • Extensibility: Easily extendable to support new PLDM types and custom OEM commands.
  • Integration: Seamlessly integrates with other OpenBMC components for comprehensive system management.

Getting Started

Prerequisites

To build and run PLDM, you need the following dependencies:

  • Meson
  • Ninja

Alternatively, source an OpenBMC ARM/x86 SDK.

Building

To build the PLDM project, follow these steps:

meson setup build && meson compile -C build

To run unit tests

The simplest way of running the tests is as described by the meson man page:

meson test -C build

Alternatively, tests can be run in the OpenBMC CI docker container using these steps.

To enable pldm verbosity

pldm daemon accepts a command line argument --verbose or --v or -v to enable the daemon to run in verbose mode. It can be done via adding this option to the environment file that pldm service consumes.

echo 'PLDMD_ARGS="--verbose"' > /etc/default/pldmd
systemctl restart pldmd

To disable pldm verbosity

rm /etc/default/pldmd
systemctl restart pldmd

Documentation

For complete documentation on the functionality and usage of this repository, please refer to the docs folder.