1 /* ---------------------------------------------------------------------------- 2 * Copyright (c) Huawei Technologies Co., Ltd. 2017-2019. All rights reserved. 3 * Description: LiteOS USB Driver Audio Stream HeadFile 4 * Author: huangjieliang 5 * Create: 2017-12-12 6 * Redistribution and use in source and binary forms, with or without modification, 7 * are permitted provided that the following conditions are met: 8 * 1. Redistributions of source code must retain the above copyright notice, this list of 9 * conditions and the following disclaimer. 10 * 2. Redistributions in binary form must reproduce the above copyright notice, this list 11 * of conditions and the following disclaimer in the documentation and/or other materials 12 * provided with the distribution. 13 * 3. Neither the name of the copyright holder nor the names of its contributors may be used 14 * to endorse or promote products derived from this software without specific prior written 15 * permission. 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, 18 * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR 20 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 21 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 22 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 23 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 24 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 25 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 26 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 27 * --------------------------------------------------------------------------- */ 28 /* ---------------------------------------------------------------------------- 29 * Notice of Export Control Law 30 * =============================================== 31 * Huawei LiteOS may be subject to applicable export control laws and regulations, which might 32 * include those applicable to Huawei LiteOS of U.S. and the country in which you are located. 33 * Import, export and usage of Huawei LiteOS in any manner by you shall be in compliance with such 34 * applicable export control laws and regulations. 35 * --------------------------------------------------------------------------- */ 36 37 #ifndef LITEOS_USB_DEVICE_AUDIO_H 38 #define LITEOS_USB_DEVICE_AUDIO_H 39 40 #include "gadget/f_uac.h" 41 42 #ifdef __cplusplus 43 #if __cplusplus 44 extern "C" { 45 #endif /* __cplusplus */ 46 #endif /* __cplusplus */ 47 48 /* UAC function error codes */ 49 50 #define UAC_OK 0x00 /* No error, function has successfully completed */ 51 #define UAC_ERROR_NOMATCH 0x01 /* The operation can not be complete, due to mismatch of UAC state */ 52 #define UAC_ERROR_PTR 0x02 /* Invalid pointer */ 53 #define UAC_ERROR_MEMORY 0x03 /* Memory error */ 54 #define UAC_ERROR_VALUE 0x04 /* Incorrect value */ 55 #define UAC_ERROR_FATAL 0x05 /* Fatal internal error, please contact the one who wrote the code */ 56 57 #define UAC_WAIT_HOST_NOP 0x0 58 #define UAC_WAIT_HOST_FOREVER 0x1 59 60 extern int uac_wait_host(int wait_option); 61 extern int fuac_send_message(const void *buf,int len); 62 63 struct uac_queue_node 64 { 65 uint8_t *buf; 66 uint32_t buf_len; 67 uint32_t buf_used; 68 struct list_head irqqueue; 69 }; 70 71 struct uac_queue_node *uac_queue_node_alloc(unsigned len); 72 void uac_queue_node_free(struct uac_queue_node *node); 73 void uac_send_data_sub(struct uac_dev_s *sc); 74 void uac_queue_free(struct uac_dev_s *sc); 75 76 #ifdef __cplusplus 77 #if __cplusplus 78 } 79 #endif /* __cplusplus */ 80 #endif /* __cplusplus */ 81 82 #endif