Replace internal Pipe_BytesToEPSizeMask() routine with a new version which results...
authorDean Camera <dean@fourwalledcubicle.com>
Wed, 21 Jul 2010 14:17:18 +0000 (14:17 +0000)
committerDean Camera <dean@fourwalledcubicle.com>
Wed, 21 Jul 2010 14:17:18 +0000 (14:17 +0000)
LUFA/Drivers/USB/LowLevel/Pipe.h

index 0714aa8..ee43bab 100644 (file)
                        static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes) ATTR_WARN_UNUSED_RESULT ATTR_CONST ATTR_ALWAYS_INLINE;
                        static inline uint8_t Pipe_BytesToEPSizeMask(const uint16_t Bytes)
                        {
-                               if (Bytes <= 8)
-                                 return (0 << EPSIZE0);
-                               else if (Bytes <= 16)
-                                 return (1 << EPSIZE0);
-                               else if (Bytes <= 32)
-                                 return (2 << EPSIZE0);
-                               else if (Bytes <= 64)
-                                 return (3 << EPSIZE0);
-                               else if (Bytes <= 128)
-                                 return (4 << EPSIZE0);
-                               else
-                                 return (5 << EPSIZE0);
+                               uint8_t  MaskVal    = 0;
+                               uint16_t CheckBytes = 8;
+                               
+                               while ((CheckBytes < Bytes) && (CheckBytes < PIPE_MAX_SIZE))
+                               {
+                                       MaskVal++;
+                                       CheckBytes <<= 1;
+                               }
+                               
+                               return (MaskVal << EPSIZE0);
                        }
 
        #endif