xref: /openbmc/pldm/docs/code_organisation.md (revision 571d7d44635580ee7bb29e84ee3114c472d3fc61)
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