--- Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h (date 1511202099000) +++ Middlewares/ST/STM32_USB_Device_Library/Core/Inc/usbd_def.h (revision ) @@ -99,6 +99,7 @@ #define USB_DESC_TYPE_ENDPOINT 5 #define USB_DESC_TYPE_DEVICE_QUALIFIER 6 #define USB_DESC_TYPE_OTHER_SPEED_CONFIGURATION 7 +#define USB_DESC_TYPE_IFACE_ASSOCIATION 11 #define USB_DESC_TYPE_BOS 0x0F #define USB_CONFIG_REMOTE_WAKEUP 2 @@ -147,7 +148,7 @@ typedef struct usb_setup_req { - + uint8_t bmRequest; uint8_t bRequest; uint16_t wValue; @@ -230,7 +231,7 @@ uint32_t dev_config_status; USBD_SpeedTypeDef dev_speed; USBD_EndpointTypeDef ep_in[15]; - USBD_EndpointTypeDef ep_out[15]; + USBD_EndpointTypeDef ep_out[15]; uint32_t ep0_state; uint32_t ep0_data_len; uint8_t dev_state; @@ -242,10 +243,14 @@ USBD_SetupReqTypedef request; USBD_DescriptorsTypeDef *pDesc; - USBD_ClassTypeDef *pClass; - void *pClassData; - void *pUserData; - void *pData; + USBD_ClassTypeDef *pClass; // the composite class + void *pClassData; + void *pUserData; + void *pClassData2; // used for secondary class + void *pUserData2; // used for secondary class + void *pClassData3; // used for tertiary class + void *pUserData3; // used for tertiary class + void *pData; // this is a pointer to the low level registers struct } USBD_HandleTypeDef; /** @@ -262,8 +267,14 @@ #define LOBYTE(x) ((uint8_t)(x & 0x00FF)) #define HIBYTE(x) ((uint8_t)((x & 0xFF00) >>8)) + +#ifndef MIN #define MIN(a, b) (((a) < (b)) ? (a) : (b)) +#endif + +#ifndef MAX #define MAX(a, b) (((a) > (b)) ? (a) : (b)) +#endif #if defined ( __GNUC__ )