Copyright © 2015 STMicroelectronics
The USB device library comes on top of the STM32Cube™ USB device HAL driver and offers all the APIs required to develop an USB device application.
The main USB device library features are:
Here is the list of references to user documents:
Headline |
---|
USB Core: |
Minor enhancement; add a check on device string descriptor length |
USB DFU Class: |
Improve DFU Vendor Commands support |
Headline |
---|
USB Core: |
Adding user callback to get device configuration state |
USB DFU Class: |
Adding DFU Vendor Commands support |
USB MSC Class: |
fix data sense response to be aligned with SBC-3 specification |
USB AUDIO Class: |
restart AUDIO ISO endpoint during ISO incomplete event |
USB VIDEO Class: |
restart VIDEO ISO endpoint during ISO incomplete event |
Headline |
---|
Improvement of the memory management |
USB Core: |
Fix some compilation warnings related to unused parameters |
Improve some code parts style |
Add check on the USB Device status in USBD_LL_Suspend before suspending it |
USB CDC-ACM Class: |
Remove redundant prototype declaration of USBD_CDC_GetOtherSpeedCfgDesc() |
USB CompositeBuilder, CCID, CDC_ECM, CDC_RNDIS, CustomHID, MSC & Video Classes: |
Improve some code parts style |
Headline |
---|
USB VIDEO Class: |
Correction of the support of VS_PROBE_CONTROL & VS_COMMIT_CONTROL requests |
USB AUDIO Class: |
Correction of the check on AUDIO_TOTAL_BUF_SIZE to avoid vulnerabilities |
USB HID Class: |
Modification of some constants names to avoid duplication versus USB host library |
USB CustomHID Class: |
Add support of Get Report control request |
Allow disabling EP OUT prepare receive using a dedicated macros that can be defined in usbd_conf.h application file |
Add support of Report Descriptor with length greater than 255 bytes |
USB CCID Class: |
Fix minor Code Spelling warning |
USB All Classes: |
Update all classes to support composite multi-instance using the class id parameter |
Fix code spelling and improve code style |
fix misraC 2012 rule 10.3 |
Headline |
---|
Integration of new USB device Class driver: |
Adding support of Composite devices with an auto generation of composite device configuration descriptors |
USB All Classes: |
Fix Code Spelling and improve Code Style |
Update device class drivers to support Composite devices |
Improve declaration of USB configuration descriptor table which is allocated if the composite builder is not selected |
Headline |
---|
Integration of new USB device Class driver: |
USB CCID Class driver based on Universal Serial Bus Device Class Definition for Integrated Circuit(s) Cards Interface Devices Revision 1.1 |
USB MTP Class driver based on Universal Serial Bus Device Class Media Transfer Protocol Revision 1.1 |
USB All Classes: |
Fix Code Spelling and improve Code Style |
Update the way to declare licenses |
USB CDC/RNDIS/ECM Classes: |
Fix compilation warning with C++ due to missing casting during class handler allocation |
Headline |
---|
Integration of new USB device Class driver: |
USB Printer Class driver based on Universal Serial Bus Device Class Definition for Printing Devices Version 1.1 |
USB All Classes: |
Fix USB buffer overflow vulnerability for CDC, CDC-ECM, CDC-RNDIS, DFU, AUDIO, CustomHID, and Video Classes |
Fix compilation warning with C++ due to missing casting during class handler allocation |
Enhance comments of USB configuration descriptors fields |
USB Video Class: |
Fix missing closing bracket for extern “C” in usbd_video.h |
Fix USBCV test with Uncompressed video format support |
Headline |
---|
USB All Class: Add NULL pointer access check to Class handler |
Headline |
---|
Integration of new USB device Class driver: |
USB video Class driver based on USB-IF video class definition version 1.1 |
USB Core: |
Enhance NULL pointer check in Core APIs |
Allow supporting both USER and USER Class string desc |
Add support of USB controller which handles packet-size splitting by hardware |
Avoid compilation warning due macro redefinition |
change added to USBD_HandleTypeDef structure: dev_state, old_dev_state and ep0_state declaration become volatile to disable compiler optimization |
Word spelling correction and file indentation improved |
usbd_conf.h/c Template file updated to suggest using by default a static memory allocation for Class handler |
USB All Classes: |
Word spelling correction and file indentation improved |
Allow updating device config descriptor Max power from user code usbd_conf.h using USBD_MAX_POWER define |
Fix device config descriptor bmAttributes value which depends on user code define USBD_SELF_POWERED |
USB CDC Class: |
Class specific request, add protection to limit the maximum data length to be sent by the CDC device |
USB CustomHID Class: |
Allow changing CustomHID data EP size from user code |
Headline |
---|
Fix minor misra-c 2012 violations |
USB Core: |
minor rework on USBD_Init() USBD_DeInit() |
Fix warning issue with Keil due to missing return value of setup API |
USB CDC Class: |
Fix file indentation |
Avoid accessing to NULL pointer in case TransmitCplt() user fops is not defined to allow application compatibility with device library version below v2.6.0 |
Headline |
---|
Integration of three new USB device Class drivers:CDC ECM , CDC RNDIS Microsoft, USB Billboard |
Fix mandatory misra-c 2012 violations |
update user core and class template files |
USB Core: |
Fix unexpected EP0 stall during enumeration phase |
Improve APIs error management and prevent accessing NULL pointers |
USB MSC Class: |
Fix USBCV specific class tests |
Fix multiple error with SCSI commands handling |
Protect medium access when host ask for medium ejection |
USB CDC Class: |
Add new function to inform user that current IN transfer is completed |
update transmit and receive APIs to transfer up to 64KB |
USB AUDIO Class: |
Fix audio sync start buffer size |
update user callback periodicTC args by adding pointer to user buffer and size |
USB CustomHID Class: |
Rework the OUT transfer complete and prevent automatically re-enabling the OUT EP |
Add new user API to restart the OUT transfer: USBD_CUSTOM_HID_ReceivePacket() |
Headline |
---|
Fix misra-c 2012 high severity violations |
Core driver: |
protect shared macros __ALIGN_BEGIN, __ALIGN_END with C directive #ifndef |
update Core driver and DFU Class driver to use USBD_SUPPORT_USER_STRING_DESC instead of USBD_SUPPORT_USER_STRING |
prevent accessing to NULL pointer if the get descriptor functions are not defined |
Update on USBD_LL_Resume(), restore the device state only if the current state is USBD_STATE_SUSPENDED |
Headline |
---|
DFU Class: fix compilation warning due to unreachable instruction code introduced with CMSIS V5.4.0 NVIC_SystemReset() prototype change |
Headline |
---|
Update license section by adding path to get copy of ST Ultimate Liberty license |
Core: Fix unexpected stall during status OUT phase |
DFU Class: rework hdfu struct to prevent unaligned addresses |
MSC Class: fix lba address overflow during large file transfers greater than 4Go |
Template Class: add missing Switch case Break on USBD_Template_Setup API |
Headline |
---|
Update license section |
Update some functions to be MISRAC 2004 compliant |
Add HS and OtherSpeed configuration descriptor for HID and CustomHID classes |
Correct error handling in all class setup function |
Add usbd_desc_template.c/ usbd_desc_template.h templates files |
Add support of class and vendor request |
CDC Class: fix zero-length packet issue in bulk IN transfer |
Fix compilation warning with unused arguments for some functions |
Improve USB Core enumeration state machine |
Headline |
---|
CDC Class |
usbd_cdc.c: change #include “USBD_CDC.h” by #include “usbd_cdc.h” |
Headline |
---|
CDC Class |
usbd_cdc.c: comments update |
MSC Class |
usbd_msc_bot.h: update to be C++ compliant |
AUDIO Class |
usbd_audio.c: fix issue when Host sends GetInterface command it gets a wrong value |
usbd_audio.c: remove useless management of DMA half transfer |
Headline |
---|
Core Driver |
Add support of Link Power Management (LPM): add new API GetBOSDescriptor(), that is used only if USBD_LPM_ENABLED switch is enabled in usbd_conf.h file |
usbd_core.c: Fix bug of unsupported premature Host Out stage during data In stage (ie. when endpoint 0 maximum data size is 8 and Host requests GetDeviceDescriptor for the first time) |
usbd_ctlreq.c: Fix bug of unsupported Endpoint Class requests (ie. Audio SetCurrent request for endpoint sampling rate setting) |
HID Class |
Updating Polling time API USBD_HID_GetPollingInterval() to query this period for HS and FS |
usbd_hid.c: Fix USBD_LL_CloseEP() function call in USBD_HID_DeInit() replacing endpoint size by endpoint address. |
CDC Class |
usbd_cdc.c: Add missing GetInterface request management in USBD_CDC_Setup() function |
usbd_cdc.c: Update USBD_CDC_Setup() function to allow correct user implementation of CDC_SET_CONTROL_LINE_STATE and similar no-data setup requests. |
Headline |
---|
Update all drivers to be C++ compliant |
CDC Class |
usbd_cdc.c: fix clear flag issue in USBD_CDC_TransmitPacket() function |
usbd_cdc_if_template.c: update TEMPLATE_Receive() function header comment |
Miscellaneous source code comments update |
Headline |
---|
Source code comments review and update |
HID class |
Remove unused API USBD_HID_DeviceQualifierDescriptor() |
Add a new API in the HID class to query the poll time USBD_HID_GetPollingInterval() |
CDC class |
Bug fix: missing handling ZeroLength Setup request |
All classes |
Add alias for the class definition, it’s defined as macro with capital letter |
ex. for the HID, the USBD_HID_CLASS macro is defined this way #define USBD_HID_CLASS &USBD_HID |
and the application code can use the previous definition: &USBD_HID ex. USBD_RegisterClass(&USBD_Device, &USBD_HID) or the new USBD_HID_CLASS ex. USBD_RegisterClass(&USBD_Device, USBD_HID_CLASS) |
Headline |
---|
usbd_conf_template.c: update file with the right content (it was using MSC memory management layer) |
usbd_conf_template.h: change include of stm32f4xx.h by stm32xxx.h and add comment to inform user to adapt it to the device used |
Several enhancements in CustomHID class |
Update the Custom HID class driver to simplify the link with user processes |
Optimize the Custom HID class driver and reduce footprint |
Add USBD_CUSTOM_HID_RegisterInterface() API to link user process to custom HID class |
Add Custom HID interface template file usbd_customhid_if_template.c/h |
Miscellaneous comments update |
Major update based on STM32Cube specification.
Headline |
---|
Library Core, Classes architecture and APIs modified vs. V1.1.0, and thus the 2 versions are not compatible. |
This version has to be used only with STM32Cube based development
Headline |
---|
Official support of STM32F4xx devices |
All source files: license disclaimer text update and add link to the License file on ST Internet. |
Handle test mode in the set feature request |
Handle dynamically the USB SELF POWERED feature |
Handle correctly the USBD_CtlError process to take into account error during Control OUT stage |
Miscellaneous bug fix |
First official version for STM32F105/7xx and STM32F2xx devices