Changed Still Image Host class driver to auto-fill TransactionID element of sent...
[pub/USBasp.git] / LUFA / Drivers / USB / LowLevel / Endpoint.h
index a9ec122..2fa20df 100644 (file)
@@ -33,7 +33,7 @@
  *\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
                                 *  \return The currently selected endpoint's direction, as a ENDPOINT_DIR_* mask.\r
                                 */\r
                                static inline uint8_t Endpoint_GetEndpointDirection(void);\r
+\r
+                               /** Sets the direction of the currently selected endpoint.\r
+                                *\r
+                                *  \param DirectionMask  New endpoint direction, as a ENDPOINT_DIR_* mask.\r
+                                */\r
+                               static inline void Endpoint_SetEndpointDirection(uint8_t DirectionMask);\r
                        #else\r
                                #if defined(USB_SERIES_4_AVR) || defined(USB_SERIES_6_AVR) || defined(USB_SERIES_7_AVR) || defined(__DOXYGEN__)\r
                                        #define Endpoint_BytesInEndpoint()        UEBCX\r
                                #define Endpoint_ResetDataToggle()            MACROS{ UECONX |= (1 << RSTDT); }MACROE\r
                                \r
                                #define Endpoint_GetEndpointDirection()       (UECFG0X & ENDPOINT_DIR_IN)\r
+                               \r
+                               #define Endpoint_SetEndpointDirection(dir)    MACROS{ UECFG0X = ((UECFG0X & ~ENDPOINT_DIR_IN) | dir); }MACROE\r
                        #endif\r
 \r
                /* Enums: */\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
                         */\r
                        uint8_t Endpoint_Write_Stream_LE(void* Buffer, uint16_t Length _CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** EEPROM buffer source version of \ref Endpoint_Write_Stream_LE.\r
+                       /** EEPROM buffer source version of \ref Endpoint_Write_Stream_LE().\r
                         *\r
                         *  \ingroup Group_EndpointStreamRW\r
                         *\r
                         */\r
                        uint8_t Endpoint_Write_EStream_LE(void* Buffer, uint16_t Length _CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** FLASH buffer source version of \ref Endpoint_Write_Stream_LE.\r
+                       /** FLASH buffer source version of \ref Endpoint_Write_Stream_LE().\r
                         *\r
                         *  \note The FLASH data must be located in the first 64KB of FLASH for this function to work correctly.\r
                         *\r
                         */\r
                        uint8_t Endpoint_Write_Stream_BE(void* Buffer, uint16_t Length _CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** EEPROM buffer source version of \ref Endpoint_Write_Stream_BE.\r
+                       /** EEPROM buffer source version of \ref Endpoint_Write_Stream_BE().\r
                         *\r
                         *  \ingroup Group_EndpointStreamRW\r
                         *\r
                         */\r
                        uint8_t Endpoint_Write_EStream_BE(void* Buffer, uint16_t Length _CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** FLASH buffer source version of \ref Endpoint_Write_Stream_BE.\r
+                       /** FLASH buffer source version of \ref Endpoint_Write_Stream_BE().\r
                         *\r
                         *  \note The FLASH data must be located in the first 64KB of FLASH for this function to work correctly.\r
                         *\r
                         */\r
                        uint8_t Endpoint_Read_Stream_LE(void* Buffer, uint16_t Length _CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** EEPROM buffer source version of \ref Endpoint_Read_Stream_LE.\r
+                       /** EEPROM buffer source version of \ref Endpoint_Read_Stream_LE().\r
                         *\r
                         *  \ingroup Group_EndpointStreamRW\r
                         *\r
                         */\r
                        uint8_t Endpoint_Read_Stream_BE(void* Buffer, uint16_t Length _CALLBACK_PARAM) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** EEPROM buffer source version of \ref Endpoint_Read_Stream_BE.\r
+                       /** EEPROM buffer source version of \ref Endpoint_Read_Stream_BE().\r
                         *\r
                         *  \ingroup Group_EndpointStreamRW\r
                         *\r
                         */\r
                        uint8_t Endpoint_Write_Control_EStream_LE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** FLASH buffer source version of \ref Endpoint_Write_Control_Stream_LE.\r
+                       /** FLASH buffer source version of \ref Endpoint_Write_Control_Stream_LE().\r
                         *\r
                         *  \note This function automatically clears the control transfer's status stage. Do not manually attempt\r
                         *        to clear the status stage when using this routine in a control transaction.\r
                         */\r
                        uint8_t Endpoint_Write_Control_Stream_BE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** EEPROM buffer source version of \ref Endpoint_Write_Control_Stream_BE.\r
+                       /** EEPROM buffer source version of \ref Endpoint_Write_Control_Stream_BE().\r
                         *\r
                         *  \note This function automatically clears the control transfer's status stage. Do not manually attempt\r
                         *        to clear the status stage when using this routine in a control transaction.\r
                         */\r
                        uint8_t Endpoint_Write_Control_EStream_BE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** FLASH buffer source version of \ref Endpoint_Write_Control_Stream_BE.\r
+                       /** FLASH buffer source version of \ref Endpoint_Write_Control_Stream_BE().\r
                         *\r
                         *  \note This function automatically clears the control transfer's status stage. Do not manually attempt\r
                         *        to clear the status stage when using this routine in a control transaction.\r
                         */\r
                        uint8_t Endpoint_Read_Control_Stream_LE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);\r
 \r
-                       /** EEPROM buffer source version of \ref Endpoint_Read_Control_Stream_LE.\r
+                       /** EEPROM buffer source version of \ref Endpoint_Read_Control_Stream_LE().\r
                         *\r
                         *  \note This function automatically clears the control transfer's status stage. Do not manually attempt\r
                         *        to clear the status stage when using this routine in a control transaction.\r
                         */\r
                        uint8_t Endpoint_Read_Control_Stream_BE(void* Buffer, uint16_t Length) ATTR_NON_NULL_PTR_ARG(1);                \r
                        \r
-                       /** EEPROM buffer source version of \ref Endpoint_Read_Control_Stream_BE.\r
+                       /** EEPROM buffer source version of \ref Endpoint_Read_Control_Stream_BE().\r
                         *\r
                         *  \note This function automatically clears the control transfer's status stage. Do not manually attempt\r
                         *        to clear the status stage when using this routine in a control transaction.\r