1*571d7d44SManojkiran Eda# Flows 2*571d7d44SManojkiran Eda 3*571d7d44SManojkiran EdaThis section documents important code flow paths. 4*571d7d44SManojkiran Eda 5*571d7d44SManojkiran Eda## BMC as PLDM responder 6*571d7d44SManojkiran Eda 7*571d7d44SManojkiran Edaa) PLDM daemon receives PLDM request message from underlying transport (MCTP). 8*571d7d44SManojkiran Eda 9*571d7d44SManojkiran Edab) PLDM daemon routes message to message handler, based on the PLDM command. 10*571d7d44SManojkiran Eda 11*571d7d44SManojkiran Edac) Message handler decodes request payload into various field(s) of the request 12*571d7d44SManojkiran Edamessage. It can make use of a decode_foo_req() API, and doesn't have to perform 13*571d7d44SManojkiran Edadeserialization of the request payload by itself. 14*571d7d44SManojkiran Eda 15*571d7d44SManojkiran Edad) Message handler works with the request field(s) and generates response 16*571d7d44SManojkiran Edafield(s). 17*571d7d44SManojkiran Eda 18*571d7d44SManojkiran Edae) Message handler prepares a response message. It can make use of an 19*571d7d44SManojkiran Edaencode_foo_resp() API, and doesn't have to perform the serialization of the 20*571d7d44SManojkiran Edaresponse field(s) by itself. 21*571d7d44SManojkiran Eda 22*571d7d44SManojkiran Edaf) The PLDM daemon sends the response message prepared at step e) to the remote 23*571d7d44SManojkiran EdaPLDM device. 24*571d7d44SManojkiran Eda 25*571d7d44SManojkiran Eda## BMC as PLDM requester 26*571d7d44SManojkiran Eda 27*571d7d44SManojkiran Edaa) A BMC PLDM requester app prepares a PLDM request message. There would be 28*571d7d44SManojkiran Edaseveral requester apps (based on functionality/PLDM remote device). Each of them 29*571d7d44SManojkiran Edaneedn't bother with the serialization of request field(s), and can instead make 30*571d7d44SManojkiran Edause of an encode_foo_req() API. 31*571d7d44SManojkiran Eda 32*571d7d44SManojkiran Edab) BMC requester app requests PLDM daemon to send the request message to remote 33*571d7d44SManojkiran EdaPLDM device. 34*571d7d44SManojkiran Eda 35*571d7d44SManojkiran Edac) Once the PLDM daemon receives a corresponding response message, it notifies 36*571d7d44SManojkiran Edathe requester app. 37*571d7d44SManojkiran Eda 38*571d7d44SManojkiran Edad) The requester app has to work with the response field(s). It can make use of 39*571d7d44SManojkiran Edaa decode_foo_resp() API to deserialize the response message. 40