aboutsummaryrefslogtreecommitdiffstats
path: root/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
diff options
context:
space:
mode:
authorDean Camera <dean@fourwalledcubicle.com>2010-08-22 03:26:20 +0000
committerDean Camera <dean@fourwalledcubicle.com>2010-08-22 03:26:20 +0000
commit4cc7f5200beef90c39c8c8310ed7c8b849afb4d9 (patch)
treea8e2e56961f7e39b888e4ded0c38c5ab9cf6f5b6 /Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
parent1be3436e895c9937dcd4ebbec33ea199f3e26db2 (diff)
downloadlufa-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/RNDISEthernet/RNDISEthernet.c')
-rw-r--r--Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c10
1 files changed, 2 insertions, 8 deletions
diff --git a/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c b/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
index 6b3e2c473..8a8d2142a 100644
--- a/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
+++ b/Demos/Device/LowLevel/RNDISEthernet/RNDISEthernet.c
@@ -124,13 +124,10 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
case REQ_SendEncapsulatedCommand:
if (USB_ControlRequest.bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
- /* Clear the SETUP packet, ready for data transfer */
Endpoint_ClearSETUP();
/* Read in the RNDIS message into the message buffer */
Endpoint_Read_Control_Stream_LE(RNDISMessageBuffer, USB_ControlRequest.wLength);
-
- /* Finalize the stream transfer to clear the last packet from the host */
Endpoint_ClearIN();
/* Process the RNDIS message */
@@ -141,9 +138,6 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
case REQ_GetEncapsulatedResponse:
if (USB_ControlRequest.bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
{
- /* Clear the SETUP packet, ready for data transfer */
- Endpoint_ClearSETUP();
-
/* Check if a response to the last message is ready */
if (!(MessageHeader->MessageLength))
{
@@ -152,10 +146,10 @@ void EVENT_USB_Device_UnhandledControlRequest(void)
MessageHeader->MessageLength = 1;
}
+ Endpoint_ClearSETUP();
+
/* Write the message response data to the endpoint */
Endpoint_Write_Control_Stream_LE(RNDISMessageBuffer, MessageHeader->MessageLength);
-
- /* Finalize the stream transfer to send the last packet or clear the host abort */
Endpoint_ClearOUT();
/* Reset the message header once again after transmission */