diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2010-08-22 03:26:20 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2010-08-22 03:26:20 +0000 |
commit | 4cc7f5200beef90c39c8c8310ed7c8b849afb4d9 (patch) | |
tree | a8e2e56961f7e39b888e4ded0c38c5ab9cf6f5b6 /Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c | |
parent | 1be3436e895c9937dcd4ebbec33ea199f3e26db2 (diff) | |
download | lufa-4cc7f5200beef90c39c8c8310ed7c8b849afb4d9.tar.gz lufa-4cc7f5200beef90c39c8c8310ed7c8b849afb4d9.tar.bz2 lufa-4cc7f5200beef90c39c8c8310ed7c8b849afb4d9.zip |
Changed all Device mode LowLevel demos and Device Class drivers so that the control request is acknowledged and any data transferred as quickly as possible without any processing inbetween sections, so that long callbacks or event handlers will not break communications with the host by exceeding the maximum control request stage timeout period.
Diffstat (limited to 'Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c')
-rw-r--r-- | Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c index 687dc3123..2f4bd76cf 100644 --- a/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c +++ b/Demos/Device/LowLevel/KeyboardMouse/KeyboardMouse.c @@ -148,12 +148,10 @@ void EVENT_USB_Device_UnhandledControlRequest(void) /* Write the report data to the control endpoint */ Endpoint_Write_Control_Stream_LE(ReportData, ReportSize); + Endpoint_ClearOUT(); /* Clear the report data afterwards */ memset(ReportData, 0, ReportSize); - - /* Finalize the stream transfer to send the last packet or clear the host abort */ - Endpoint_ClearOUT(); } break; @@ -169,13 +167,14 @@ void EVENT_USB_Device_UnhandledControlRequest(void) return; } - /* Read in and process the LED report from the host */ - Keyboard_ProcessLEDReport(Endpoint_Read_Byte()); + /* Read in the LED report from the host */ + uint8_t LEDStatus = Endpoint_Read_Byte(); - /* Clear the endpoint data */ Endpoint_ClearOUT(); - Endpoint_ClearStatusStage(); + + /* Process the incoming LED report */ + Keyboard_ProcessLEDReport(LEDStatus); } break; |