diff options
author | Dean Camera <dean@fourwalledcubicle.com> | 2009-03-10 05:56:17 +0000 |
---|---|---|
committer | Dean Camera <dean@fourwalledcubicle.com> | 2009-03-10 05:56:17 +0000 |
commit | 38039765346c7441208dbcb3fd3cf8f13b7ced58 (patch) | |
tree | aafe05db569ec7a2938b3e7cdbd63e4a5d6a054e /Projects | |
parent | 4a09da20989dfe0c41dc1272fa6dce1e11539c15 (diff) | |
download | lufa-38039765346c7441208dbcb3fd3cf8f13b7ced58.tar.gz lufa-38039765346c7441208dbcb3fd3cf8f13b7ced58.tar.bz2 lufa-38039765346c7441208dbcb3fd3cf8f13b7ced58.zip |
Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson).
Diffstat (limited to 'Projects')
-rw-r--r-- | Projects/AVRISP_Programmer/AVRISP_Programmer.c | 9 | ||||
-rw-r--r-- | Projects/Magstripe/Magstripe.c | 14 |
2 files changed, 17 insertions, 6 deletions
diff --git a/Projects/AVRISP_Programmer/AVRISP_Programmer.c b/Projects/AVRISP_Programmer/AVRISP_Programmer.c index 4bc4f9cc3..58593670e 100644 --- a/Projects/AVRISP_Programmer/AVRISP_Programmer.c +++ b/Projects/AVRISP_Programmer/AVRISP_Programmer.c @@ -267,7 +267,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket) case REQ_GetLineEncoding:
if (bmRequestType == (REQDIR_DEVICETOHOST | REQTYPE_CLASS | REQREC_INTERFACE))
{
- /* Acknowedge the SETUP packet, ready for data transfer */
+ /* Acknowledge the SETUP packet, ready for data transfer */
Endpoint_ClearSetupReceived();
/* Write the line coding data to the control endpoint */
@@ -281,7 +281,7 @@ EVENT_HANDLER(USB_UnhandledControlPacket) case REQ_SetLineEncoding:
if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
- /* Acknowedge the SETUP packet, ready for data transfer */
+ /* Acknowledge the SETUP packet, ready for data transfer */
Endpoint_ClearSetupReceived();
/* Read the line coding data in from the host into the global struct */
@@ -298,10 +298,11 @@ EVENT_HANDLER(USB_UnhandledControlPacket) case REQ_SetControlLineState:
if (bmRequestType == (REQDIR_HOSTTODEVICE | REQTYPE_CLASS | REQREC_INTERFACE))
{
- /* Acknowedge the SETUP packet, ready for data transfer */
+ /* Acknowledge the SETUP packet, ready for data transfer */
Endpoint_ClearSetupReceived();
- /* Send an empty packet to acknowedge the command */
+ /* Acknowledge status stage */
+ while (!(Endpoint_IsSetupINReady()));
Endpoint_ClearSetupIN();
}
diff --git a/Projects/Magstripe/Magstripe.c b/Projects/Magstripe/Magstripe.c index 2826c140e..0e10053da 100644 --- a/Projects/Magstripe/Magstripe.c +++ b/Projects/Magstripe/Magstripe.c @@ -204,6 +204,10 @@ EVENT_HANDLER(USB_UnhandledControlPacket) /* Send the flag to the host */
Endpoint_ClearSetupIN();
+
+ /* Acknowledge status stage */
+ while (!(Endpoint_IsSetupOUTReceived()));
+ Endpoint_ClearSetupOUT();
}
break;
@@ -218,7 +222,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();
}
@@ -234,7 +239,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();
}
@@ -249,6 +255,10 @@ EVENT_HANDLER(USB_UnhandledControlPacket) /* Send the flag to the host */
Endpoint_ClearSetupIN();
+
+ /* Acknowledge status stage */
+ while (!(Endpoint_IsSetupOUTReceived()));
+ Endpoint_ClearSetupOUT();
}
break;
|