Remove redundant calls to USB_USBTask() in the Mass Storage Device Class driver when INTERRUPT_CONTROL_ENDPOINT is not used, as this is done inside the stream callbacks.

Fix implementations of Endpoint_SetEndpointDirection() and Endpoint_GetEndpointDirection() for the AVR8 architecture.
pull/1469/head
Dean Camera 14 years ago
parent 025742fca8
commit 40728fd20d

@ -165,10 +165,6 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte
(sizeof(MS_CommandBlockWrapper_t) - 16), &BytesProcessed) == (sizeof(MS_CommandBlockWrapper_t) - 16), &BytesProcessed) ==
ENDPOINT_RWSTREAM_IncompleteTransfer) ENDPOINT_RWSTREAM_IncompleteTransfer)
{ {
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
USB_USBTask();
#endif
if (MSInterfaceInfo->State.IsMassStoreReset) if (MSInterfaceInfo->State.IsMassStoreReset)
return false; return false;
} }
@ -191,10 +187,6 @@ static bool MS_Device_ReadInCommandBlock(USB_ClassInfo_MS_Device_t* const MSInte
MSInterfaceInfo->State.CommandBlock.SCSICommandLength, &BytesProcessed) == MSInterfaceInfo->State.CommandBlock.SCSICommandLength, &BytesProcessed) ==
ENDPOINT_RWSTREAM_IncompleteTransfer) ENDPOINT_RWSTREAM_IncompleteTransfer)
{ {
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
USB_USBTask();
#endif
if (MSInterfaceInfo->State.IsMassStoreReset) if (MSInterfaceInfo->State.IsMassStoreReset)
return false; return false;
} }
@ -210,10 +202,6 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
while (Endpoint_IsStalled()) while (Endpoint_IsStalled())
{ {
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
USB_USBTask();
#endif
if (MSInterfaceInfo->State.IsMassStoreReset) if (MSInterfaceInfo->State.IsMassStoreReset)
return; return;
} }
@ -222,10 +210,6 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
while (Endpoint_IsStalled()) while (Endpoint_IsStalled())
{ {
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
USB_USBTask();
#endif
if (MSInterfaceInfo->State.IsMassStoreReset) if (MSInterfaceInfo->State.IsMassStoreReset)
return; return;
} }
@ -235,10 +219,6 @@ static void MS_Device_ReturnCommandStatus(USB_ClassInfo_MS_Device_t* const MSInt
sizeof(MS_CommandStatusWrapper_t), &BytesProcessed) == sizeof(MS_CommandStatusWrapper_t), &BytesProcessed) ==
ENDPOINT_RWSTREAM_IncompleteTransfer) ENDPOINT_RWSTREAM_IncompleteTransfer)
{ {
#if !defined(INTERRUPT_CONTROL_ENDPOINT)
USB_USBTask();
#endif
if (MSInterfaceInfo->State.IsMassStoreReset) if (MSInterfaceInfo->State.IsMassStoreReset)
return; return;
} }

@ -587,7 +587,7 @@
static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; static inline uint8_t Endpoint_GetEndpointDirection(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;
static inline uint8_t Endpoint_GetEndpointDirection(void) 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. /** Sets the direction of the currently selected endpoint.
@ -597,7 +597,7 @@
static inline void Endpoint_SetEndpointDirection(const uint8_t DirectionMask) ATTR_ALWAYS_INLINE; static inline void Endpoint_SetEndpointDirection(const uint8_t DirectionMask) ATTR_ALWAYS_INLINE;
static inline void Endpoint_SetEndpointDirection(const uint8_t DirectionMask) 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. /** Reads one byte from the currently selected endpoint's bank, for OUT direction endpoints.

@ -68,17 +68,17 @@
/** Endpoint direction mask, for masking against endpoint addresses to retrieve the endpoint's /** Endpoint direction mask, for masking against endpoint addresses to retrieve the endpoint's
* direction for comparing with the \c ENDPOINT_DIR_* masks. * 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 /** 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. * 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 /** 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. * 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 */ /** \name Endpoint/Pipe Type Masks */

Loading…
Cancel
Save