|
|
|
@ -441,16 +441,7 @@ void USBHS_IRQHandler( void ) |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case HID_GET_REPORT: |
|
|
|
case HID_GET_REPORT: |
|
|
|
if(USBHS_DevSpeed == USBHS_USB_SPEED_HIGH) |
|
|
|
error = 0xFF; |
|
|
|
{ |
|
|
|
|
|
|
|
len = (USBHS_Setup.wLength >= USB_MAX_EP0_SZ) ? USB_MAX_EP0_SZ : USBHS_Setup.wLength; |
|
|
|
|
|
|
|
memcpy(USBHS_EP0_Buf, HID_ReportDesc_HS, len); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
len = (USBHS_Setup.wLength >= USB_MAX_EP0_SZ) ? USB_MAX_EP0_SZ : USBHS_Setup.wLength; |
|
|
|
|
|
|
|
memcpy(USBHS_EP0_Buf, HID_ReportDesc_FS, len); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case HID_SET_IDLE: |
|
|
|
case HID_SET_IDLE: |
|
|
|
@ -459,7 +450,6 @@ void USBHS_IRQHandler( void ) |
|
|
|
|
|
|
|
|
|
|
|
case HID_GET_IDLE: |
|
|
|
case HID_GET_IDLE: |
|
|
|
USBHS_EP0_Buf[0] = USBHS_HID_Idle; |
|
|
|
USBHS_EP0_Buf[0] = USBHS_HID_Idle; |
|
|
|
len = 1; |
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case HID_SET_PROTOCOL: |
|
|
|
case HID_SET_PROTOCOL: |
|
|
|
@ -468,15 +458,13 @@ void USBHS_IRQHandler( void ) |
|
|
|
|
|
|
|
|
|
|
|
case HID_GET_PROTOCOL: |
|
|
|
case HID_GET_PROTOCOL: |
|
|
|
USBHS_EP0_Buf[0] = USBHS_HID_Protocol; |
|
|
|
USBHS_EP0_Buf[0] = USBHS_HID_Protocol; |
|
|
|
len = 1; |
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case CDC_SET_LINE_CODING: |
|
|
|
case CDC_SET_LINE_CODING: |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case CDC_GET_LINE_CODING: |
|
|
|
case CDC_GET_LINE_CODING: |
|
|
|
pUSBHS_Descr = (uint8_t *)&LineCfg; |
|
|
|
memcpy(USBHS_EP0_Buf, (uint8_t *)&LineCfg, 7); |
|
|
|
len = 7; |
|
|
|
|
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case CDC_SET_LINE_CTLSTE: |
|
|
|
case CDC_SET_LINE_CTLSTE: |
|
|
|
@ -493,6 +481,15 @@ void USBHS_IRQHandler( void ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
pUSBHS_Descr = MS_OS_20_DescriptorSet; |
|
|
|
pUSBHS_Descr = MS_OS_20_DescriptorSet; |
|
|
|
len = MS_OS_20_DescriptorSet[8]; |
|
|
|
len = MS_OS_20_DescriptorSet[8]; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* Copy Descriptors to Endp0 DMA buffer */ |
|
|
|
|
|
|
|
if(USBHS_Setup.wLength > len) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
USBHS_Setup.wLength = len; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
len = (USBHS_Setup.wLength >= USB_MAX_EP0_SZ) ? USB_MAX_EP0_SZ : USBHS_Setup.wLength; |
|
|
|
|
|
|
|
memcpy(USBHS_EP0_Buf, pUSBHS_Descr, len); |
|
|
|
|
|
|
|
pUSBHS_Descr += len; |
|
|
|
} |
|
|
|
} |
|
|
|
else |
|
|
|
else |
|
|
|
error = 0xFF; |
|
|
|
error = 0xFF; |
|
|
|
@ -501,11 +498,6 @@ void USBHS_IRQHandler( void ) |
|
|
|
{ |
|
|
|
{ |
|
|
|
error = 0xFF; |
|
|
|
error = 0xFF; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* Copy Descriptors to Endp0 DMA buffer */ |
|
|
|
|
|
|
|
len = (USBHS_Setup.wLength >= USB_MAX_EP0_SZ) ? USB_MAX_EP0_SZ : USBHS_Setup.wLength; |
|
|
|
|
|
|
|
memcpy(USBHS_EP0_Buf, pUSBHS_Descr, len); |
|
|
|
|
|
|
|
pUSBHS_Descr += len; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(error == 0xFF) |
|
|
|
if(error == 0xFF) |
|
|
|
@ -519,8 +511,8 @@ void USBHS_IRQHandler( void ) |
|
|
|
if(USBHS_Setup.bRequestType & USB_EPT_IN) |
|
|
|
if(USBHS_Setup.bRequestType & USB_EPT_IN) |
|
|
|
{ |
|
|
|
{ |
|
|
|
len = (USBHS_Setup.wLength > USB_MAX_EP0_SZ) ? USB_MAX_EP0_SZ : USBHS_Setup.wLength; |
|
|
|
len = (USBHS_Setup.wLength > USB_MAX_EP0_SZ) ? USB_MAX_EP0_SZ : USBHS_Setup.wLength; |
|
|
|
|
|
|
|
|
|
|
|
USBHS_Setup.wLength -= len; |
|
|
|
USBHS_Setup.wLength -= len; |
|
|
|
|
|
|
|
|
|
|
|
USBHSD->UEP0_TX_LEN = len; |
|
|
|
USBHSD->UEP0_TX_LEN = len; |
|
|
|
USBHSD->UEP0_TX_CTRL = USBHS_UEP_T_TOG_DATA1 | USBHS_UEP_T_RES_ACK; |
|
|
|
USBHSD->UEP0_TX_CTRL = USBHS_UEP_T_TOG_DATA1 | USBHS_UEP_T_RES_ACK; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -578,7 +570,6 @@ void USBHS_IRQHandler( void ) |
|
|
|
break; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
#ifndef DAP_FW_V1 |
|
|
|
|
|
|
|
else if((USBHS_Setup.bRequestType & USB_REQ_TYP_MASK) == USB_REQ_TYP_VENDOR) |
|
|
|
else if((USBHS_Setup.bRequestType & USB_REQ_TYP_MASK) == USB_REQ_TYP_VENDOR) |
|
|
|
{ |
|
|
|
{ |
|
|
|
len = USBHS_Setup.wLength >= USB_MAX_EP0_SZ ? USB_MAX_EP0_SZ : USBHS_Setup.wLength; |
|
|
|
len = USBHS_Setup.wLength >= USB_MAX_EP0_SZ ? USB_MAX_EP0_SZ : USBHS_Setup.wLength; |
|
|
|
@ -589,7 +580,6 @@ void USBHS_IRQHandler( void ) |
|
|
|
USBHSD->UEP0_TX_LEN = len; |
|
|
|
USBHSD->UEP0_TX_LEN = len; |
|
|
|
USBHSD->UEP0_TX_CTRL ^= USBHS_UEP_T_TOG_DATA1; |
|
|
|
USBHSD->UEP0_TX_CTRL ^= USBHS_UEP_T_TOG_DATA1; |
|
|
|
} |
|
|
|
} |
|
|
|
#endif |
|
|
|
|
|
|
|
else |
|
|
|
else |
|
|
|
{ |
|
|
|
{ |
|
|
|
/* Non-standard request endpoint 0 Data upload */ |
|
|
|
/* Non-standard request endpoint 0 Data upload */ |
|
|
|
@ -643,10 +633,6 @@ void USBHS_IRQHandler( void ) |
|
|
|
|
|
|
|
|
|
|
|
VCOM_LineCoding(&LineCfg); |
|
|
|
VCOM_LineCoding(&LineCfg); |
|
|
|
} |
|
|
|
} |
|
|
|
else if(USBHS_Setup.bRequest == HID_SET_REPORT) |
|
|
|
|
|
|
|
{ |
|
|
|
|
|
|
|
error = 0xFF; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if(USBHS_Setup.wLength == 0) |
|
|
|
if(USBHS_Setup.wLength == 0) |
|
|
|
|