Enable sorting of the member functions in the Doxygen output, so that functions in...
[pub/USBasp.git] / LUFA / Common / Common.h
index 35c739a..d2d657a 100644 (file)
   this software.
 */
 
+/** \dir
+ *  \brief Common library header files.
+ *
+ *  This folder contains header files which are common to all parts of the LUFA library. They may be used freely in
+ *  user applications.
+ */
+
 /** \file
  *  \brief Common library convenience headers, macros and functions.
  *
                #include <string.h>
                #include <stddef.h>
 
-               #if defined(USE_LUFA_CONFIG_HEADER)
-                       #include "LUFAConfig.h"
-               #endif
-
                #include "Architectures.h"
                #include "BoardTypes.h"
                #include "ArchitectureSpecific.h"
                #include "CompilerSpecific.h"
                #include "Attributes.h"
 
+               #if defined(USE_LUFA_CONFIG_HEADER)
+                       #include "LUFAConfig.h"
+               #endif
+
        /* Enable C linkage for C++ Compilers: */
                #if defined(__cplusplus)
                        extern "C" {
@@ -89,6 +96,7 @@
                        #include <avr/pgmspace.h>
                        #include <avr/eeprom.h>
                        #include <avr/boot.h>
+                       #include <math.h>
                        #include <util/delay.h>
 
                        typedef uint8_t uint_reg_t;
                        #include "Endianness.h"
                #elif (ARCH == ARCH_UC3)
                        #include <avr32/io.h>
+                       #include <math.h>
 
                        // === TODO: Find abstracted way to handle these ===
-                       #define PROGMEM                  const
+                       #define PROGMEM                  
                        #define pgm_read_byte(x)         *x
                        #define memcmp_P(...)            memcmp(__VA_ARGS__)
                        #define memcpy_P(...)            memcpy(__VA_ARGS__)
                        #include <avr/interrupt.h>
                        #include <avr/pgmspace.h>
                        #include <avr/eeprom.h>
+                       #include <math.h>
                        #include <util/delay.h>
 
                        typedef uint8_t uint_reg_t;
 
                        /** Convenience macro to determine the larger of two values.
                         *
-                        *  \note This macro should only be used with operands that do not have side effects from being evaluated
-                        *        multiple times.
+                        *  \attention This macro should only be used with operands that do not have side effects from being evaluated
+                        *             multiple times.
                         *
                         *  \param[in] x  First value to compare
                         *  \param[in] y  First value to compare
 
                        /** Convenience macro to determine the smaller of two values.
                         *
-                        *  \note This macro should only be used with operands that do not have side effects from being evaluated
-                        *        multiple times.
+                        *  \attention This macro should only be used with operands that do not have side effects from being evaluated
+                        *             multiple times.
                         *
                         *  \param[in] x  First value to compare
                         *  \param[in] y  First value to compare
                                 *
                                 *  \ingroup Group_GlobalInt
                                 *
-                                *  \param Name  Unique name of the interrupt service routine.
+                                *  \param[in] Name  Unique name of the interrupt service routine.
                                 */
                                #define ISR(Name, ...)          void Name (void) __attribute__((__interrupt__)) __VA_ARGS__; void Name (void)
                        #endif
                                while (Milliseconds--)
                                {
                                        __builtin_mtsr(AVR32_COUNT, 0);
-                                       while (__builtin_mfsr(AVR32_COUNT) < (F_CPU / 1000));
+                                       while ((uint32_t)__builtin_mfsr(AVR32_COUNT) < (F_CPU / 1000));
                                }
                                #elif (ARCH == ARCH_XMEGA)
                                if (GCC_IS_COMPILE_CONST(Milliseconds))
                                #elif (ARCH == ARCH_XMEGA)
                                return SREG;
                                #endif
-
-                               GCC_MEMORY_BARRIER();
                        }
 
                        /** Sets the global interrupt enable state of the microcontroller to the mask passed into the function.