# 0.16.0

*November 24, 2023*

- New controller driver: MAX3421e (usb host shield), rusb2 (Renesas USB2.0), ChipIdea fullspeed
- New MCUs: MCXn9, nRF5340, STM32: G0, G4, L5, U575, U5A5, RA6m5, CH32F20x
- Add initial TypeC PowerDelivery support with STM32G4
- Remove submodules and use python script to manage repo dependencies #1947
- Add CMake support for most families and boards, move build file from tools/ to examples/build_system
- Add ETM trace support with JTrace for nrf52840, nrf5340, mcb1857, stm32h743eval, ra6m5
- [osal] Make it possible to override the `osal_task_delay()` in osal_none
- Add CDC+UAC2 composite device example
- Enhance Hardware-in-the-loop (HIL) testing with more boards: rp2040, stm32l412nucleo, stm32f746disco, lpcxpresso43s67

## Controller Driver (DCD & HCD)

- Add new ISO endpoint API: `dcd_edpt_iso_alloc()` and `dcd_edpt_iso_activate()`
- Remove legacy driver st/synopsys

### EHCI

- [iMXRT] Add dache clean/invalidate when memory is in cacheable memory
- Fix portsc write issue which cause problem with enumeration
- Fix an issue when doing port reset write to portsc
- Fix port change detect is not recognized when power on with attached device
- Fix xfer failed with disconnected device as stalled
- Fix error on EHCI causes xfer error in non-queued qhd which cause memory fault
- Un-roll recursive hub removal with usbh queue
- Fix issue when removing queue head
- Implement `hcd_edpt_abort_xfer()`
- use standard USB complete interrupt instead of custom chipidea async/period interrupt to be more compatible with other ehci implementation
- refactor usb complete & error isr processing, merge, update. Fix EHCI QHD reuses QTD on wrong endpoint
- Improve bus reset, fix `send_setup()` not carried out if halted previously
- Fix clear qhd halted bit if not caused by STALL protocol to allow for next transfer

### ChipIdea Highspeed

- Fix control transfer issue when previous status and new setup complete in the same isr frame
- [imxrt] Add dcache support for cache region

### ChipIdea Fullspeed

- Generalize ChipIdea Fullspeed driver for mcxn9 (port 0), kinetis

### nrf

- Fix DMA race condition with ISO OUT transfer #1946
- Add support for nRF5340 with pca10095 board

### Renesas rusb2

- Generalize rusb2 driver for ra, rx mcus
- rework both dcd and hcd for better multiple ports support
- Add support for board with HS USB port: ra6m5 port1

### rp2040

- [dcd] Make writes to SIE_CTRL aware of concurrent access
- [hcd] add `hcd_frame_number()`, `hcd_edpt_abort_xfer()` for pio-usb host

### stm32 fsdev

- Add STM32L5 support
- Implement `dcd_edpt_iso_alloc()` and `dcd_edpt_iso_activate()`

### OHCI

- Allows configurable root hub ports, handles SMM mode (Ref OHCI spec 5.1.1.3.3) and Bios mode (Ref OHCI spec 5.1.1.3.4)
- Fix FrameIntervalToggle must be toggled after we write the FrameInterval (Ref OHCI Spec 7.3.1)
- Wait PowerOnToPowerGoodTime after we enable power of the RH ports (Ref OHCI Spec 7.4.1)
- Generate port interrupts for devices already connected during init.
- Fix issue when removing queue head
- Disable MIE during IRQ processing and clear HccaDoneHead on completion as per OCHI Spec Page 80

## Device Stack

- Add optional hooks `tud_event_hook_cb()`

### Audio (UAC2)

- Fix feedback EP buffer alignment.
- Fix encoding, update example
- Improve IN transfer

### Bluetooth

- Add historical EP compatibility for Bluetooth HCI

### CDC

- Fix line_coding alignment
- Fix typo in cdc line coding enum

### MIDI

- Fix `stream_write()` always writes system messages to cable 0
- Fix incorrect NOTE_ON, NOTE_OFF definitions

### USBTMC

- Fix tmc488 bit order

### Vendor

- fix `read()`/`write()` race condition

### Video (UVC)

- Add the capability for video class to handle a bulk endpoint in the streaming interface.

## Host Stack

### USBH

- Add new APIs: `tuh_interface_set()`, `tuh_task_event_ready()`, `tuh_edpt_abort_xfer()`, `tuh_rhport_reset_bus()`, `tuh_rhport_is_active()`
- Fix issue when device generate multiple attach/detach/attach when plugging in
- Prefer application callback over built-in driver on transfer complete event
- Correct `hcd_edpt_clear_stall()` API signature
- Separate bus reset delay and contact debouncing delay in enumeration
- Support `usbh_app_driver_get_cb()` for application drivers
- Fix usbh enumeration removal race condition
- Add optional hooks `tuh_event_hook_cb()`

### CDC

- Breaking: change `tuh_cdc_itf_get_info()` to use tuh_itf_info_t instead of tuh_cdc_info_t
- Fix cdc host enumeration issue when device does not support line request
- Add support for vendor usb2uart serial: ftdi, cp210x, ch9102f
- Improve sync control API e.g  `tuh_cdc_set_control_line_state()`, `tuh_cdc_set_line_coding()`

### HID

- Add new APIs `tuh_hid_send_report()`, `tuh_hid_itf_get_info()`, `tuh_hid_receive_ready()`, `tuh_hid_send_ready()`, `tuh_hid_set_default_protocol()`
- Change meaning of CFG_TUH_HID to total number of HID interfaces supported. Previously `CFG_TUH_HID` is max number of interfaces per device which is rather limited and consume more resources than needed.

### HUB

- Fix handling of empty "status change" interrupt
- Fix issue with hub status_change is not aligned

### MSC

- Fix bug in `tuh_msc_ready()`
- Fix host msc get maxlun not using aligned section memory

## Contributors

Thanks to everyone who contributed to this release: @0xCCF4, @abakosh, @ahooper, @antoniovazquezblanco, @bavison, @bencowperthwaite, @bpaddock, @branalba, @ccrome, @dauc, @dhalbert, @DRNadler, @dsugisawa-mixi, @epatstarkey, @eustas, @facchinm, @gabChouin, @georgeboc, @hathach, @HiFiPhile, @howard0su, @HubertD, @ipopov, @jbtheou, @jefftrull, @jfedor2, @jferreir, @jfm92, @jncronin, @JustAnother1, @kasjer, @kholia, @kilograham, @kkitayam, @koendv, @Krasutski, @kripton, @maidnl, @MattMills, @mikee47, @mndza, @nathaniel-brough, @NullMember, @perigoso, @projectgus, @raiden00pl, @ReimuNotMoe, @Rocky04, @rppicomidi, @Ryzee119, @sinitax, @sjanc, @slark-yuxj, @slc-tl, @Tails86, @tannewt, @tswan-quasi, @tyustli, @Yveaux.
