# 0.7.0 *November 7, 2020* ## Device Controller Driver - Added new support for Espressif ESP32-S2 - Added new support for Dialog DA1469x - Enhance STM32 Synopsys - Support bus events disconnection/suspend/resume/wakeup - Improve transfer performance with optimizing xfer and fifo size - Support Highspeed port (OTG_HS) with both internal and external PHY - Support multiple usb ports with rhport=1 is highspeed on selected MCUs e.g H743, F23. It is possible to have OTG_HS to run on Fullspeed PHY (e.g lacking external PHY) - Add ISO transfer, fix odd/even frame - Fix FIFO flush during stall - Implement `dcd_edpt_close()` API - Support F105, F107 ### Enhance STM32 fsdev - Improve dcd fifo allocation - Fix ISTR race condition - Support remap USB IRQ on supported MCUs - Implement `dcd_edpt_close()` API ### Enhance NUC 505 - enhance set configure behavior ### Enhance SAMD - Fix race condition with setup packet - Add SAMD11 option `OPT_MCU_SAMD11` - Add SAME5x option `OPT_MCU_SAME5X` ### SAMG - Fix SAMG control data toggle and stall race condition ### Enhance nRF - Fix hanged when `tud_task()` is called within critical section (disabled interrupt) - Fix disconnect bus event not submitted - Implement ISO transfer and `dcd_edpt_close()` ## USB Device ### USBD - Add new class driver for **Bluetooth HCI** class driver with example can be found in [mynewt-tinyusb-example](https://github.com/hathach/mynewt-tinyusb-example) since it needs mynewt OS to run with. - Fix USBD endpoint usage racing condition with `usbd_edpt_claim()`/`usbd_edpt_release()` - Added `tud_task_event_ready()` and `osal_queue_empty()`. This API is needed to check before enter low power mode with WFI/WFE - Rename USB IRQ Handler to `dcd_int_handler()`. Application must define IRQ handler in which it calls this API. - Add `dcd_connect()` and `dcd_disconnect()` to enable/disable internal pullup on D+/D- on supported MCUs. - Add `usbd_edpt_open()` - Remove `dcd_set_config()` - Add `OPT_OS_CUMSTOM` as hook for application to overwrite and/or add their own OS implementation - Support SET_INTERFACE, GET_INTERFACE request - Add Logging for debug with optional uart/rtt/swo printf retarget or `CFG_TUSB_DEBUG_PRINTF` hook - Add IAR compiler support - Support multiple configuration descriptors. `TUD_CONFIG_DESCRIPTOR()` template has extra config_num as 1st argument - Improve USB Highspeed support with actual link speed detection with `dcd_event_bus_reset()` - Enhance class driver management - `usbd_driver_open()` add max length argument, and return length of interface (0 for not supported). Return value is used for finding appropriate driver - Add application implemented class driver via `usbd_app_driver_get_cb()` - IAD is handled to assign driver id - Added `tud_descriptor_device_qualifier_cb()` callback - Optimize `tu_fifo` bulk write/read transfer - Forward non-std control request to class driver - Let application handle Microsoft OS 1.0 Descriptors (the 0xEE index string) - Fix OSAL FreeRTOS yield from ISR - Rename some configure macro to make it clear that those are used directly for endpoint transfer - `CFG_TUD_HID_BUFSIZE` to `CFG_TUD_HID_EP_BUFSIZE` - `CFG_TUD_CDC_EPSIZE` to `CFG_TUD_CDC_EP_BUFSIZE` - `CFG_TUD_MSC_BUFSIZE` to `CFG_TUD_MSC_EP_BUFSIZE` - `CFG_TUD_MIDI_EPSIZE` to `CFG_TUD_MIDI_EP_BUFSIZE` ### USBNET - Remove ACM-EEM due to lack of support from host ### USBTMC - Fix descriptors when INT EP is disabled ### CDC - Send zero length packet for end of data when needed - Add `tud_cdc_tx_complete_cb()` callback - Change `tud_cdc_n_write_flush()` return number of bytes forced to transfer, and flush when writing enough data to fifo ### MIDI - Add packet interface - Add multiple jack descriptors - Fix MIDI driver for sysex ### DFU Runtime - fix response to SET_INTERFACE and DFU_GETSTATUS request ### HID - Fix gamepad template descriptor - Add multiple HID interface API - Add extra comma to HID_REPORT_ID ## USB Host - Rework USB host stack (still work in progress) - Fix compile error with pipehandle - Rework usbh control and enumeration as non-blocking - Improve Hub, MSC, HID host driver ## Examples - Add new `hid_composite_freertos` - Add new `dynamic_configuration` to demonstrate how to switch configuration descriptors - Add new `hid_multiple_interface` - Enhance `net_lwip_webserver` example - Add multiple configuration: RNDIS for Windows, CDC-ECM for macOS (Linux will work with both) - Update lwip to STABLE-2_1_2_RELEASE for `net_lwip_webserver` - Added new Audio example: `audio_test` `uac2_headsest` ## New Boards - Espressif ESP32-S2: saola_1, kaluga_1 - STM32: F746 Nucleo, H743 Eval, H743 Nucleo, F723 discovery, stlink v3 mini, STM32L4r5 Nucleo - Dialog DA1469x dk pro and dk usb - Microchip: Great Scoot Gadgets' LUNA, samd11_xplained, D5035-01, atsamd21 xplained pro - nRF: ItsyBitsy nRF52840 ## Contributors Thanks to everyone who contributed to this release: @chang196700, @CraigHutchinson, @czeslawmakarski, @duempel, @gh2o, @hathach, @HiFiPhile, @j4cbo, @jepler, @jgressmann, @k0d, @kasjer, @kaysievers, @ktemkin, @majbthrd, @me-no-dev, @mzero, @PanRe, @pigrew, @salkinium, @UweBonnes, @xobs, @zlittell.