USB Component  Version 6.9
MDK Middleware for USB Device and Host Communication
 All Data Structures Functions Variables Enumerations Enumerator Groups Pages
Revision History
Version Description
V6.9.0
  • USB Device/Host: Added debug library variants with event recording
  • USB Device: Added capability to disable string for Custom Class interfaces
  • USB Device: Corrected unbalanced mutex release when using USBD_HID_GetReportTrigger (lock mechanism changed from mutex to semaphore)
  • USB Device: Corrected string descriptors
  • USB Device: Corrected initial UART reception size in CDC ACM UART template
  • USB Device: Corrected Audio Class template as volume or mute control changes on Host side could cause device to stop responding
  • USB Host: Improved USB memory stick enumeration procedure to work for sticks that require more time after initial reset
V6.8.0
  • USB Device/Host: Improved compatibility with ARM Compiler 6
  • USB Device: Corrected Audio Class functionality for 24-bit resolution with 3 bytes per sample setting
  • USB Device: Updated Audio Class API (old API is still functional)
  • USB Device: Added state retrieval function (USBD_GetState)
  • USB Device: Added user notifications for device events
  • USB Device: Added setting for Interface Association for Custom Class
  • USB Device: Improved Audio Class template
  • USB Host: Corrected device causing HardFault if USB Memory Stick gets disconnected while device was reading it
  • USB Host: Corrected EHCI Relocate Memory Pool compilation errors
  • USB Host: Corrected enumeration if SetIdle on HID device stalls
  • USB Host: Corrected interrupt pipe creation and deletion for OHCI and EHCI controllers
  • USB Host: Extended API with additional functions to get more device information
  • USB Host: Added notification function (USBH_Port_Notify)
  • USB Host: Added class driver notification functions for each supported class (..._Initialize and ..._Uninitialize)
  • USB Host: Added maximum power consumption configuration to configuration file
  • USB Host: Added len parameter to USBH_HID_ParseReportDescriptor function
  • USB Host: Renamed all get status functions from ..._GetDeviceStatus to ..._GetStatus
  • USB Host: Improved EHCI structures positioning in RAM
V6.7.0
  • Corrected USB Host Mass Storage class finit failing if no USB MSC device is connected
  • Corrected USB Host language_id parameter for USBH_DeviceRequest_GetDescriptor() and USBH_DeviceRequest_SetDescriptor() functions changed from uint8_t to uint16_t
  • Improved USB Host keyboard functionality (cleaned up translation to ASCII and routing of all non-ASCII translated keys to user)
  • Corrected USB Device USBD_EndpointRead and USBD_EndpointWrite functions return usbDriverBusy if low level hardware is busy
  • Corrected USB Device Custom Device handling for Device to Host request with wLength of 0, no Status OUT stage was generated
  • Corrected USB Device Custom Class calling multiple interface callbacks for class request to single interface
  • Corrected USB Device Custom Class not working if endpoints higher than 7 are configured
  • Corrected USB Device Audio Class race condition (user function directly started USB transfer)
  • Corrected USB Device CDC ACM Class race condition (user function directly started USB transfer)
  • Corrected USB Device CDC ACM Class functionality for Maximum Communication Device Receive Buffer Size equal to two OUT endpoint maximum packet sizes
  • Corrected USB Device Mass Storage Class hang in case of Bulk-Only Mass Storage Reset was issued during Write 10 operation
  • Corrected USB Device HID to be thread safe
  • Improved robustness of USB Device Core by adding retries to low-level driver accesses
  • Added USB Device CDC ACM <-> UART Bridge template
  • Added USB Device Audio Class callback USBD_ADCn_ReceivedSamples called when receive buffer is half-full
  • Changed USB Device Audio Class USB sending starts when there is half of USB buffer of data pending
  • Removed __packed specifier form structures for GCC compliance
  • Removed anonymous unions and structures for GCC compliance
V6.6.10
  • Corrected USB Device USBD_Configured function return value, it wrongly returned error status if instance did not exist instead of false value
  • Improved USB Host CDC and PL2303 templates
V6.6.9
  • Corrected USB Device Audio Class corner case of sending Isochronous IN data beyond intermediate buffer
V6.6.8
  • Corrected USB Device core handling of simultaneous signals OUT ZLP and SETUP
V6.6.7
  • Corrected USB Device CDC NCM bulk transfer termination of multiple maximum packet size with ZLP
V6.6.6
  • renamed CoreThread to Core_Thread
  • removed msc structures from rl_usb.h
