# 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.