0.14.0

August 23, 2022

  • Improve compiler support for CCRX and IAR

  • Add timeout to osal_queue_receive()

  • Add tud_task_ext(timeout, in_isr) as generic version of tud_task(). Same as tuh_task_ext(), tuh_task()

  • Enable more warnings -Wnull-dereference -Wuninitialized -Wunused -Wredundant-decls -Wconversion

Add new examples

  • host/bare_api to demonstrate generic (app-level) enumeration and endpoint transfer

  • dual/host_hid_to_device_cdc to run both device and host stack concurrently, get HID report from host and print out to device CDC. This example only work with multiple-controller MCUs and rp2040 with the help of pio-usb as added controller.

Controller Driver (DCD & HCD)

  • Enhance rhports management to better support dual roles

    • CFG_TUD_ENABLED/CFG_TUH_ENABLED, CFG_TUD_MAX_SPEED/CFG_TUH_MAX_SPEED can be used to replace CFG_TUSB_RHPORT0_MODE/CFG_TUSB_RHPORT1_MODE

    • tud_init(rhport), tuh_init(rhport) can be used to init stack on specified roothub port (controller) instead of tusb_init(void)

  • Add dcd/hcd port specific defines TUP_ (stand for tinyusb port-specific)

dwc2

  • Update to support stm32 h72x, h73x with only 1 otg controller

  • Fix overwrite with grstctl when disable endpoint

EHCI

  • Fix an issue with EHCI driver

msp430

  • Fix for possible bug in msp430-elf-gcc 9.3.0

nrf5x

  • Fix DMA access race condition using atomic function

pic32

  • Fix PIC32 sanity

rp2040

  • Add PICO-PIO-USB as controller (device/host) support for rp2040

  • Use shared IRQ handlers, so user can also hook the USB IRQ

  • Fix resumed signal not reported to device stack

stm32fsdev

  • Add support for stm32wb55

Device Stack

  • [Audio] Add support for feedback endpoint computation

    • New API tud_audio_feedback_params_cb(), tud_audio_feedback_interval_isr().

    • Supported computation method are: frequency with fixed/float or power of 2. Feedback with fifo count is not yet supported.

    • Fix nitfs (should be 3) in TUD_AUDIO_HEADSET_STEREO_DESCRIPTOR

    • Fix typo in audiod_rx_done_cb()

  • [DFU] Fix coexistence with other interfaces BTH, RNDIS

  • [MSC] Fix inquiry response additional length field

  • [Vendor] Improve write performance

Host Stack

  • Add new API tuh_configure(rhport, cfg_id, cfg_param) for dynamic port specific behavior configuration

  • [HID] Open OUT endpoint if available

  • [Hub] hub clear port and device interrupts

[USBH] Major improvement

  • Rework usbh control transfer with complete callback. New API tuh_control_xfer() though still only carry 1 usbh (no queueing) at a time.

  • Add generic endpoint transfer with tuh_edpt_open(), tuh_edpt_xfer(). Require CFG_TUH_API_EDPT_XFER=1

  • Support app-level enumeration with new APIs

    • tuh_descriptor_get(), tuh_descriptor_get_device(), tuh_descriptor_get_configuration(), tuh_descriptor_get_hid_report()

    • tuh_descriptor_get_string(), tuh_descriptor_get_manufacturer_string(), tuh_descriptor_get_product_string(), tuh_descriptor_get_serial_string()

    • Also add _sync() as sync/blocking version for above APIs

Contributors

Thanks to everyone who contributed to this release: @alexandre-perrin, @ccrome, @cr1901, @Daft-Freak, @Firefishy, @hathach, @iabdalkader, @Iktek, @kasjer, @kilograham, @liamfraser, @M3gaFr3ak, @maddyaby, @majbthrd, @mingpepe, @Nikitarc, @perigoso, @phryniszak, @pigrew, @Qianhao2579, @robert-hh, @Ryzee119, @sjanc, @sknebel, @tannewt, @tfx2001, @Wini-Buh, @yoyopod.