# 0.9.0 *March 12, 2021* ## Device Controller Driver (DCD) ### RP2040 - Fix endpoint buffer reallocation overrun problem - Fix osal_pico queue overflow in initialization - Fix Isochronous endpoint buffer size in transfer - Optimize hardware endpoint struct to reduce RAM usage - Fix enum workaround forever check for SE0 when pull up is disabled ### Sony CXD56 - Pass the correct speed on Spresense - Fix setup processed flag ### NXP Transdimention - Update dcd_init() to reset controller to device mode ## USB Device Driver (USBD) - Fix issue with status zlp (`tud_control_status()`) is returned by class driver with SET/CLEAR_FEATURE for endpoint. - Correct endpoint size check for fullspeed bulk, can be 8, 16, 32, 64 - Ack SET_INTERFACE even if it is not implemented by class driver. ## Device Class Driver ### DFU Runtime - rename `dfu_rt()` to `dfu_runtime()` for easy reading ### CDC - Add `tud_cdc_send_break_cb()` to support break request - Improve CDC receive, minor behavior changes: when `tud_cdc_rx_wanted_cb()` is invoked wanted_char may not be the last byte in the fifo ### HID - [Breaking] Add itf argument to hid API to support multiple instances, follow API has signature changes - `tud_hid_descriptor_report_cb()` - `tud_hid_get_report_cb()` - `tud_hid_set_report_cb()` - `tud_hid_boot_mode_cb()` - `tud_hid_set_idle_cb()` - Add report complete callback `tud_hid_report_complete_cb()` API - Add DPad/Hat support for HID Gamepad - `TUD_HID_REPORT_DESC_GAMEPAD()` now support 16 buttons, 2 joysticks, 1 hat/dpad - Add `hid_gamepad_report_t` along with `GAMEPAD_BUTTON_` and `GAMEPAD_HAT_` enum - Add Gamepad to `hid_composite` / `hid_composite_freertos` example ### MIDI - Fix dropping MIDI sysex message when fifo is full - Fix typo in `tud_midi_write24()`, make example less ambiguous for cable and channel - Fix incorrect endpoint descriptor length, MIDI v1 use Audio v1 which has 9-byte endpoint descriptor (instead of 7) ## Host Controller Driver (HCD) - Add rhport to `hcd_init()` - Improve EHCI/OHCI driver abstraction - Move echi/ohci files to portable/ - Rename `hcd_lpc18_43` to `hcd_transdimension` - Sub hcd API with `hcd_ehci_init()`, `hcd_ehci_register_addr()` - Update NXP transdimension `hcd_init()` to reset controller to host mode - Ported hcd to rt10xx ## USB Host Driver (USBH) - No noticeable changes to usbh ## Host Class Driver ### MSC - Rename `tuh_msc_scsi_inquiry()` to `tuh_msc_inquiry()` - Rename `tuh_msc_mounted_cb()`/`tuh_msc_unmounted_cb()` to `tuh_msc_mount_cb()`/`tuh_msc_unmount_cb()` to match device stack naming - Change `tuh_msc_is_busy()` to `tuh_msc_ready()` - Add read10 and write10 function: `tuh_msc_read10()`, `tuh_msc_write10()` - Read_Capacity is invoked as part of enumeration process - Add `tuh_msc_get_block_count()`, `tuh_msc_get_block_size()` - Add `CFG_TUH_MSC_MAXLUN` (default to 4) to hold lun capacities ## Others - Add basic support for rt-thread OS - Change zero bitfield length to more explicit padding - Build example now fetch required submodules on the fly while running `make` without prior submodule init for mcu drivers - Update pico-sdk to v1.1.0 ### New Boards - Microchip SAM E54 Xplained Pro - LPCXpresso 55s28 - LPCXpresso 18s37 ## Contributors Thanks to everyone who contributed to this release: @amitv87, @duddie, @hathach, @HiFiPhile, @homeodor, @ipopov, @jgressmann, @kamtom480, @liamfraser, @lurch, @majbthrd, @ndinsmore, @tfx2001, @xmos-jmccarthy.