Fix Pipe_GetBoundEndpointAddress() returning bad values in some circumstances.
authorDean Camera <dean@fourwalledcubicle.com>
Fri, 10 May 2013 19:48:42 +0000 (21:48 +0200)
committerDean Camera <dean@fourwalledcubicle.com>
Fri, 10 May 2013 19:48:42 +0000 (21:48 +0200)
LUFA/DoxygenPages/ChangeLog.txt
LUFA/Drivers/USB/Core/AVR8/Pipe_AVR8.h

index c4b9af9..bf2a236 100644 (file)
@@ -25,6 +25,8 @@
   *  - Core:
   *   - Fixed Low Speed USB devices broken when using the library HID Class driver (thanks to Michael)
   *   - Fixed possible register corruption in USB Host mode on AVR8 devices when ORDERED_EP_CONFIG is used (thanks to Martin Aakerberg)
+  *   - Fixed Pipe_GetBoundEndpointAddress() returning invalid endpoint directions on AVR8 architecture devices
+  *     under some circumstances
   *  - Library Applications:
   *   - Added handler for SCSI_CMD_START_STOP_UNIT in demos using the Mass Storage class, to prevent ejection errors on *nix systems due to an
   *     unknown SCSI command
index 5f2e46d..82664f5 100644 (file)
                        {
                                uint8_t UPCFG0X_Temp = UPCFG0X;
 
-                               return (((UPCFG0X_Temp >> PEPNUM0) & PIPE_EPNUM_MASK) | ((UPCFG0X_Temp & PEPNUM1) ? ENDPOINT_DIR_OUT : ENDPOINT_DIR_IN));
+                               return (((UPCFG0X_Temp >> PEPNUM0) & PIPE_EPNUM_MASK) |
+                                       ((UPCFG0X_Temp & PTOKEN1) ? ENDPOINT_DIR_IN : ENDPOINT_DIR_OUT));
                        }
 
                        /** Sets the period between interrupts for an INTERRUPT type pipe to a specified number of milliseconds.