| description: > |
| Implement to provide features needed to build a PLDM Request message. This |
| API would be used by PLDM requester apps on the BMC. |
| |
| Any OpenBMC implementation must provide exactly one implementation of |
| xyz.openbmc_project.PLDM.Requester on /xyz/openbmc_project/pldm. |
| |
| PLDM stands for Platform Level Data Model. More information about PLDM (and |
| MCTP) can be found at https://www.dmtf.org/standards/pmci. |
| |
| methods: |
| - name: GetInstanceId |
| description: > |
| Obtain a new PLDM instance id, for the input MCTP EID, to be used in a |
| PLDM request message. Instance ids help distinguish PLDM response |
| messages when a PLDM requester sends out multiple request messages, |
| without waiting for a response message. Refer the PLDM specification |
| DSP0240 version 1.0.0. Also refer |
| https://github.com/openbmc/docs/blob/master/designs/pldm-stack.md#Requester. |
| |
| The instance id starts at 0 and can go upto 31 (5 bits), for each MCTP |
| EID that a PLDM requester is communicating with. An implementation of |
| this API should track instance ids in terms of whether they're in use |
| (request message with that instance id has been sent out, and the |
| corresponding response message hasn't been received yet) or not, and |
| grant unused ids via this method. An implementation may also |
| optionally implement the instance id expiry, as per the spec DSP0240 |
| v1.0.0. The spec recommends implementing the same. |
| |
| If there's a call to this method when all 32 ids have already been |
| granted to the input eid, then the |
| xyz.openbmc_project.Common.Error.TooManyResources exception will be |
| thrown. The recommendation for the caller upon receiving this |
| exception is to retry calling this method, at least once, after a |
| time period equal to the maximum instance id expiration interval, |
| which is 6 seconds as per DSP0240 v1.0.0. If the exception persists |
| post this interval, the way of handling the same (further retries, |
| report an error, etc) is left to the user. |
| parameters: |
| - name: eid |
| type: byte |
| description: > |
| The MCTP endpoint, specified by 'eid' (endpoint id), for which the |
| new PLDM instance id needs to be generated. |
| returns: |
| - name: instanceid |
| type: byte |
| description: > |
| PLDM instance id. |
| errors: |
| - xyz.openbmc_project.Common.Error.TooManyResources |