@@ -249,10 +249,9 @@ Refer to spdm_client_init() in [spdm_requester.c](https://github.com/DMTF/spdm-e
249249
2502506 . Send and receive message in an SPDM session
251251
252- 6.1, Use the SPDM vendor defined message.
253- (SPDM vendor defined message + transport layer header (SPDM) => application message)
252+ 6.1, Use the SPDM vendor defined request.
254253 ```
255- libspdm_send_receive_data (spdm_context, &session_id, FALSE , &request, request_size, &response, &response_size);
254+ libspdm_vendor_request (spdm_context, standard_id, vendor_id_len, &vendor_id , &request, request_size, &response, &response_size);
256255 ```
257256
258257 6.2, Use the transport layer application message.
@@ -435,27 +434,49 @@ Refer to spdm_server_init() in [spdm_responder.c](https://github.com/DMTF/spdm-e
435434
4364353 . Register message process callback
437436
438- This callback need handle both SPDM vendor defined message and transport layer application message.
439- ```
440- return_status libspdm_get_response_vendor_defined_request (
441- void *spdm_context,
442- const uint32_t *session_id,
443- bool is_app_message,
444- size_t request_size,
445- const void *request,
446- size_t *response_size,
447- void *response
448- )
449- {
450- if (is_app_message) {
451- // this is a transport layer application message
452- } else {
453- // this is a SPDM vendor defined message (without transport layer header)
454- }
455- }
456-
457- libspdm_register_get_response_func (spdm_context, libspdm_get_response_vendor_defined_request);
458- ```
437+ 3.1 This callback handles transport layer application message.
438+ ```
439+ return_status libspdm_get_response (
440+ void *spdm_context,
441+ const uint32_t *session_id,
442+ bool is_app_message,
443+ size_t request_size,
444+ const void *request,
445+ size_t *response_size,
446+ void *response
447+ )
448+ {
449+ if (is_app_message) {
450+ // this is a transport layer application message
451+ } else {
452+ // other SPDM message
453+ }
454+ }
455+
456+ libspdm_register_get_response_func (spdm_context, libspdm_get_response);
457+ ```
458+ 3.2 This callback handles SPDM Vendor Defined Commands
459+ ```
460+ libspdm_return_t libspdm_vendor_response_func(
461+ void *spdm_context,
462+ uint16_t standard_id,
463+ uint8_t vendor_id_len,
464+ const void *vendor_id,
465+ const void *request,
466+ size_t request_len,
467+ void *resp,
468+ size_t *resp_len)
469+ {
470+ // process request and create response
471+ ...
472+ // populate response header and payload
473+ ...
474+
475+ return LIBSPDM_STATUS_SUCCESS;
476+ }
477+
478+ libspdm_register_vendor_callback_func(spdm_context, libspdm_vendor_response_func);
479+ ```
459480
4604814. Free the memory of contexts within the SPDM context when all flow is over.
461482 This function doesn't free the SPDM context itself.
0 commit comments