1 /*************************************************************************** 2 * Copyright (c) 2024 Microsoft Corporation 3 * 4 * This program and the accompanying materials are made available under the 5 * terms of the MIT License which is available at 6 * https://opensource.org/licenses/MIT. 7 * 8 * SPDX-License-Identifier: MIT 9 **************************************************************************/ 10 11 12 /**************************************************************************/ 13 /**************************************************************************/ 14 /** */ 15 /** USBX Component */ 16 /** */ 17 /** Audio Class */ 18 /** */ 19 /**************************************************************************/ 20 /**************************************************************************/ 21 22 23 /* Include necessary system files. */ 24 25 #define UX_SOURCE_CODE 26 27 #include "ux_api.h" 28 #include "ux_host_class_audio.h" 29 #include "ux_host_stack.h" 30 31 32 /**************************************************************************/ 33 /* */ 34 /* FUNCTION RELEASE */ 35 /* */ 36 /* _ux_host_class_audio_transfer_request_completed PORTABLE C */ 37 /* 6.1 */ 38 /* AUTHOR */ 39 /* */ 40 /* Chaoqiong Xiao, Microsoft Corporation */ 41 /* */ 42 /* DESCRIPTION */ 43 /* */ 44 /* This function receives a completion call back on a isoch transfer */ 45 /* request. */ 46 /* */ 47 /* INPUT */ 48 /* */ 49 /* transfer_request Pointer to transfer request */ 50 /* */ 51 /* OUTPUT */ 52 /* */ 53 /* None */ 54 /* */ 55 /* CALLS */ 56 /* */ 57 /* (ux_host_class_audio_transfer_request_completion_function) */ 58 /* Transfer request completion */ 59 /* */ 60 /* CALLED BY */ 61 /* */ 62 /* Audio Class */ 63 /* */ 64 /* RELEASE HISTORY */ 65 /* */ 66 /* DATE NAME DESCRIPTION */ 67 /* */ 68 /* 05-19-2020 Chaoqiong Xiao Initial Version 6.0 */ 69 /* 09-30-2020 Chaoqiong Xiao Modified comment(s), */ 70 /* resulting in version 6.1 */ 71 /* */ 72 /**************************************************************************/ _ux_host_class_audio_transfer_request_completed(UX_TRANSFER * transfer_request)73VOID _ux_host_class_audio_transfer_request_completed(UX_TRANSFER *transfer_request) 74 { 75 76 UX_HOST_CLASS_AUDIO_TRANSFER_REQUEST *audio_transfer_request; 77 78 79 /* Get the pointer to the audio specific transfer request, by nature of the lined transfer requests, 80 the corresponding transfer request has to be the head transfer request in the audio instance. */ 81 audio_transfer_request = (UX_HOST_CLASS_AUDIO_TRANSFER_REQUEST *) transfer_request -> ux_transfer_request_user_specific; 82 83 /* Do a sanity check on the transfer request, if NULL something is wrong. */ 84 if (audio_transfer_request == UX_NULL) 85 return; 86 87 /* The caller's transfer request needs to be updated. */ 88 audio_transfer_request -> ux_host_class_audio_transfer_request_actual_length = transfer_request -> ux_transfer_request_actual_length; 89 audio_transfer_request -> ux_host_class_audio_transfer_request_completion_code = transfer_request -> ux_transfer_request_completion_code; 90 91 /* Call the completion routine. */ 92 audio_transfer_request -> ux_host_class_audio_transfer_request_completion_function(audio_transfer_request); 93 94 /* Return to caller. */ 95 return; 96 } 97 98