54 #ifndef __LPCUSBlib_ENDIANNESS_H__
55 #define __LPCUSBlib_ENDIANNESS_H__
58 #if defined(__cplusplus)
63 #if !defined(__INCLUDE_FROM_COMMON_H)
64 #error Do not include this file directly. Include LPCUSBlib/Common/Common.h instead to gain this functionality.
67 #if !(defined(ARCH_BIG_ENDIAN) || defined(ARCH_LITTLE_ENDIAN))
68 #error ARCH_BIG_ENDIAN or ARCH_LITTLE_ENDIAN not set for the specified architecture.
84 #define SWAPENDIAN_16(x) (uint16_t)((((x) & 0xFF00) >> 8) | (((x) & 0x00FF) << 8))
97 #define SWAPENDIAN_32(x) (uint32_t)((((x) & 0xFF000000UL) >> 24UL) | (((x) & 0x00FF0000UL) >> 8UL) | \
98 (((x) & 0x0000FF00UL) << 8UL) | (((x) & 0x000000FFUL) << 24UL))
100 #if defined(ARCH_BIG_ENDIAN) && !defined(le16_to_cpu)
101 #define le16_to_cpu(x) SwapEndian_16(x)
102 #define le32_to_cpu(x) SwapEndian_32(x)
103 #define be16_to_cpu(x) (x)
104 #define be32_to_cpu(x) (x)
105 #define cpu_to_le16(x) SwapEndian_16(x)
106 #define cpu_to_le32(x) SwapEndian_32(x)
107 #define cpu_to_be16(x) (x)
108 #define cpu_to_be32(x) (x)
109 #define LE16_TO_CPU(x) SWAPENDIAN_16(x)
110 #define LE32_TO_CPU(x) SWAPENDIAN_32(x)
111 #define BE16_TO_CPU(x) (x)
112 #define BE32_TO_CPU(x) (x)
113 #define CPU_TO_LE16(x) SWAPENDIAN_16(x)
114 #define CPU_TO_LE32(x) SWAPENDIAN_32(x)
115 #define CPU_TO_BE16(x) (x)
116 #define CPU_TO_BE32(x) (x)
117 #elif !defined(le16_to_cpu)
135 #define le16_to_cpu(x) (x)
151 #define le32_to_cpu(x) (x)
167 #define be16_to_cpu(x) SwapEndian_16(x)
183 #define be32_to_cpu(x) SwapEndian_32(x)
199 #define cpu_to_le16(x) (x)
215 #define cpu_to_le32(x) (x)
231 #define cpu_to_be16(x) SwapEndian_16(x)
247 #define cpu_to_be32(x) SwapEndian_32(x)
268 #define LE16_TO_CPU(x) (x)
284 #define LE32_TO_CPU(x) (x)
300 #define BE16_TO_CPU(x) SWAPENDIAN_16(x)
316 #define BE32_TO_CPU(x) SWAPENDIAN_32(x)
332 #define CPU_TO_LE16(x) (x)
348 #define CPU_TO_LE32(x) (x)
364 #define CPU_TO_BE16(x) SWAPENDIAN_16(x)
380 #define CPU_TO_BE32(x) SWAPENDIAN_32(x)
408 Temp = Data.Bytes[0];
409 Data.Bytes[0] = Data.Bytes[1];
410 Data.Bytes[1] = Temp;
437 Temp = Data.Bytes[0];
438 Data.Bytes[0] = Data.Bytes[3];
439 Data.Bytes[3] = Temp;
441 Temp = Data.Bytes[1];
442 Data.Bytes[1] = Data.Bytes[2];
443 Data.Bytes[2] = Temp;
460 uint8_t* CurrDataPos = (uint8_t*)Data;
464 uint8_t Temp = *CurrDataPos;
465 *CurrDataPos = *(CurrDataPos + Length - 1);
466 *(CurrDataPos + Length - 1) = Temp;
474 #if defined(__cplusplus)