*\r
* Functions, macros and enums related to endpoint management when in USB Device mode. This\r
* module contains the endpoint management macros, as well as endpoint interrupt and data\r
- * send/recieve functions for various data types.\r
+ * send/receive functions for various data types.\r
*\r
* @{\r
*/\r
static inline uint16_t Endpoint_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
static inline uint16_t Endpoint_Read_Word_LE(void)\r
{\r
- uint16_t Data;\r
+ union\r
+ {\r
+ uint16_t Word;\r
+ uint8_t Bytes[2];\r
+ } Data;\r
\r
- Data = UEDATX;\r
- Data |= (((uint16_t)UEDATX) << 8);\r
+ Data.Bytes[0] = UEDATX;\r
+ Data.Bytes[1] = UEDATX;\r
\r
- return Data;\r
+ return Data.Word;\r
}\r
\r
/** Reads two bytes from the currently selected endpoint's bank in big endian format, for OUT\r
static inline uint16_t Endpoint_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
static inline uint16_t Endpoint_Read_Word_BE(void)\r
{\r
- uint16_t Data;\r
+ union\r
+ {\r
+ uint16_t Word;\r
+ uint8_t Bytes[2];\r
+ } Data;\r
\r
- Data = (((uint16_t)UEDATX) << 8);\r
- Data |= UEDATX;\r
+ Data.Bytes[1] = UEDATX;\r
+ Data.Bytes[0] = UEDATX;\r
\r
- return Data;\r
+ return Data.Word;\r
}\r
\r
/** Writes two bytes to the currently selected endpoint's bank in little endian format, for IN\r