1 /**************************************************************************/ 2 /* */ 3 /* Copyright (c) Microsoft Corporation. All rights reserved. */ 4 /* */ 5 /* This software is licensed under the Microsoft Software License */ 6 /* Terms for Microsoft Azure RTOS. Full text of the license can be */ 7 /* found in the LICENSE file at https://aka.ms/AzureRTOS_EULA */ 8 /* and in the root directory of this software. */ 9 /* */ 10 /**************************************************************************/ 11 12 13 /**************************************************************************/ 14 /**************************************************************************/ 15 /** */ 16 /** USBX Component */ 17 /** */ 18 /** Audio Class */ 19 /** */ 20 /**************************************************************************/ 21 /**************************************************************************/ 22 23 24 /* Include necessary system files. */ 25 26 #define UX_SOURCE_CODE 27 28 #include "ux_api.h" 29 #include "ux_host_class_audio.h" 30 #include "ux_host_stack.h" 31 32 33 #if defined(UX_HOST_CLASS_AUDIO_FEEDBACK_SUPPORT) 34 /**************************************************************************/ 35 /* */ 36 /* FUNCTION RELEASE */ 37 /* */ 38 /* _ux_host_class_audio_feedback_transfer_completed PORTABLE C */ 39 /* 6.1.12 */ 40 /* AUTHOR */ 41 /* */ 42 /* Chaoqiong Xiao, Microsoft Corporation */ 43 /* */ 44 /* DESCRIPTION */ 45 /* */ 46 /* This function receives a completion call back on a isoch transfer */ 47 /* request. */ 48 /* */ 49 /* INPUT */ 50 /* */ 51 /* transfer_request Pointer to transfer request */ 52 /* */ 53 /* OUTPUT */ 54 /* */ 55 /* None */ 56 /* */ 57 /* CALLS */ 58 /* */ 59 /* */ 60 /* CALLED BY */ 61 /* */ 62 /* HCD */ 63 /* */ 64 /* RELEASE HISTORY */ 65 /* */ 66 /* DATE NAME DESCRIPTION */ 67 /* */ 68 /* 07-29-2022 Chaoqiong Xiao Initial Version 6.1.12 */ 69 /* */ 70 /**************************************************************************/ _ux_host_class_audio_feedback_transfer_completed(UX_TRANSFER * transfer_request)71VOID _ux_host_class_audio_feedback_transfer_completed(UX_TRANSFER *transfer_request) 72 { 73 UX_HOST_CLASS_AUDIO *audio; 74 UX_ENDPOINT *endpoint; 75 ULONG endpoint_dir; 76 77 /* Check status. */ 78 if (transfer_request -> ux_transfer_request_completion_code != UX_SUCCESS) 79 return; 80 81 /* Sync with feedback buffer. */ 82 audio = (UX_HOST_CLASS_AUDIO *) transfer_request -> ux_transfer_request_class_instance; 83 endpoint = transfer_request -> ux_transfer_request_endpoint; 84 endpoint_dir = endpoint -> ux_endpoint_descriptor.bEndpointAddress & UX_ENDPOINT_DIRECTION; 85 if (endpoint_dir == UX_ENDPOINT_IN) 86 { 87 _ux_utility_memory_copy(audio -> ux_host_class_audio_feedback_buffer, 88 transfer_request -> ux_transfer_request_data_pointer, 89 sizeof(audio -> ux_host_class_audio_feedback_buffer)); /* Use case of memcpy is verified. */ 90 } 91 92 /* Issue another request again. */ 93 _ux_host_stack_transfer_request(transfer_request); 94 } 95 #endif 96