Remove redundant calls to USB_USBTask() in the Mass Storage Device Class driver when...
authorDean Camera <dean@fourwalledcubicle.com>
Fri, 29 Jul 2011 08:12:00 +0000 (08:12 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Fri, 29 Jul 2011 08:12:00 +0000 (08:12 +0000)
Fix implementations of Endpoint_SetEndpointDirection() and Endpoint_GetEndpointDirection() for the AVR8 architecture.

LUFA/Drivers/USB/Class/Device/MassStorage.c
LUFA/Drivers/USB/Core/AVR8/Endpoint_AVR8.h
LUFA/Drivers/USB/Core/USBController.h

index 4f1542a..45d0112 100644 (file)
@@ -165,10 +165,6 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte
                                       (sizeof(MS_CommandBlockWrapper_t) - 16), &BytesProcessed) ==
                                       ENDPOINT_RWSTREAM_IncompleteTransfer)
        {
-               #if !defined(INTERRUPT_CONTROL_ENDPOINT)
-               USB_USBTask();
-               #endif
-
                if (MSInterfaceInfo->State.IsMassStoreReset)
                  return false;
        }
@@ -191,10 +187,6 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte
                                        MSInterfaceInfo->State.CommandBlock.SCSICommandLength, &BytesProcessed) ==
                                        ENDPOINT_RWSTREAM_IncompleteTransfer)
        {
-               #if !defined(INTERRUPT_CONTROL_ENDPOINT)
-               USB_USBTask();
-               #endif
-
                if (MSInterfaceInfo->State.IsMassStoreReset)
                  return false;
        }
@@ -210,10 +202,6 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
 
        while (Endpoint_IsStalled())
        {
-               #if !defined(INTERRUPT_CONTROL_ENDPOINT)
-               USB_USBTask();
-               #endif
-
                if (MSInterfaceInfo->State.IsMassStoreReset)
                  return;
        }
@@ -222,10 +210,6 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
 
        while (Endpoint_IsStalled())
        {
-               #if !defined(INTERRUPT_CONTROL_ENDPOINT)
-               USB_USBTask();
-               #endif
-
                if (MSInterfaceInfo->State.IsMassStoreReset)
                  return;
        }
@@ -235,10 +219,6 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
                                        sizeof(MS_CommandStatusWrapper_t), &BytesProcessed) ==
                                        ENDPOINT_RWSTREAM_IncompleteTransfer)
        {
-               #if !defined(INTERRUPT_CONTROL_ENDPOINT)
-               USB_USBTask();
-               #endif
-
                if (MSInterfaceInfo->State.IsMassStoreReset)
                  return;
        }
index d1bea6d..f14d483 100644 (file)
                        static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
                        static inline uint8_t Endpoint_GetEndpointDirection(void)
                        {
-                               return (UECFG0X & ENDPOINT_DIR_IN);
+                               return (UECFG0X & (1 << EPDIR)) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT;
                        }
 
                        /** Sets the direction of the currently selected endpoint.
                        static inline void Endpoint_SetEndpointDirection(const uint8_t DirectionMask) ATTR_ALWAYS_INLINE;
                        static inline void Endpoint_SetEndpointDirection(const uint8_t DirectionMask)
                        {
-                               UECFG0X = ((UECFG0X & ~ENDPOINT_DIR_IN) | DirectionMask);
+                               UECFG0X = ((UECFG0X & ~(1 << EPDIR)) | (DirectionMask ? (1 << EPDIR) : 0));
                        }
 
                        /** Reads one byte from the currently selected endpoint's bank, for OUT direction endpoints.
index 3190957..1c44c16 100644 (file)
                /** Endpoint direction mask, for masking against endpoint addresses to retrieve the endpoint's
                 *  direction for comparing with the \c ENDPOINT_DIR_* masks.
                 */
-               #define ENDPOINT_DIR_MASK                       0x80
+               #define ENDPOINT_DIR_MASK                  0x80
 
                /** Endpoint address direction mask for an OUT direction (Host to Device) endpoint. This may be ORed with
                 *  the index of the address within a device to obtain the full endpoint address.
                 */
-               #define ENDPOINT_DIR_OUT                        0x00
+               #define ENDPOINT_DIR_OUT                   0x00
 
                /** Endpoint address direction mask for an IN direction (Device to Host) endpoint. This may be ORed with
                 *  the index of the address within a device to obtain the full endpoint address.
                 */
-               #define ENDPOINT_DIR_IN                         0x80
+               #define ENDPOINT_DIR_IN                    0x80
                //@}
 
                /** \name Endpoint/Pipe Type Masks */