50 #ifndef __LPCUSBlib_COMMON_H__
51 #define __LPCUSBlib_COMMON_H__
54 #define __INCLUDE_FROM_COMMON_H
62 #if defined(USE_LUFA_CONFIG_HEADER)
63 #include "LUFAConfig.h"
66 #if 1 // TODO add control macros later
67 #include "../LPCUSBlibConfig.h"
77 #if defined(__cplusplus)
82 #if defined(__DOXYGEN__)
88 #elif (ARCH == ARCH_AVR8)
90 #include <avr/interrupt.h>
91 #include <avr/pgmspace.h>
92 #include <avr/eeprom.h>
94 #include <util/delay.h>
98 #define ARCH_HAS_EEPROM_ADDRESS_SPACE
99 #define ARCH_HAS_FLASH_ADDRESS_SPACE
100 #define ARCH_HAS_MULTI_ADDRESS_SPACE
101 #define ARCH_LITTLE_ENDIAN
104 #elif (ARCH == ARCH_UC3)
105 #include <avr32/io.h>
108 #define PROGMEM const
109 #define pgm_read_byte(x) *x
110 #define memcmp_P(...) memcmp(__VA_ARGS__)
111 #define memcpy_P(...) memcpy(__VA_ARGS__)
116 #define ARCH_BIG_ENDIAN
119 #elif (ARCH == ARCH_XMEGA)
121 #include <avr/interrupt.h>
122 #include <avr/pgmspace.h>
123 #include <avr/eeprom.h>
124 #include <util/delay.h>
128 #define ARCH_HAS_EEPROM_ADDRESS_SPACE
129 #define ARCH_HAS_FLASH_ADDRESS_SPACE
130 #define ARCH_HAS_MULTI_ADDRESS_SPACE
131 #define ARCH_LITTLE_ENDIAN
134 #elif (ARCH == ARCH_LPC)
136 #define ARCH_LITTLE_ENDIAN
137 #define PROGMEM const
138 #define pgm_read_byte(x) (*x)
139 #define memcmp_P(...) memcmp(__VA_ARGS__)
140 #define memcpy_P(...) memcpy(__VA_ARGS__)
143 #error Unknown device architecture specified.
160 #define MACROE while (0)
172 #if !defined(MAX) || defined(__DOXYGEN__)
173 #define MAX(x, y) (((x) > (y)) ? (x) : (y))
186 #if !defined(MIN) || defined(__DOXYGEN__)
187 #define MIN(x, y) (((x) < (y)) ? (x) : (y))
190 #if !defined(STRINGIFY) || defined(__DOXYGEN__)
198 #define STRINGIFY(x) #x
207 #define STRINGIFY_EXPANDED(x) STRINGIFY(x)
210 #if !defined(ISR) || defined(__DOXYGEN__)
225 #define ISR(Name, ...) void Name (void) __attribute__((__interrupt__)) __VA_ARGS__; void Name (void)
237 Byte = (((Byte & 0xF0) >> 4) | ((Byte & 0x0F) << 4));
238 Byte = (((Byte & 0xCC) >> 2) | ((Byte & 0x33) << 2));
239 Byte = (((Byte & 0xAA) >> 1) | ((Byte & 0x55) << 1));
254 #if (ARCH == ARCH_AVR8)
257 _delay_ms(Milliseconds);
261 while (Milliseconds--)
264 #elif (ARCH == ARCH_UC3)
265 while (Milliseconds--)
267 __builtin_mtsr(AVR32_COUNT, 0);
268 while (__builtin_mfsr(AVR32_COUNT) < (F_CPU / 1000));
270 #elif (ARCH == ARCH_XMEGA)
273 _delay_ms(Milliseconds);
277 while (Milliseconds--)
280 #elif (ARCH == ARCH_LPC)
281 while (Milliseconds--)
285 for (i = 0; i < (4 * 1000); i++) {
306 #if (ARCH == ARCH_AVR8)
308 #elif (ARCH == ARCH_UC3)
309 return __builtin_mfsr(AVR32_SR);
310 #elif (ARCH == ARCH_XMEGA)
312 #elif (ARCH == ARCH_LPC)
334 #if (ARCH == ARCH_AVR8)
335 SREG = GlobalIntState;
336 #elif (ARCH == ARCH_UC3)
337 if (GlobalIntState & AVR32_SR_GM)
338 __builtin_ssrf(AVR32_SR_GM_OFFSET);
340 __builtin_csrf(AVR32_SR_GM_OFFSET);
341 #elif (ARCH == ARCH_XMEGA)
342 SREG = GlobalIntState;
343 #elif (ARCH == ARCH_LPC)
360 #if (ARCH == ARCH_AVR8)
362 #elif (ARCH == ARCH_UC3)
363 __builtin_csrf(AVR32_SR_GM_OFFSET);
364 #elif (ARCH == ARCH_XMEGA)
366 #elif (ARCH == ARCH_LPC)
383 #if (ARCH == ARCH_AVR8)
385 #elif (ARCH == ARCH_UC3)
386 __builtin_ssrf(AVR32_SR_GM_OFFSET);
387 #elif (ARCH == ARCH_XMEGA)
389 #elif (ARCH == ARCH_LPC)
397 #if defined(__cplusplus)