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.