# 0.11.0

*August 30, 2021*

- Add host/hid_controller example: only worked/tested with Sony PS4 DualShock controller
- Add device/hid_boot_interface example
- Add support for Renesas CCRX toolchain for RX mcu

## Device Controller Driver (DCD)

- Add new DCD port for SAMx7x (E70, S70, V70, V71)
- Add new mcu K32L2Bxx
- Add new mcu GD32VF103
- Add new mcu STM32l151
- Add new mcu SAML21
- Add new mcu RX65n RX72n
- Fix NUC120/121/126 USBRAM can only be accessed in byte manner. Also improve set_address & disable sof
- Add Suspend/Resume handling for Renesas RX family.
- Fix DA1469x no VBUS startup

### Synopsys

- Fix Synopsys set address bug which could cause re-enumeration failed
- Fix `dcd_synopsys` driver integer overflow in HS mode (issue #968)

### nRF5x

- Add nRF5x suspend, resume and remote wakeup
- Fix nRF5x race condition with `TASKS_EP0RCVOUT`

### RP2040

- Add RP2040 suspend & resume support
- Implement double buffer for both host and device (#891). However device EPOUT is still single buffered due to technical issue with short packet

## Device Stack

### USBD

- Better support big endian mcu
- Add `tuh_inited()` and `tud_inited()`, will separate `tusb_init/inited()` to `tud/tuh_init/inited()`
- Add `dcd_attr.h` for defining common controller attribute such as max endpoints

### Bluetooth

- Fix stridx error in descriptor template

### DFU

- Enhance DFU implementation to support multiple alternate interface and better support `bwPollTimeout`
- Rename `CFG_TUD_DFU_MODE` to simply `CFG_TUD_DFU`

### HID

- Fix newline usage keyboard (ENTER 0x28)
- Better support Hid Get/Set report
- Change max gamepad support from 16 to 32 buttons

### MIDI

- Fix midi available
- Fix midi data
- Fix an issue when calling midi API when not enumerated yet

### UAC2

- Fix bug and enhance of UAC2

### Vendor

- Fix vendor fifo deadlock in certain case
- Add `tud_vendor_n_read_flush()`

## Host Controller Driver (HCD)

### RP2040

- Implement double buffered to fix E4 errata and boost performance
- Lots of rp2040 update and enhancement

## Host Stack

- Major update and rework most of host stack, still needs more improvement
- Lots of improvement and update in parsing configuration and control
- Rework and major update to HID driver. Will default to enable boot interface if available
- Separate `CFG_TUH_DEVICE_MAX` and `CFG_TUH_HUB` for better management and reduce SRAM usage

## Contributors

Thanks to everyone who contributed to this release: @a-h, @BennyEvans, @ctag-fh-kiel, @DuMaM, @hathach, @HiFiPhile, @KarlK90, @kasjer, @kilograham, @kkitayam, @majbthrd, @mmosca, @mws-rmain, @ned-pcs, @nxf58843, @perigoso, @sabas1080, @salkinium, @tringis, @Wini-Buh, @xcguang, @xmos-jmccarthy, @zhangslice.
