diff options
Diffstat (limited to 'Demos/Device/LowLevel/Mouse/Mouse.c')
-rw-r--r-- | Demos/Device/LowLevel/Mouse/Mouse.c | 28 |
1 files changed, 10 insertions, 18 deletions
diff --git a/Demos/Device/LowLevel/Mouse/Mouse.c b/Demos/Device/LowLevel/Mouse/Mouse.c index 1cc6d8849..6aa258a00 100644 --- a/Demos/Device/LowLevel/Mouse/Mouse.c +++ b/Demos/Device/LowLevel/Mouse/Mouse.c @@ -140,19 +140,17 @@ void EVENT_USB_Device_UnhandledControlRequest(void) { USB_MouseReport_Data_t MouseReportData; - Endpoint_ClearSETUP(); - /* Create the next mouse report for transmission to the host */ CreateMouseReport(&MouseReportData); - + + Endpoint_ClearSETUP(); + /* Write the report data to the control endpoint */ Endpoint_Write_Control_Stream_LE(&MouseReportData, sizeof(MouseReportData)); - + Endpoint_ClearOUT(); + /* Clear the report data afterwards */ memset(&MouseReportData, 0, sizeof(MouseReportData)); - - /* Finalize the stream transfer to send the last packet or clear the host abort */ - Endpoint_ClearOUT(); } break; @@ -164,9 +162,7 @@ void EVENT_USB_Device_UnhandledControlRequest(void) /* Write the current protocol flag to the host */ Endpoint_Write_Byte(UsingReportProtocol); - /* Send the flag to the host */ Endpoint_ClearIN(); - Endpoint_ClearStatusStage(); } @@ -175,11 +171,10 @@ void EVENT_USB_Device_UnhandledControlRequest(void) if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) { Endpoint_ClearSETUP(); - + Endpoint_ClearStatusStage(); + /* Set or clear the flag depending on what the host indicates that the current Protocol should be */ UsingReportProtocol = (USB_ControlRequest.wValue != 0); - - Endpoint_ClearStatusStage(); } break; @@ -187,11 +182,10 @@ void EVENT_USB_Device_UnhandledControlRequest(void) if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE)) { Endpoint_ClearSETUP(); - + Endpoint_ClearStatusStage(); + /* Get idle period in MSB, must multiply by 4 to get the duration in milliseconds */ IdleCount = ((USB_ControlRequest.wValue & 0xFF00) >> 6); - - Endpoint_ClearStatusStage(); } break; @@ -202,10 +196,8 @@ void EVENT_USB_Device_UnhandledControlRequest(void) /* Write the current idle duration to the host, must be divided by 4 before sent to host */ Endpoint_Write_Byte(IdleCount >> 2); - - /* Send the flag to the host */ - Endpoint_ClearIN(); + Endpoint_ClearIN(); Endpoint_ClearStatusStage(); } |