V6.6.5
  • corrected USB Device functionality so Device level custom handling is always enabled
  • fixed capability to send ZLP on Control Endpoint 0 request
  • fixed sending ZLP on Control Endpoint 0 request if sent data is multiple of maximum packet size and less then requested
  • added template for USB Device device level Control Endpoint 0 request handling demonstrating serial number provided at runtime
  • removed section about migration from RL-USB. If you need to migrate from previous versions, please install Middleware Pack 6.5.0.
V6.6.4
  • corrected USB Host functionality not to do PING after there was error in transfer
V6.6.3
  • corrected USB Host functionality if relocate memory pool is not used
V6.6.2
  • added USB Host force disconnect of active device on USBH_Uninitialize
V6.6.1
  • added support for double buffering for USB Device CDC Network Control Model (NCM) class
  • changed behaviour of USBD_HID_GetReportTrigger to be non blocking and return usbDriverBusy if previous request has not yet finished
V6.6.0
  • added support for USB Device CDC Network Control Model (NCM) class
V6.5.0
  • cleared USB Device device state after disconnect, so after disconnect USBD_Configured function will return false
  • prevented race condition in USB Device CDC that could happen in situation when any USB Device CDC user function was called and while it was being executed an USB interrupt happened it could corrupt information about current state of transmission and reception thus leaving CDC communication in inoperable state
  • improved USB Host port lock handling during enumeration
V6.4.0
  • added USB Device device level endpoint 0 request handling
  • added template for USB Device device level endpoint 0 request handling
  • added example code into USB Device Custom Class template
  • corrected USB Device Custom Class endpoint 0 device request handling
  • corrected USB Host send/receive timeout functionality
  • corrected USB Host CDC device disconnect handling
V6.3.0
  • added template for implementing Audio Class Device (ADC)
  • added template for implementing ADC Headphone
  • corrected USB Device ADC meaning of samples to per channel basis
  • corrected USB Host handling of stall response on GetMaxLUN
  • corrected USB Device CDC DataReceived functionality
  • corrected USB Device MSC SCSI command TestUnitReady response on no media
  • improved USB Device MSC SCSI command RequestSense functionality
  • improved USBD_User_MSC.c template for media ownership control, media connect/disconnect and removed direct access to MSC data variables with additional callback functions
  • added template for USB Device MSC media ownership control (.c and .h files)
  • corrected USB Host behavior on connection of non boot subclass device
  • corrected USB Device Audio Class interface string number
  • corrected USB Device Audio Class control endpoint request status stage response
  • added support for USB Device Mass Storage Inquiry - Vital Product Data Pages: 0 and 80h
  • corrected USB Device Mass Storage class behaviour for read request of non-existing sector
  • corrected USB Device behaviour for slower code execution
  • added setting for overriding HID Report Descriptor to USBD_Config_HID.h file
  • added template for implementing HID Mouse (shows how to override HID Report Descriptor)
  • corrected USB Host OHCI and EHCI structure positioning in RAM
  • corrected USB Host OHCI and EHCI larger transfer handling
  • corrected USB Device USBD_HID_GetReportTrigger lock-up if called too often
V6.2.0
  • reimplemented USB Device Audio Class support
  • added USB Host CDC support
  • added USART USB Host CDC Driver
  • added USB Host Custom Class Template
  • added USB Host Prolific PL2303 Custom Class Template
  • added USART Prolific PL2303 Driver (USB to serial RS232 adapter)
  • added USB Device Mass Storage CheckMedia callback
  • changed USB Device CDC DataReceived and DataSent callback functions to callback style functions with instance in function name
  • moved user accessible functions and structures from rl_usbd.h and rl_usbh.h file to main rl_usb.h file
  • changed USB Host library functions for usage with custom class
  • USB Host library adapted to use USB Host CMSIS Driver v2.01
  • fixed problem with simultaneous same device types on different controllers
  • corrected USB Device Mass Storage handling if media removed while write/read in progress
V6.1.0
  • corrected USB Host OHCI driver interrupt endpoint handling
V6.0.0
  • adapted to CMSIS-Driver V2 interface
  • added Custom Class support for USB Host
V5.1.5
  • corrected USB Device Custom Class event handling, build issue and template
  • corrected USB Host polling rate when Interrupt Endpoint requests "bInterval = 1"
V5.1.4
  • updated user API
  • added configuration options for OS resources
  • added OHCI and EHCI drivers for USB Host
  • added multiple packet read for USB Device
  • corrected issue on USB Host when using addresses over 127
V5.1
  • updated USB Device configuration
  • added Custom Class support for USB Device
V5.0
  • Initial release for MDK Version 5
  • Explains modifications compared to previous releases