/* ********************************************************************************************************* * uC/USB-Device * The Embedded USB Device Stack * * Copyright 2004-2021 Silicon Laboratories Inc. www.silabs.com * * SPDX-License-Identifier: APACHE-2.0 * * This software is subject to an open source license and is distributed by * Silicon Laboratories Inc. pursuant to the terms of the Apache License, * Version 2.0 available at www.apache.org/licenses/LICENSE-2.0. * ********************************************************************************************************* */ /* ********************************************************************************************************* * * USB DEVICE AUDIO CLASS * * Filename : usbd_audio_processing.h * Version : V4.06.01 ********************************************************************************************************* */ /* ********************************************************************************************************* ********************************************************************************************************* * MODULE ********************************************************************************************************* ********************************************************************************************************* */ #ifndef USBD_AUDIO_PROCESSING_MODULE_PRESENT #define USBD_AUDIO_PROCESSING_MODULE_PRESENT /* ********************************************************************************************************* ********************************************************************************************************* * INCLUDE FILES ********************************************************************************************************* ********************************************************************************************************* */ #include "../../Source/usbd_core.h" #include "usbd_audio.h" /* ********************************************************************************************************* ********************************************************************************************************* * EXTERNS ********************************************************************************************************* ********************************************************************************************************* */ #ifdef USBD_AUDIO_PROCESSING_MODULE #define USBD_AUDIO_PROCESSING_EXT #else #define USBD_AUDIO_PROCESSING_EXT extern #endif /* ********************************************************************************************************* ********************************************************************************************************* * DEFINES ********************************************************************************************************* ********************************************************************************************************* */ /* ********************************************************************************************************* ********************************************************************************************************* * DATA TYPES ********************************************************************************************************* ********************************************************************************************************* */ /* ********************************************************************************************************* ********************************************************************************************************* * GLOBAL VARIABLES ********************************************************************************************************* ********************************************************************************************************* */ /* ********************************************************************************************************* ********************************************************************************************************* * MACRO'S ********************************************************************************************************* ********************************************************************************************************* */ /* ********************************************************************************************************* ********************************************************************************************************* * FUNCTION PROTOTYPES ********************************************************************************************************* ********************************************************************************************************* */ #if (USBD_AUDIO_CFG_RECORD_EN == DEF_ENABLED) void *USBD_Audio_RecordBufGet (USBD_AUDIO_AS_HANDLE as_handle, CPU_INT16U *p_buf_len); void USBD_Audio_RecordRxCmpl (USBD_AUDIO_AS_HANDLE as_handle); void USBD_Audio_RecordBufFree (USBD_AUDIO_AS_HANDLE as_handle, void *p_buf); #endif #if (USBD_AUDIO_CFG_PLAYBACK_EN == DEF_ENABLED) void USBD_Audio_PlaybackTxCmpl (USBD_AUDIO_AS_HANDLE as_handle); void USBD_Audio_PlaybackBufFree(USBD_AUDIO_AS_HANDLE as_handle, void *p_buf); #endif #if (USBD_AUDIO_CFG_STAT_EN == DEF_ENABLED) USBD_AUDIO_STAT *USBD_Audio_StatGet (USBD_AUDIO_AS_HANDLE as_handle); #endif /* ********************************************************************************************************* * AUDIO STATISTICS MACRO'S ********************************************************************************************************* */ #if (USBD_AUDIO_CFG_STAT_EN == DEF_ENABLED) #define USBD_AUDIO_STAT_INC(ctr) { \ (ctr)++; \ } #define USBD_AUDIO_STAT_PROT_INC(ctr) { \ CPU_CRITICAL_ENTER(); \ (ctr)++; \ CPU_CRITICAL_EXIT(); \ } #define USBD_AUDIO_DRV_STAT_INC(as_handle, ctr) { \ USBD_AUDIO_STAT *__p_audio_stat; \ \ __p_audio_stat = USBD_Audio_StatGet((as_handle)); \ __p_audio_stat->ctr++; \ } #define USBD_AUDIO_STAT_DEC(ctr) { \ (ctr)--; \ } #define USBD_AUDIO_STAT_PROT_DEC(ctr) { \ CPU_CRITICAL_ENTER(); \ (ctr)--; \ CPU_CRITICAL_EXIT(); \ } #define USBD_AUDIO_STAT_MAX(ctr, max) { \ if ((ctr) > (max)) { \ (max) = (ctr); \ } \ } #define USBD_AUDIO_STAT_PROT_MAX(ctr, max) { \ CPU_CRITICAL_ENTER(); \ if ((ctr) > (max)) { \ (max) = (ctr); \ } \ CPU_CRITICAL_EXIT(); \ } #define USBD_AUDIO_STAT_MIN(ctr, min) { \ if ((ctr) < (min)) { \ (min) = (ctr); \ } \ } #define USBD_AUDIO_STAT_PROT_MIN(ctr, min) { \ CPU_CRITICAL_ENTER(); \ if ((ctr) < (min)) { \ (min) = (ctr); \ } \ CPU_CRITICAL_EXIT(); \ } #define USBD_AUDIO_STAT_ADD(ctr, add) { \ (ctr) += (add); \ } #define USBD_AUDIO_STAT_RESET(ctr) { \ (ctr) = 0u; \ } #else #define USBD_AUDIO_STAT_INC(ctr) #define USBD_AUDIO_STAT_PROT_INC(ctr) #define USBD_AUDIO_DRV_STAT_INC(as_handle, ctr) #define USBD_AUDIO_STAT_DEC(ctr) #define USBD_AUDIO_STAT_PROT_DEC(ctr) #define USBD_AUDIO_STAT_MAX(ctr, max) #define USBD_AUDIO_STAT_PROT_MAX(ctr, max) #define USBD_AUDIO_STAT_ADD(ctr, add) #define USBD_AUDIO_STAT_RESET(ctr) #endif /* ********************************************************************************************************* ********************************************************************************************************* * CONFIGURATION ERRORS ********************************************************************************************************* ********************************************************************************************************* */ /* ********************************************************************************************************* ********************************************************************************************************* * MODULE END ********************************************************************************************************* ********************************************************************************************************* */ #endif