Oops - fix broken SPI driver due to missing bit inversion on a port mask.
[pub/USBasp.git] / LUFA / Drivers / USB / HighLevel / Template / Template_Endpoint_Control_R.c
index 43abe6e..5cc11d7 100644 (file)
@@ -2,20 +2,21 @@ uint8_t TEMPLATE_FUNC_NAME (void* Buffer,
                             uint16_t Length)
 {
        uint8_t* DataStream = ((uint8_t*)Buffer + TEMPLATE_BUFFER_OFFSET(Length));
-       
+
        if (!(Length))
          Endpoint_ClearOUT();
-       
+
        while (Length)
        {
-               if (Endpoint_IsSETUPReceived())
-                 return ENDPOINT_RWCSTREAM_HostAborted;
+               uint8_t USB_DeviceState_LCL = USB_DeviceState;
 
-               if (USB_DeviceState == DEVICE_STATE_Unattached)
+               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState == DEVICE_STATE_Suspended)
+               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_RWCSTREAM_BusSuspended;
-                 
+               else if (Endpoint_IsSETUPReceived())
+                 return ENDPOINT_RWCSTREAM_HostAborted;
+
                if (Endpoint_IsOUTReceived())
                {
                        while (Length && Endpoint_BytesInEndpoint())
@@ -23,23 +24,25 @@ uint8_t TEMPLATE_FUNC_NAME (void* Buffer,
                                TEMPLATE_TRANSFER_BYTE(DataStream);
                                Length--;
                        }
-                       
+
                        Endpoint_ClearOUT();
-               }                 
+               }
        }
-       
+
        while (!(Endpoint_IsINReady()))
        {
-               if (USB_DeviceState == DEVICE_STATE_Unattached)
+               uint8_t USB_DeviceState_LCL = USB_DeviceState;
+
+               if (USB_DeviceState_LCL == DEVICE_STATE_Unattached)
                  return ENDPOINT_RWCSTREAM_DeviceDisconnected;
-               else if (USB_DeviceState == DEVICE_STATE_Suspended)
+               else if (USB_DeviceState_LCL == DEVICE_STATE_Suspended)
                  return ENDPOINT_RWCSTREAM_BusSuspended;
        }
-       
+
        return ENDPOINT_RWCSTREAM_NoError;
 }
 
 
 #undef TEMPLATE_BUFFER_OFFSET
 #undef TEMPLATE_FUNC_NAME
-#undef TEMPLATE_TRANSFER_BYTE
\ No newline at end of file
+#undef TEMPLATE_TRANSFER_BYTE