/** Endpoint number mask, for masking against endpoint addresses to retrieve the endpoint's\r
* numerical address in the device.\r
*/\r
/** Endpoint number mask, for masking against endpoint addresses to retrieve the endpoint's\r
* numerical address in the device.\r
*/\r
\r
/** Endpoint bank size mask, for masking against endpoint addresses to retrieve the endpoint's\r
* bank size in the device.\r
\r
/** Endpoint bank size mask, for masking against endpoint addresses to retrieve the endpoint's\r
* bank size in the device.\r
*/ \r
#define ENDPOINT_MAX_SIZE(n) _ENDPOINT_GET_MAXSIZE(n)\r
\r
/** Indicates if the given endpoint supports double banking.\r
*\r
*/ \r
#define ENDPOINT_MAX_SIZE(n) _ENDPOINT_GET_MAXSIZE(n)\r
\r
/** Indicates if the given endpoint supports double banking.\r
*\r
*/ \r
#define ENDPOINT_DOUBLEBANK_SUPPORTED(n) _ENDPOINT_GET_DOUBLEBANK(n)\r
\r
#if !defined(CONTROL_ONLY_DEVICE)\r
*/ \r
#define ENDPOINT_DOUBLEBANK_SUPPORTED(n) _ENDPOINT_GET_DOUBLEBANK(n)\r
\r
#if !defined(CONTROL_ONLY_DEVICE)\r
/** Total number of endpoints (including the default control endpoint at address 0) which may\r
* be used in the device. Different USB AVR models support different amounts of endpoints,\r
* this value reflects the maximum number of endpoints for the currently selected AVR model.\r
/** Total number of endpoints (including the default control endpoint at address 0) which may\r
* be used in the device. Different USB AVR models support different amounts of endpoints,\r
* this value reflects the maximum number of endpoints for the currently selected AVR model.\r
* Any endpoint operations which do not require the endpoint number to be indicated will operate on\r
* the currently selected endpoint.\r
*\r
* Any endpoint operations which do not require the endpoint number to be indicated will operate on\r
* the currently selected endpoint.\r
*\r
*/\r
static inline void Endpoint_SelectEndpoint(uint8_t EndpointNumber);\r
\r
/** Resets the endpoint bank FIFO. This clears all the endpoint banks and resets the USB controller's\r
* In and Out pointers to the bank's contents.\r
*\r
*/\r
static inline void Endpoint_SelectEndpoint(uint8_t EndpointNumber);\r
\r
/** Resets the endpoint bank FIFO. This clears all the endpoint banks and resets the USB controller's\r
* In and Out pointers to the bank's contents.\r
*\r
*/\r
static inline void Endpoint_Write_Byte(const uint8_t Byte) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_Byte(const uint8_t Byte)\r
*/\r
static inline void Endpoint_Write_Byte(const uint8_t Byte) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_Byte(const uint8_t Byte)\r
*/\r
static inline void Endpoint_Write_Word_LE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_Word_LE(const uint16_t Word)\r
*/\r
static inline void Endpoint_Write_Word_LE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_Word_LE(const uint16_t Word)\r
*/\r
static inline void Endpoint_Write_Word_BE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_Word_BE(const uint16_t Word)\r
*/\r
static inline void Endpoint_Write_Word_BE(const uint16_t Word) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_Word_BE(const uint16_t Word)\r
*/\r
static inline void Endpoint_Write_DWord_LE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_DWord_LE(const uint32_t DWord)\r
*/\r
static inline void Endpoint_Write_DWord_LE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_DWord_LE(const uint32_t DWord)\r
*/\r
static inline void Endpoint_Write_DWord_BE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_DWord_BE(const uint32_t DWord)\r
*/\r
static inline void Endpoint_Write_DWord_BE(const uint32_t DWord) ATTR_ALWAYS_INLINE;\r
static inline void Endpoint_Write_DWord_BE(const uint32_t DWord)\r
/* Function Prototypes: */\r
/** Configures the specified endpoint number with the given endpoint type, direction, bank size\r
* and banking mode. Endpoints should be allocated in ascending order by their address in the\r
/* Function Prototypes: */\r
/** Configures the specified endpoint number with the given endpoint type, direction, bank size\r
* and banking mode. Endpoints should be allocated in ascending order by their address in the\r
*\r
* The endpoint type may be one of the EP_TYPE_* macros listed in LowLevel.h and the direction\r
* may be either \ref ENDPOINT_DIR_OUT or \ref ENDPOINT_DIR_IN.\r
*\r
* The endpoint type may be one of the EP_TYPE_* macros listed in LowLevel.h and the direction\r
* may be either \ref ENDPOINT_DIR_OUT or \ref ENDPOINT_DIR_IN.\r
*\r
* \note This routine will select the specified endpoint, and the endpoint will remain selected\r
* once the routine completes regardless of if the endpoint configuration succeeds.\r
*\r
* \note This routine will select the specified endpoint, and the endpoint will remain selected\r
* once the routine completes regardless of if the endpoint configuration succeeds.\r
* each USB packet, the given stream callback function is executed repeatedly until the next\r
* packet is ready, allowing for early aborts of stream transfers.\r
*\r
* each USB packet, the given stream callback function is executed repeatedly until the next\r
* packet is ready, allowing for early aborts of stream transfers.\r
*\r
- * The callback routine should be created using the \ref STREAM_CALLBACK() macro. If the token\r
- * NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled\r
- * and this function has the Callback parameter omitted.\r
+ * The callback routine should be created according to the information in \ref Group_StreamCallbacks.\r
+ * If the token NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are\r
+ * disabled and this function has the Callback parameter omitted.\r
- * \param Length Number of bytes to send via the currently selected endpoint.\r
- * \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
+ * \param[in] Length Number of bytes to send via the currently selected endpoint.\r
+ * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
* is executed repeatedly until the endpoint is ready to accept the next packet, allowing for early\r
* aborts of stream transfers.\r
*\r
* is executed repeatedly until the endpoint is ready to accept the next packet, allowing for early\r
* aborts of stream transfers.\r
*\r
- * The callback routine should be created using the \ref STREAM_CALLBACK() macro. If the token\r
- * NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled\r
- * and this function has the Callback parameter omitted.\r
+ * The callback routine should be created according to the information in \ref Group_StreamCallbacks.\r
+ * If the token NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are\r
+ * disabled and this function has the Callback parameter omitted.\r
- * \param Buffer Pointer to the source data buffer to read from.\r
- * \param Length Number of bytes to read for the currently selected endpoint into the buffer.\r
- * \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
+ * \param[in] Buffer Pointer to the source data buffer to read from.\r
+ * \param[in] Length Number of bytes to read for the currently selected endpoint into the buffer.\r
+ * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
* is executed repeatedly until the endpoint is ready to accept the next packet, allowing for early\r
* aborts of stream transfers.\r
*\r
* is executed repeatedly until the endpoint is ready to accept the next packet, allowing for early\r
* aborts of stream transfers.\r
*\r
- * The callback routine should be created using the \ref STREAM_CALLBACK() macro. If the token\r
- * NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled\r
- * and this function has the Callback parameter omitted.\r
+ * The callback routine should be created according to the information in \ref Group_StreamCallbacks.\r
+ * If the token NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are\r
+ * disabled and this function has the Callback parameter omitted.\r
- * \param Buffer Pointer to the source data buffer to read from.\r
- * \param Length Number of bytes to read for the currently selected endpoint into the buffer.\r
- * \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
+ * \param[in] Buffer Pointer to the source data buffer to read from.\r
+ * \param[in] Length Number of bytes to read for the currently selected endpoint into the buffer.\r
+ * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
* each USB packet, the given stream callback function is executed repeatedly until the endpoint\r
* is ready to accept the next packet, allowing for early aborts of stream transfers.\r
*\r
* each USB packet, the given stream callback function is executed repeatedly until the endpoint\r
* is ready to accept the next packet, allowing for early aborts of stream transfers.\r
*\r
- * The callback routine should be created using the \ref STREAM_CALLBACK() macro. If the token\r
- * NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled\r
- * and this function has the Callback parameter omitted.\r
+ * The callback routine should be created according to the information in \ref Group_StreamCallbacks.\r
+ * If the token NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are\r
+ * disabled and this function has the Callback parameter omitted.\r
- * \param Buffer Pointer to the destination data buffer to write to.\r
- * \param Length Number of bytes to send via the currently selected endpoint.\r
- * \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
+ * \param[out] Buffer Pointer to the destination data buffer to write to.\r
+ * \param[in] Length Number of bytes to send via the currently selected endpoint.\r
+ * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
* each USB packet, the given stream callback function is executed repeatedly until the endpoint\r
* is ready to accept the next packet, allowing for early aborts of stream transfers.\r
*\r
* each USB packet, the given stream callback function is executed repeatedly until the endpoint\r
* is ready to accept the next packet, allowing for early aborts of stream transfers.\r
*\r
- * The callback routine should be created using the \ref STREAM_CALLBACK() macro. If the token\r
- * NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are disabled\r
- * and this function has the Callback parameter omitted.\r
+ * The callback routine should be created according to the information in \ref Group_StreamCallbacks.\r
+ * If the token NO_STREAM_CALLBACKS is passed via the -D option to the compiler, stream callbacks are\r
+ * disabled and this function has the Callback parameter omitted.\r
- * \param Buffer Pointer to the destination data buffer to write to.\r
- * \param Length Number of bytes to send via the currently selected endpoint.\r
- * \param Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
+ * \param[out] Buffer Pointer to the destination data buffer to write to.\r
+ * \param[in] Length Number of bytes to send via the currently selected endpoint.\r
+ * \param[in] Callback Name of a callback routine to call between successive USB packet transfers, NULL if no callback\r
- * \param Buffer Pointer to the source data buffer to read from.\r
- * \param Length Number of bytes to read for the currently selected endpoint into the buffer.\r
+ * \param[in] Buffer Pointer to the source data buffer to read from.\r
+ * \param[in] Length Number of bytes to read for the currently selected endpoint into the buffer.\r
- * \param Buffer Pointer to the source data buffer to read from.\r
- * \param Length Number of bytes to read for the currently selected endpoint into the buffer.\r
+ * \param[in] Buffer Pointer to the source data buffer to read from.\r
+ * \param[in] Length Number of bytes to read for the currently selected endpoint into the buffer.\r
- * \param Buffer Pointer to the destination data buffer to write to.\r
- * \param Length Number of bytes to send via the currently selected endpoint.\r
+ * \param[out] Buffer Pointer to the destination data buffer to write to.\r
+ * \param[in] Length Number of bytes to send via the currently selected endpoint.\r
- * \param Buffer Pointer to the destination data buffer to write to.\r
- * \param Length Number of bytes to send via the currently selected endpoint.\r
+ * \param[out] Buffer Pointer to the destination data buffer to write to.\r
+ * \param[in] Length Number of bytes to send via the currently selected endpoint.\r
#define _ENDPOINT_GET_DOUBLEBANK2(details) _ENDPOINT_GET_DOUBLEBANK3(details)\r
#define _ENDPOINT_GET_DOUBLEBANK3(maxsize, db) db\r
\r
#define _ENDPOINT_GET_DOUBLEBANK2(details) _ENDPOINT_GET_DOUBLEBANK3(details)\r
#define _ENDPOINT_GET_DOUBLEBANK3(maxsize, db) db\r
\r
#define ENDPOINT_DETAILS_EP0 64, true\r
#define ENDPOINT_DETAILS_EP1 256, true\r
#define ENDPOINT_DETAILS_EP2 64, true\r
#define ENDPOINT_DETAILS_EP0 64, true\r
#define ENDPOINT_DETAILS_EP1 256, true\r
#define ENDPOINT_DETAILS_EP2 64, true\r