2020-08-19 21:07:43 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								/*
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  MIT  License  ( MIT ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Copyright  ( c )  2019  Ha  Thach  ( tinyusb . org ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Permission  is  hereby  granted ,  free  of  charge ,  to  any  person  obtaining  a  copy 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  of  this  software  and  associated  documentation  files  ( the  " Software " ) ,  to  deal 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  in  the  Software  without  restriction ,  including  without  limitation  the  rights 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  to  use ,  copy ,  modify ,  merge ,  publish ,  distribute ,  sublicense ,  and / or  sell 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  copies  of  the  Software ,  and  to  permit  persons  to  whom  the  Software  is 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  furnished  to  do  so ,  subject  to  the  following  conditions : 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  The  above  copyright  notice  and  this  permission  notice  shall  be  included  in 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  all  copies  or  substantial  portions  of  the  Software . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  THE  SOFTWARE  IS  PROVIDED  " AS IS " ,  WITHOUT  WARRANTY  OF  ANY  KIND ,  EXPRESS  OR 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  IMPLIED ,  INCLUDING  BUT  NOT  LIMITED  TO  THE  WARRANTIES  OF  MERCHANTABILITY , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  FITNESS  FOR  A  PARTICULAR  PURPOSE  AND  NONINFRINGEMENT .  IN  NO  EVENT  SHALL  THE 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  AUTHORS  OR  COPYRIGHT  HOLDERS  BE  LIABLE  FOR  ANY  CLAIM ,  DAMAGES  OR  OTHER 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  LIABILITY ,  WHETHER  IN  AN  ACTION  OF  CONTRACT ,  TORT  OR  OTHERWISE ,  ARISING  FROM , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  OUT  OF  OR  IN  CONNECTION  WITH  THE  SOFTWARE  OR  THE  USE  OR  OTHER  DEALINGS  IN 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  THE  SOFTWARE . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef _TUSB_CONFIG_H_ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define _TUSB_CONFIG_H_ 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifdef __cplusplus 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								extern  " C "  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//--------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// COMMON CONFIGURATION
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//--------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// defined by compiler flags for flexibility
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef CFG_TUSB_MCU 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# error CFG_TUSB_MCU must be defined 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# if CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_LPC18XX || CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUSB_RHPORT0_MODE       (OPT_MODE_DEVICE | OPT_MODE_HIGH_SPEED) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# else 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUSB_RHPORT0_MODE       OPT_MODE_DEVICE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-01-24 00:44:17 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifndef CFG_TUSB_OS 
  
						 
					
						
							
								
									
										
										
										
											2020-08-19 21:07:43 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# define CFG_TUSB_OS                 OPT_OS_NONE 
  
						 
					
						
							
								
									
										
										
										
											2021-01-24 00:44:17 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2020-08-19 21:07:43 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-11-01 13:37:56 +07:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# ifndef CFG_TUSB_DEBUG 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUSB_DEBUG              0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-19 21:07:43 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								// CFG_TUSB_DEBUG is defined by compiler in DEBUG build
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// #define CFG_TUSB_DEBUG           0
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/* USB DMA on some MCUs can only access a specific SRAM region with restriction on alignment.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Tinyusb  use  follows  macros  to  declare  transferring  memory  so  that  they  can  be  put 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  into  those  specific  section . 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  e . g 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  CFG_TUSB_MEM  SECTION  :  __attribute__  ( (  section ( " .usb_ram " )  ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  -  CFG_TUSB_MEM_ALIGN    :  __attribute__  ( ( aligned ( 4 ) ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef CFG_TUSB_MEM_SECTION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUSB_MEM_SECTION 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef CFG_TUSB_MEM_ALIGN 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUSB_MEM_ALIGN          __attribute__ ((aligned(4))) 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//--------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// DEVICE CONFIGURATION
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//--------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# ifndef CFG_TUD_ENDPOINT0_SIZE 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_ENDPOINT0_SIZE    64 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//------------- CLASS -------------//
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_CDC               0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_MSC               0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_HID               0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_MIDI              0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO             1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_VENDOR            0 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//--------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								// AUDIO CLASS DRIVER CONFIGURATION
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								//--------------------------------------------------------------------
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2021-04-03 09:49:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								// Have a look into audio_device.h for all configurations
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_FUNC_1_DESC_LEN                                 TUD_AUDIO_MIC_ONE_CH_DESC_LEN 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_FUNC_1_N_AS_INT                                 1                                        // Number of Standard AS Interface Descriptors (4.9.1) defined per audio function - this is required to be able to remember the current alternate settings of these interfaces - We restrict us here to have a constant number for all audio functions (which means this has to be the maximum number of AS interfaces an audio function has and a second audio function with less AS interfaces just wastes a few bytes)
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_FUNC_1_CTRL_BUF_SZ                              64                                       // Size of control request buffer
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_ENABLE_EP_IN                                    1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_FUNC_1_N_BYTES_PER_SAMPLE_TX                    2                                        // Driver gets this info from the descriptors - we define it here to use it to setup the descriptors and to do calculations with it below
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_FUNC_1_N_CHANNELS_TX                            1                                        // Driver gets this info from the descriptors - we define it here to use it to setup the descriptors and to do calculations with it below - be aware: for different number of channels you need another descriptor!
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_EP_SZ_IN                                        48 * CFG_TUD_AUDIO_FUNC_1_N_BYTES_PER_SAMPLE_TX * CFG_TUD_AUDIO_FUNC_1_N_CHANNELS_TX       // 48 Samples (48 kHz) x 2 Bytes/Sample x 1 Channel
  
						 
					
						
							
								
									
										
										
										
											2021-04-03 10:09:40 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_FUNC_1_EP_IN_SZ_MAX                             CFG_TUD_AUDIO_EP_SZ_IN                   // Maximum EP IN size for all AS alternate settings used
  
						 
					
						
							
								
									
										
										
										
											2021-04-03 09:49:27 +02:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# define CFG_TUD_AUDIO_FUNC_1_EP_IN_SW_BUF_SZ                          CFG_TUD_AUDIO_EP_SZ_IN + 1 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2020-08-19 21:07:43 +02:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# ifdef __cplusplus 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# endif  /* _TUSB_CONFIG_H_ */