| # Code Organization | |
| At a high-level, code in this repository belongs to one of the following three | |
| components. | |
| ## libpldmresponder | |
| This library provides handlers for incoming PLDM request messages. It provides | |
| for a registration as well as a plug-in mechanism. The library is implemented in | |
| modern C++, and handles OpenBMC's platform specifics. | |
| The handlers are of the form | |
| ```c | |
| Response handler(Request payload, size_t payloadLen) | |
| ``` | |
| Source files are named according to the PLDM Type, for eg base.[hpp/cpp], | |
| fru.[hpp/cpp], etc. | |
| ## OEM/vendor-specific functions | |
| This will support OEM or vendor-specific functions and semantic information. | |
| Following directory structure has to be used: | |
| ```txt | |
| pldm repo | |
| |---- oem | |
| |----<oem_name> | |
| |----libpldmresponder | |
| |---<oem based handler files> | |
| ``` | |
| <oem_name> - This folder must be created with the name of the OEM/vendor in | |
| lower case. Folders named libpldm and libpldmresponder must be created under the | |
| folder <oem_name> | |
| Files having the oem functionality for the libpldmresponder library should be | |
| placed under the folder oem/<oem_name>/libpldmresponder. They must be adhering | |
| to the rules mentioned under the libpldmresponder section above. | |
| Once the above is done a meson option has to be created in | |
| `pldm/meson_options.txt` with its mapped compiler flag to enable conditional | |
| compilation. | |
| For consistency would recommend using "oem-<oem_name>". | |
| The `pldm/meson.build` and the corresponding source file(s) will need to | |
| incorporate the logic of adding its mapped compiler flag to allow conditional | |
| compilation of the code. | |
| ## libpldm | |
| pldm daemon links against the libpldm library during compilation, For more | |
| information on libpldm please refer to | |
| [libpldm](https://github.com/openbmc/libpldm) | |
| ## pldmtool | |
| For more information on pldmtool please refer to | |
| [pldmtool](../pldmtool/README.md). |