pub fn generate_cfg() -> String {
let mut cfg = String::new();
#[cfg(feature = "host")]
cfg.push_str("#define CFG_TUSB_RHPORT0_MODE OPT_MODE_HOST\n");
#[cfg(feature = "device")]
cfg.push_str("#define CFG_TUSB_RHPORT0_MODE OPT_MODE_DEVICE\n");
cfg.push_str("#define CFG_TUSB_OS OPT_OS_NONE\n");
cfg.push_str("#define CFG_TUSB_MEM_SECTION __attribute__((section(\".data.usb\")))\n");
#[cfg(all(feature = "host", feature = "device"))]
compile_error!("choose only host or device");
#[cfg(not(any(feature = "host", feature ="device")))]
compile_error!("select mode host or device");
#[cfg(feature = "lpc11uxx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC11UXX\n");
#[cfg(feature = "lpc13xx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC13XX\n");
#[cfg(feature = "lpc15xx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC15XX\n");
#[cfg(feature = "lpc175x_6x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC175X_6X\n");
#[cfg(feature = "lpc177x_8x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC177X_8X\n");
#[cfg(feature = "lpc18xx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC18XX\n");
#[cfg(feature = "lpc40xx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC40XX\n");
#[cfg(feature = "lpc43xx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC43XX\n");
#[cfg(feature = "lpc51uxx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC51UXX\n");
#[cfg(feature = "lpc54xxx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC54XXX\n");
#[cfg(feature = "lpc55xx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_LPC55XX\n");
#[cfg(feature = "nrf5x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_NRF5X\n");
#[cfg(feature = "samd21")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_SAMD21\n");
#[cfg(feature = "samd51")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_SAMD51\n");
#[cfg(feature = "samg")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_SAMG\n");
#[cfg(feature = "same5x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_SAME5X\n");
#[cfg(feature = "samd11")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_SAMD11\n");
#[cfg(feature = "saml22")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_SAML22\n");
#[cfg(feature = "saml21")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_SAML21\n");
#[cfg(feature = "samx7x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_SAMX7X\n");
#[cfg(feature = "stm32f0")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32F0\n");
#[cfg(feature = "stm32f1")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32F1\n");
#[cfg(feature = "stm32f2")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32F2\n");
#[cfg(feature = "stm32f3")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32F3\n");
#[cfg(feature = "stm32f4")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32F4\n");
#[cfg(feature = "stm32f7")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32F7\n");
#[cfg(feature = "stm32h7")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32H7\n");
#[cfg(feature = "stm32l1")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32L1\n");
#[cfg(feature = "stm32l0")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32L0\n");
#[cfg(feature = "stm32l4")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32L4\n");
#[cfg(feature = "stm32g0")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32G0\n");
#[cfg(feature = "stm32g4")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_STM32G4\n");
#[cfg(feature = "cxd56")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_CXD56\n");
#[cfg(feature = "msp430x5xx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_MSP430X5XX\n");
#[cfg(feature = "msp432e4")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_MSP432E4\n");
#[cfg(feature = "tm4c123")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_TM4C123\n");
#[cfg(feature = "tm4c129")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_TM4C129\n");
#[cfg(feature = "valentyusb_eptri")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_VALENTYUSB_EPTRI\n");
#[cfg(feature = "mimxrt10xx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_MIMXRT10XX\n");
#[cfg(feature = "nuc121")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_NUC121\n");
#[cfg(feature = "nuc126")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_NUC126\n");
#[cfg(feature = "nuc120")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_NUC120\n");
#[cfg(feature = "nuc505")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_NUC505\n");
#[cfg(feature = "esp32s2")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_ESP32S2\n");
#[cfg(feature = "esp32s3")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_ESP32S3\n");
#[cfg(feature = "da1469x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_DA1469X\n");
#[cfg(feature = "rp2040")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_RP2040\n");
#[cfg(feature = "mkl25zxx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_MKL25ZXX\n");
#[cfg(feature = "k32l2bxx")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_K32L2BXX\n");
#[cfg(feature = "efm32gg")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_EFM32GG\n");
#[cfg(feature = "rx63x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_RX63X\n");
#[cfg(feature = "rx65x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_RX65X\n");
#[cfg(feature = "rx72n")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_RX72N\n");
#[cfg(feature = "mm32f327x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_MM32F327X\n");
#[cfg(feature = "gd32vf103")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_GD32VF103\n");
#[cfg(feature = "bcm2711")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_BCM2711\n");
#[cfg(feature = "bcm2835")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_BCM2835\n");
#[cfg(feature = "bcm2837")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_BCM2837\n");
#[cfg(feature = "xmc4000")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_XMC4000\n");
#[cfg(feature = "pic32mz")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_PIC32MZ\n");
#[cfg(feature = "ft90x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_FT90X\n");
#[cfg(feature = "ft93x")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_FT93X\n");
#[cfg(feature = "f1c100s")]
cfg.push_str("#define CFG_TUSB_MCU OPT_MCU_F1C100S\n");
#[cfg(all(feature = "host", feature = "hub"))]
cfg.push_str("#define CFG_TUH_HUB 1\n");
#[cfg(all(feature = "host", feature = "hub"))]
cfg.push_str("#define CFG_TUH_DEVICE_MAX 4\n");
#[cfg(all(feature = "host", feature = "cdc"))]
cfg.push_str("#define CFG_TUH_CDC 1\n");
#[cfg(all(feature = "host", feature = "hid"))]
cfg.push_str("#define CFG_TUH_HID 4\n");
#[cfg(all(feature = "host", feature = "midi"))]
cfg.push_str("#define CFG_TUH_MIDI 1\n");
#[cfg(all(feature = "host", feature = "msc"))]
cfg.push_str("#define CFG_TUH_MSC 1\n");
#[cfg(all(feature = "host", feature = "vendor"))]
cfg.push_str("#define CFG_TUH_VENDOR 1\n");
#[cfg(all(feature = "device", feature = "cdc"))]
cfg.push_str("#define CFG_TUD_CDC 1\n");
#[cfg(all(feature = "device", feature = "msc"))]
cfg.push_str("#define CFG_TUD_MSC 1\n");
#[cfg(all(feature = "device", feature = "hid"))]
cfg.push_str("#define CFG_TUD_HID 1\n");
#[cfg(all(feature = "device", feature = "audio"))]
cfg.push_str("#define CFG_TUD_AUDIO 1\n");
#[cfg(all(feature = "device", feature = "video"))]
cfg.push_str("#define CFG_TUD_VIDEO 1\n");
#[cfg(all(feature = "device", feature = "midi"))]
cfg.push_str("#define CFG_TUD_MIDI 1\n");
#[cfg(all(feature = "device", feature = "vendor"))]
cfg.push_str("#define CFG_TUD_VENDOR 1\n");
#[cfg(all(feature = "device", feature = "usbtmc"))]
cfg.push_str("#define CFG_TUD_USBTMC 1\n");
#[cfg(all(feature = "device", feature = "dfu_runtime"))]
cfg.push_str("#define CFG_TUD_DFU_RUNTIME 1\n");
#[cfg(all(feature = "device", feature = "dfu"))]
cfg.push_str("#define CFG_TUD_DFU 1\n");
#[cfg(all(feature = "device", feature = "bth"))]
cfg.push_str("#define CFG_TUD_BTH 1\n");
#[cfg(all(feature = "device", feature = "ecm_rndis"))]
cfg.push_str("#define CFG_TUD_ECM_RNDIS 1\n");
#[cfg(all(feature = "device", feature = "ncm"))]
cfg.push_str("#define CFG_TUD_NCM 1\n");
cfg
}