From 38039765346c7441208dbcb3fd3cf8f13b7ced58 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Tue, 10 Mar 2009 05:56:17 +0000 Subject: Fixed incorrect/missing control status stage transfers on demos, bootloaders and applications (thanks to Nate Lawson). --- Projects/Magstripe/Magstripe.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'Projects/Magstripe') 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; -- cgit v1.2.3