Enable sorting of the member functions in the Doxygen output, so that functions in...
[pub/USBasp.git] / LUFA / Common / Common.h
index cb0f5f3..d2d657a 100644 (file)
@@ -1,13 +1,13 @@
 /*
              LUFA Library
 /*
              LUFA Library
-     Copyright (C) Dean Camera, 2011.
+     Copyright (C) Dean Camera, 2012.
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
 
   dean [at] fourwalledcubicle [dot] com
            www.lufa-lib.org
 */
 
 /*
-  Copyright 2011  Dean Camera (dean [at] fourwalledcubicle [dot] com)
+  Copyright 2012  Dean Camera (dean [at] fourwalledcubicle [dot] com)
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
 
   Permission to use, copy, modify, distribute, and sell this
   software and its documentation for any purpose is hereby granted
   this software.
 */
 
   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.
  *
 /** \file
  *  \brief Common library convenience headers, macros and functions.
  *
                #include <string.h>
                #include <stddef.h>
 
                #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"
 
                #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" {
        /* 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 <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 <util/delay.h>
 
                        typedef uint8_t uint_reg_t;
                        #include "Endianness.h"
                #elif (ARCH == ARCH_UC3)
                        #include <avr32/io.h>
                        #include "Endianness.h"
                #elif (ARCH == ARCH_UC3)
                        #include <avr32/io.h>
+                       #include <math.h>
 
                        // === TODO: Find abstracted way to handle these ===
 
                        // === 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__)
                        #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 <avr/interrupt.h>
                        #include <avr/pgmspace.h>
                        #include <avr/eeprom.h>
+                       #include <math.h>
                        #include <util/delay.h>
 
                        typedef uint8_t uint_reg_t;
                        #include <util/delay.h>
 
                        typedef uint8_t uint_reg_t;
 
                        /** Convenience macro to determine the larger of two values.
                         *
 
                        /** 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
                         *
                         *  \param[in] x  First value to compare
                         *  \param[in] y  First value to compare
 
                        /** Convenience macro to determine the smaller of two values.
                         *
 
                        /** 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
                         *
                         *  \param[in] x  First value to compare
                         *  \param[in] y  First value to compare
                                 *
                                 *  \ingroup Group_GlobalInt
                                 *
                                 *
                                 *  \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
                                 */
                                #define ISR(Name, ...)          void Name (void) __attribute__((__interrupt__)) __VA_ARGS__; void Name (void)
                        #endif
                                while (Milliseconds--)
                                {
                                        __builtin_mtsr(AVR32_COUNT, 0);
                                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)
                                if (GCC_IS_COMPILE_CONST(Milliseconds))
                                #elif (ARCH == ARCH_XMEGA)
                                return SREG;
                                #endif
                                #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.
                        }
 
                        /** Sets the global interrupt enable state of the microcontroller to the mask passed into the function.