text: /*
   * tusb_config.h
   *
   *  Created on: May 5, 2021
   *      Author: Jeremiah McCarthy
   */
  
  #ifndef TUSB_CONFIG_H_
  #define TUSB_CONFIG_H_
  
  #ifdef __cplusplus
   extern "C" {
  #endif
  
  //--------------------------------------------------------------------
  // COMMON CONFIGURATION
  //--------------------------------------------------------------------
  
  // defined by board.mk
  #ifndef CFG_TUSB_MCU
    #error CFG_TUSB_MCU must be defined
  #endif
  
  // RHPort number used for device can be defined by board.mk, default to port 0
  #ifndef BOARD_DEVICE_RHPORT_NUM
    #define BOARD_DEVICE_RHPORT_NUM     0
  #endif
  
  // RHPort max operational speed can defined by board.mk
  // Default to Highspeed for MCU with internal HighSpeed PHY (can be port specific), otherwise FullSpeed
  #ifndef BOARD_DEVICE_RHPORT_SPEED
    #if (CFG_TUSB_MCU == OPT_MCU_LPC18XX || CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_MIMXRT10XX || \
         CFG_TUSB_MCU == OPT_MCU_NUC505  || CFG_TUSB_MCU == OPT_MCU_CXD56)
      #define BOARD_DEVICE_RHPORT_SPEED   OPT_MODE_HIGH_SPEED
    #else
      #define BOARD_DEVICE_RHPORT_SPEED   OPT_MODE_FULL_SPEED
    #endif
  #endif
  
  // Device mode with rhport and speed defined by board.mk
  #if   BOARD_DEVICE_RHPORT_NUM == 0
    #define CFG_TUSB_RHPORT0_MODE     (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED)
  #elif BOARD_DEVICE_RHPORT_NUM == 1
    #define CFG_TUSB_RHPORT1_MODE     (OPT_MODE_DEVICE | BOARD_DEVICE_RHPORT_SPEED)
  #else
    #error "Incorrect RHPort configuration"
  #endif
  
  #ifndef CFG_TUSB_OS
  #define CFG_TUSB_OS               OPT_OS_NONE
  #endif
  
  // 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_DFU    1
  
  // DFU buffer size, it has to be set to the buffer size used in TUD_DFU_DESCRIPTOR
  #define CFG_TUD_DFU_XFER_BUFSIZE    512
  
  #ifdef __cplusplus
   }
  #endif
  
  #endif /* TUSB_CONFIG_H_ */
  