Replace internal Pipe_BytesToEPSizeMask() routine with a new version which results...
[pub/lufa.git] / 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