| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /*!
 | 
					
						
							|  |  |  |     @file     tusb_option.h | 
					
						
							|  |  |  |     @author   hathach (tinyusb.org) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     @section LICENSE | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Software License Agreement (BSD License) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Copyright (c) 2013, hathach (tinyusb.org) | 
					
						
							|  |  |  |     All rights reserved. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     Redistribution and use in source and binary forms, with or without | 
					
						
							|  |  |  |     modification, are permitted provided that the following conditions are met: | 
					
						
							|  |  |  |     1. Redistributions of source code must retain the above copyright | 
					
						
							|  |  |  |     notice, this list of conditions and the following disclaimer. | 
					
						
							|  |  |  |     2. Redistributions in binary form must reproduce the above copyright | 
					
						
							|  |  |  |     notice, this list of conditions and the following disclaimer in the | 
					
						
							|  |  |  |     documentation and/or other materials provided with the distribution. | 
					
						
							|  |  |  |     3. Neither the name of the copyright holders nor the | 
					
						
							|  |  |  |     names of its contributors may be used to endorse or promote products | 
					
						
							|  |  |  |     derived from this software without specific prior written permission. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ''AS IS'' AND ANY | 
					
						
							|  |  |  |     EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED | 
					
						
							|  |  |  |     WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | 
					
						
							|  |  |  |     DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER BE LIABLE FOR ANY | 
					
						
							|  |  |  |     DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES | 
					
						
							|  |  |  |     INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | 
					
						
							|  |  |  |     LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION HOWEVER CAUSED AND | 
					
						
							|  |  |  |     ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
					
						
							|  |  |  |     INCLUDING NEGLIGENCE OR OTHERWISE ARISING IN ANY WAY OUT OF THE USE OF THIS | 
					
						
							|  |  |  |     SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     This file is part of the tinyusb stack. | 
					
						
							|  |  |  | */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 12:55:53 +07:00
										 |  |  | #ifndef _TUSB_OPTION_H_
 | 
					
						
							|  |  |  | #define _TUSB_OPTION_H_
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define TUSB_VERSION_YEAR   00
 | 
					
						
							|  |  |  | #define TUSB_VERSION_MONTH  00
 | 
					
						
							|  |  |  | #define TUSB_VERSION_WEEK   0
 | 
					
						
							|  |  |  | #define TUSB_VERSION_NAME   "alpha"
 | 
					
						
							|  |  |  | #define TUSB_VERSION        XSTRING_(TUSB_VERSION_YEAR) "." XSTRING_(TUSB_VERSION_MONTH)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-25 13:00:37 +07:00
										 |  |  | /** \defgroup group_mcu Supported MCU
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  |  * \ref CFG_TUSB_MCU must be defined to one of these | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  |  *  @{ */ | 
					
						
							| 
									
										
										
										
											2018-04-12 13:04:48 +07:00
										 |  |  | #define OPT_MCU_LPC11UXX       1 ///< NXP LPC11Uxx series
 | 
					
						
							|  |  |  | #define OPT_MCU_LPC13XX        2 ///< NXP LPC13xx (not supported yet)
 | 
					
						
							|  |  |  | #define OPT_MCU_LPC13UXX       3 ///< NXP LPC13xx 12 bit ADC series
 | 
					
						
							|  |  |  | #define OPT_MCU_LPC175X_6X     4 ///< NXP LPC175x, LPC176x series
 | 
					
						
							|  |  |  | #define OPT_MCU_LPC177X_8X     5 ///< NXP LPC177x, LPC178x series (not supported yet)
 | 
					
						
							|  |  |  | #define OPT_MCU_LPC18XX        6 ///< NXP LPC18xx series (not supported yet)
 | 
					
						
							|  |  |  | #define OPT_MCU_LPC43XX        7 ///< NXP LPC43xx series
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #define OPT_MCU_NRF5X        100 ///< Nordic nRF5x series
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | /** @} */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 12:55:53 +07:00
										 |  |  | /** \defgroup group_supported_os Supported RTOS
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:17:58 +07:00
										 |  |  |  *  \ref CFG_TUSB_OS must be defined to one of these | 
					
						
							| 
									
										
										
										
											2018-04-12 12:55:53 +07:00
										 |  |  |  *  @{ */ | 
					
						
							|  |  |  | #define OPT_OS_NONE       1 ///< No RTOS is used
 | 
					
						
							|  |  |  | #define OPT_OS_FREERTOS   2 ///< FreeRTOS is used
 | 
					
						
							|  |  |  | /** @} */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-07 15:03:56 +07:00
										 |  |  | // Allow to use command line to change the config name/location
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  | #ifndef CFG_TUSB_CONFIG_FILE
 | 
					
						
							|  |  |  |   #define CFG_TUSB_CONFIG_FILE "tusb_config.h"
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  | #include CFG_TUSB_CONFIG_FILE
 | 
					
						
							| 
									
										
										
										
											2014-03-06 11:27:22 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-25 14:58:43 +07:00
										 |  |  | /** \addtogroup group_configuration
 | 
					
						
							| 
									
										
										
										
											2014-03-25 13:00:37 +07:00
										 |  |  |  *  @{ */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | //--------------------------------------------------------------------+
 | 
					
						
							|  |  |  | // CONTROLLER
 | 
					
						
							|  |  |  | //--------------------------------------------------------------------+
 | 
					
						
							| 
									
										
										
										
											2014-03-25 14:58:43 +07:00
										 |  |  | /** \defgroup group_mode Controller Mode Selection
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  |  * \brief CFG_TUSB_CONTROLLER_N_MODE must be defined with these | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  |  *  @{ */ | 
					
						
							| 
									
										
										
										
											2018-04-12 13:17:58 +07:00
										 |  |  | #define OPT_MODE_HOST    0x02 ///< Host Mode
 | 
					
						
							|  |  |  | #define OPT_MODE_DEVICE  0x01 ///< Device Mode
 | 
					
						
							|  |  |  | #define OPT_MODE_NONE    0x00 ///< Disabled
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | /** @} */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  | #ifndef CFG_TUSB_CONTROLLER_0_MODE
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:17:58 +07:00
										 |  |  |   #define CFG_TUSB_CONTROLLER_0_MODE OPT_MODE_NONE
 | 
					
						
							| 
									
										
										
										
											2014-03-17 16:46:11 +07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  | #ifndef CFG_TUSB_CONTROLLER_1_MODE
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:17:58 +07:00
										 |  |  |   #define CFG_TUSB_CONTROLLER_1_MODE OPT_MODE_NONE
 | 
					
						
							| 
									
										
										
										
											2014-03-17 16:46:11 +07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | #define CONTROLLER_HOST_NUMBER (\
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:17:58 +07:00
										 |  |  |     ((CFG_TUSB_CONTROLLER_0_MODE & OPT_MODE_HOST) ? 1 : 0) + \ | 
					
						
							|  |  |  |     ((CFG_TUSB_CONTROLLER_1_MODE & OPT_MODE_HOST) ? 1 : 0)) | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define CONTROLLER_DEVICE_NUMBER (\
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:17:58 +07:00
										 |  |  |     ((CFG_TUSB_CONTROLLER_0_MODE & OPT_MODE_DEVICE) ? 1 : 0) + \ | 
					
						
							|  |  |  |     ((CFG_TUSB_CONTROLLER_1_MODE & OPT_MODE_DEVICE) ? 1 : 0)) | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | #define MODE_HOST_SUPPORTED   (CONTROLLER_HOST_NUMBER > 0)
 | 
					
						
							|  |  |  | #define MODE_DEVICE_SUPPORTED (CONTROLLER_DEVICE_NUMBER > 0)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #if !MODE_HOST_SUPPORTED && !MODE_DEVICE_SUPPORTED
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:17:58 +07:00
										 |  |  |   #error please configure at least 1 CFG_TUSB_CONTROLLER_N_MODE to OPT_MODE_HOST and/or OPT_MODE_DEVICE
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | //--------------------------------------------------------------------+
 | 
					
						
							|  |  |  | // COMMON OPTIONS
 | 
					
						
							|  |  |  | //--------------------------------------------------------------------+
 | 
					
						
							|  |  |  | /**
 | 
					
						
							|  |  |  |   determines the debug level for the stack | 
					
						
							| 
									
										
										
										
											2014-04-17 10:33:59 +07:00
										 |  |  |   - Level 3: TBD | 
					
						
							| 
									
										
										
										
											2018-03-28 13:25:14 +07:00
										 |  |  |   - Level 2: TBD | 
					
						
							| 
									
										
										
										
											2014-04-17 10:33:59 +07:00
										 |  |  |   - Level 1: Print out if Assert failed. STATIC_VAR is NULL --> accessible when debugging | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  |   - Level 0: no debug information is generated | 
					
						
							|  |  |  | */ | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  | #ifndef CFG_TUSB_DEBUG
 | 
					
						
							|  |  |  |   #define CFG_TUSB_DEBUG 0
 | 
					
						
							|  |  |  |   #warning CFG_TUSB_DEBUG is not defined, default value is 0
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  | #ifndef CFG_TUSB_ATTR_USBRAM
 | 
					
						
							|  |  |  |  #error CFG_TUSB_ATTR_USBRAM is not defined, please help me know how to place data in accessible RAM for usb controller
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  | #ifndef CFG_TUSB_OS
 | 
					
						
							| 
									
										
										
										
											2018-04-12 12:55:53 +07:00
										 |  |  | #define CFG_TUSB_OS OPT_OS_NONE
 | 
					
						
							| 
									
										
										
										
											2018-03-07 13:25:41 +07:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2014-03-18 16:10:25 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 12:55:53 +07:00
										 |  |  | #if (CFG_TUSB_OS != OPT_OS_NONE) && !defined (CFG_TUSB_OS_TASK_PRIO)
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  |   #error CFG_TUSB_OS_TASK_PRIO need to be defined (hint: use the highest if possible)
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  | //#ifndef CFG_TUSB_CONFIGURATION_MAX
 | 
					
						
							|  |  |  | //  #define CFG_TUSB_CONFIGURATION_MAX 1
 | 
					
						
							|  |  |  | //  #warning CFG_TUSB_CONFIGURATION_MAX is not defined, default value is 1
 | 
					
						
							| 
									
										
										
										
											2014-02-20 16:06:31 +07:00
										 |  |  | //#endif
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-28 16:45:54 +07:00
										 |  |  | #ifndef tu_malloc
 | 
					
						
							|  |  |  | #include <stdlib.h>
 | 
					
						
							|  |  |  | #define tu_malloc malloc
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef tu_free
 | 
					
						
							|  |  |  | #define tu_free free
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:43:13 +07:00
										 |  |  | //--------------------------------------------------------------------+
 | 
					
						
							|  |  |  | // DEVICE OPTIONS
 | 
					
						
							|  |  |  | //--------------------------------------------------------------------+
 | 
					
						
							|  |  |  | #if MODE_DEVICE_SUPPORTED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:23:52 +07:00
										 |  |  |   #define DEVICE_CLASS_HID ( CFG_TUD_HID_KEYBOARD + CFG_TUD_HID_MOUSE + CFG_TUD_HID_GENERIC )
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:43:13 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:23:52 +07:00
										 |  |  |   #ifndef CFG_TUD_ENDOINT0_SIZE
 | 
					
						
							|  |  |  |     #define CFG_TUD_ENDOINT0_SIZE    64
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:43:13 +07:00
										 |  |  |   #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:23:52 +07:00
										 |  |  |   #if CFG_TUD_ENDOINT0_SIZE > 64
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:43:13 +07:00
										 |  |  |     #error Control Endpoint Max Package Size cannot larger than 64
 | 
					
						
							|  |  |  |   #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 13:23:52 +07:00
										 |  |  |   #ifndef CFG_TUD_ENUM_BUFFER_SIZE
 | 
					
						
							|  |  |  |     #define CFG_TUD_ENUM_BUFFER_SIZE 256
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:43:13 +07:00
										 |  |  |   #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // MODE_DEVICE_SUPPORTED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | //--------------------------------------------------------------------+
 | 
					
						
							|  |  |  | // HOST OPTIONS
 | 
					
						
							|  |  |  | //--------------------------------------------------------------------+
 | 
					
						
							|  |  |  | #if MODE_HOST_SUPPORTED
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  |   #ifndef CFG_TUSB_HOST_DEVICE_MAX
 | 
					
						
							|  |  |  |     #define CFG_TUSB_HOST_DEVICE_MAX 1
 | 
					
						
							|  |  |  |     #warning CFG_TUSB_HOST_DEVICE_MAX is not defined, default value is 1
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  |   #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   //------------- HUB CLASS -------------//
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  |   #if CFG_TUSB_HOST_HUB && (CFG_TUSB_HOST_DEVICE_MAX == 1)
 | 
					
						
							|  |  |  |     #error there is no benefit enable hub with max device is 1. Please disable hub or increase CFG_TUSB_HOST_DEVICE_MAX
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  |   #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   //------------- HID CLASS -------------//
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  |   #define HOST_CLASS_HID   ( CFG_TUSB_HOST_HID_KEYBOARD + CFG_TUSB_HOST_HID_MOUSE + CFG_TUSB_HOST_HID_GENERIC )
 | 
					
						
							| 
									
										
										
										
											2013-10-27 19:34:36 +07:00
										 |  |  | //  #if HOST_CLASS_HID
 | 
					
						
							|  |  |  | //    #define HOST_HCD_XFER_INTERRUPT
 | 
					
						
							|  |  |  | //  #endif
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-10 14:31:11 +07:00
										 |  |  |   #ifndef CFG_TUSB_HOST_ENUM_BUFFER_SIZE
 | 
					
						
							|  |  |  |     #define CFG_TUSB_HOST_ENUM_BUFFER_SIZE 256
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  |   #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   //------------- CLASS -------------//
 | 
					
						
							|  |  |  | #endif // MODE_HOST_SUPPORTED
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-12 12:55:53 +07:00
										 |  |  | #endif /* _TUSB_OPTION_H_ */
 | 
					
						
							| 
									
										
										
										
											2013-10-24 15:32:54 +07:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** @} */ |