1*571d7d44SManojkiran Eda# Code Organization 2*571d7d44SManojkiran Eda 3*571d7d44SManojkiran EdaAt a high-level, code in this repository belongs to one of the following three 4*571d7d44SManojkiran Edacomponents. 5*571d7d44SManojkiran Eda 6*571d7d44SManojkiran Eda## libpldmresponder 7*571d7d44SManojkiran Eda 8*571d7d44SManojkiran EdaThis library provides handlers for incoming PLDM request messages. It provides 9*571d7d44SManojkiran Edafor a registration as well as a plug-in mechanism. The library is implemented in 10*571d7d44SManojkiran Edamodern C++, and handles OpenBMC's platform specifics. 11*571d7d44SManojkiran Eda 12*571d7d44SManojkiran EdaThe handlers are of the form 13*571d7d44SManojkiran Eda 14*571d7d44SManojkiran Eda```c 15*571d7d44SManojkiran EdaResponse handler(Request payload, size_t payloadLen) 16*571d7d44SManojkiran Eda``` 17*571d7d44SManojkiran Eda 18*571d7d44SManojkiran EdaSource files are named according to the PLDM Type, for eg base.[hpp/cpp], 19*571d7d44SManojkiran Edafru.[hpp/cpp], etc. 20*571d7d44SManojkiran Eda 21*571d7d44SManojkiran Eda## OEM/vendor-specific functions 22*571d7d44SManojkiran Eda 23*571d7d44SManojkiran EdaThis will support OEM or vendor-specific functions and semantic information. 24*571d7d44SManojkiran EdaFollowing directory structure has to be used: 25*571d7d44SManojkiran Eda 26*571d7d44SManojkiran Eda```txt 27*571d7d44SManojkiran Eda pldm repo 28*571d7d44SManojkiran Eda |---- oem 29*571d7d44SManojkiran Eda |----<oem_name> 30*571d7d44SManojkiran Eda |----libpldmresponder 31*571d7d44SManojkiran Eda |---<oem based handler files> 32*571d7d44SManojkiran Eda 33*571d7d44SManojkiran Eda``` 34*571d7d44SManojkiran Eda 35*571d7d44SManojkiran Eda<oem_name> - This folder must be created with the name of the OEM/vendor in 36*571d7d44SManojkiran Edalower case. Folders named libpldm and libpldmresponder must be created under the 37*571d7d44SManojkiran Edafolder <oem_name> 38*571d7d44SManojkiran Eda 39*571d7d44SManojkiran EdaFiles having the oem functionality for the libpldmresponder library should be 40*571d7d44SManojkiran Edaplaced under the folder oem/<oem_name>/libpldmresponder. They must be adhering 41*571d7d44SManojkiran Edato the rules mentioned under the libpldmresponder section above. 42*571d7d44SManojkiran Eda 43*571d7d44SManojkiran EdaOnce the above is done a meson option has to be created in 44*571d7d44SManojkiran Eda`pldm/meson_options.txt` with its mapped compiler flag to enable conditional 45*571d7d44SManojkiran Edacompilation. 46*571d7d44SManojkiran Eda 47*571d7d44SManojkiran EdaFor consistency would recommend using "oem-<oem_name>". 48*571d7d44SManojkiran Eda 49*571d7d44SManojkiran EdaThe `pldm/meson.build` and the corresponding source file(s) will need to 50*571d7d44SManojkiran Edaincorporate the logic of adding its mapped compiler flag to allow conditional 51*571d7d44SManojkiran Edacompilation of the code. 52*571d7d44SManojkiran Eda 53*571d7d44SManojkiran Eda## libpldm 54*571d7d44SManojkiran Eda 55*571d7d44SManojkiran Edapldm daemon links against the libpldm library during compilation, For more 56*571d7d44SManojkiran Edainformation on libpldm please refer to 57*571d7d44SManojkiran Eda[libpldm](https://github.com/openbmc/libpldm) 58*571d7d44SManojkiran Eda 59*571d7d44SManojkiran Eda## pldmtool 60*571d7d44SManojkiran Eda 61*571d7d44SManojkiran EdaFor more information on pldmtool please refer to 62*571d7d44SManojkiran Eda[pldmtool](../pldmtool/README.md). 63