/* Private Interface - For use in library only: */\r
#if !defined(__DOXYGEN__)\r
/* External Variables: */\r
- extern volatile uint8_t USB_SelectedPipe;\r
- extern volatile void* USB_PipeFIFOPos[];\r
+ extern volatile uint8_t USB_SelectedPipe;\r
+ extern volatile uint8_t* USB_PipeFIFOPos[];\r
#endif\r
\r
/* Public Interface - May be used in end-application: */\r
static inline uint8_t Pipe_Read_Byte(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
static inline uint8_t Pipe_Read_Byte(void)\r
{\r
- return *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
+ return *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
}\r
\r
/** Writes one byte from the currently selected pipe's bank, for IN direction pipes.\r
static inline void Pipe_Write_Byte(const uint8_t Byte) ATTR_ALWAYS_INLINE;\r
static inline void Pipe_Write_Byte(const uint8_t Byte)\r
{\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = Byte;\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = Byte;\r
}\r
\r
/** Discards one byte from the currently selected pipe's bank, for OUT direction pipes.\r
{\r
uint8_t Dummy;\r
\r
- Dummy = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
+ Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
}\r
\r
/** Reads two bytes from the currently selected pipe's bank in little endian format, for OUT\r
static inline uint16_t Pipe_Read_Word_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
static inline uint16_t Pipe_Read_Word_LE(void)\r
{\r
- uint16_t Byte1 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- uint16_t Byte0 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
+ uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
\r
return ((Byte0 << 8) | Byte1);\r
}\r
static inline uint16_t Pipe_Read_Word_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
static inline uint16_t Pipe_Read_Word_BE(void)\r
{\r
- uint16_t Byte0 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- uint16_t Byte1 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
+ uint16_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ uint16_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
\r
return ((Byte0 << 8) | Byte1);\r
}\r
static inline void Pipe_Write_Word_LE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
static inline void Pipe_Write_Word_LE(const uint16_t Word)\r
{\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (Word >> 8);\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (Word & 0xFF);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word >> 8);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word & 0xFF);\r
}\r
\r
/** Writes two bytes to the currently selected pipe's bank in big endian format, for IN\r
static inline void Pipe_Write_Word_BE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
static inline void Pipe_Write_Word_BE(const uint16_t Word)\r
{\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (Word & 0xFF);\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (Word >> 8);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word & 0xFF);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (Word >> 8);\r
}\r
\r
/** Discards two bytes from the currently selected pipe's bank, for OUT direction pipes.\r
{\r
uint8_t Dummy;\r
\r
- Dummy = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- Dummy = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
+ Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
}\r
\r
/** Reads four bytes from the currently selected pipe's bank in little endian format, for OUT\r
static inline uint32_t Pipe_Read_DWord_LE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
static inline uint32_t Pipe_Read_DWord_LE(void)\r
{\r
- uint32_t Byte3 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- uint32_t Byte2 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- uint32_t Byte1 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- uint32_t Byte0 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
+ uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
\r
return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
}\r
static inline uint32_t Pipe_Read_DWord_BE(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE;\r
static inline uint32_t Pipe_Read_DWord_BE(void)\r
{\r
- uint32_t Byte0 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- uint32_t Byte1 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- uint32_t Byte2 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- uint32_t Byte3 = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
+ uint32_t Byte0 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ uint32_t Byte1 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ uint32_t Byte2 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ uint32_t Byte3 = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
\r
return ((Byte0 << 24) | (Byte1 << 16) | (Byte2 << 8) | Byte3);\r
}\r
static inline void Pipe_Write_DWord_LE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
static inline void Pipe_Write_DWord_LE(const uint32_t DWord)\r
{\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (DWord >> 24);\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (DWord >> 16);\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (DWord >> 8);\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (DWord & 0xFF);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 24);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 16);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 8);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord & 0xFF);\r
}\r
\r
/** Writes four bytes to the currently selected pipe's bank in big endian format, for IN\r
static inline void Pipe_Write_DWord_BE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
static inline void Pipe_Write_DWord_BE(const uint32_t DWord)\r
{\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (DWord & 0xFF);\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (DWord >> 8);\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (DWord >> 16);\r
- *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++) = (DWord >> 24);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord & 0xFF);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 8);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 16);\r
+ *(USB_PipeFIFOPos[USB_SelectedPipe]++) = (DWord >> 24);\r
}\r
\r
/** Discards four bytes from the currently selected pipe's bank, for OUT direction pipes.\r
{\r
uint8_t Dummy;\r
\r
- Dummy = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- Dummy = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- Dummy = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
- Dummy = *(((volatile uint8_t** volatile)USB_PipeFIFOPos)[USB_SelectedPipe]++);\r
+ Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
+ Dummy = *(USB_PipeFIFOPos[USB_SelectedPipe]++);\r
}\r
\r
/* External Variables: */\r