fw-update: simplify PackageParser class Since neither libpldm nor libpldm++ require separate codes for each package format revision, only one implementation is required. libpldm can parse any pldm fw update package where the pin passed to it is greater or equal to the revision of that package. See [1] for an example of libpldm parsing a package of a lower revision than the pin passed to it. Also, due to the spec not having removed or significantly changed any of the old fields inside the package in newer revisions, it is possible to parse packages of different revision into the same struct, using optional/vector/map/... types for newly added members which may not be present in older package format versions. See for example [2]. This simplifies the class considerably. Tested: covered by existing unit tests for PackageParser References: [1] https://github.com/openbmc/libpldm/blob/4aea3a69199cb780256f0f06b05c9e0db14f6044/tests/unit/dsp/firmware_update.cpp#L5641-L5681 [2] https://github.com/openbmc/libpldm/blob/84ef0f40e8f5565785ef0b97cb0352ffdb33c2bc/include/libpldm%2B%2B/firmware_update.hpp#L225 Change-Id: I6a0c0c4e78acbac60dd1e7bf9e616dc70050376e Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
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.
To build and run PLDM, you need the following dependencies:
MesonNinjaAlternatively, source an OpenBMC ARM/x86 SDK.
To build the PLDM project, follow these steps:
meson setup build && meson compile -C build
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.
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
rm /etc/default/pldmd systemctl restart pldmd
For complete documentation on the functionality and usage of this repository, please refer to the docs folder.