Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson).

This commit is contained in:
Dean Camera 2009-03-10 05:56:17 +00:00
parent 4a09da2098
commit 3803976534
23 changed files with 157 additions and 67 deletions

View file

@ -210,10 +210,8 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
/* Clear the endpoint data */
Endpoint_ClearSetupOUT();
/* Wait until the host is ready to receive the request confirmation */
/* Acknowledge status stage */
while (!(Endpoint_IsSetupINReady()));
/* Handshake the request by sending an empty IN packet */
Endpoint_ClearSetupIN();
}
@ -228,6 +226,10 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
/* Send the flag to the host */
Endpoint_ClearSetupIN();
/* Acknowledge status stage */
while (!(Endpoint_IsSetupOUTReceived()));
Endpoint_ClearSetupOUT();
}
break;
@ -242,7 +244,8 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
/* Set or clear the flag depending on what the host indicates that the current Protocol should be */
UsingReportProtocol = (wValue != 0x0000);
/* Send an empty packet to acknowedge the command */
/* Acknowledge status stage */
while (!(Endpoint_IsSetupINReady()));
Endpoint_ClearSetupIN();
}
@ -258,7 +261,8 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
/* Get idle period in MSB */
IdleCount = (wValue >> 8);
/* Send an empty packet to acknowedge the command */
/* Acknowledge status stage */
while (!(Endpoint_IsSetupINReady()));
Endpoint_ClearSetupIN();
}
@ -273,6 +277,10 @@ EVENT_HANDLER(USB_UnhandledControlPacket)
/* Send the flag to the host */
Endpoint_ClearSetupIN();
/* Acknowledge status stage */
while (!(Endpoint_IsSetupOUTReceived()));
Endpoint_ClearSetupOUT();
}
break;