mirror of
https://github.com/hathach/tinyusb.git
synced 2025-04-15 20:42:23 +00:00
457 lines
22 KiB
C
457 lines
22 KiB
C
/***********************************************************************
|
|
* $Id:: mw_usbd_hw.h 202 2011-06-12 21:50:01Z usb06052 $
|
|
*
|
|
* Project: USB device ROM Stack
|
|
*
|
|
* Description:
|
|
* USB Hardware Function prototypes.
|
|
*
|
|
***********************************************************************
|
|
* Copyright(C) 2011, NXP Semiconductor
|
|
* All rights reserved.
|
|
*
|
|
* Software that is described herein is for illustrative purposes only
|
|
* which provides customers with programming information regarding the
|
|
* products. This software is supplied "AS IS" without any warranties.
|
|
* NXP Semiconductors assumes no responsibility or liability for the
|
|
* use of the software, conveys no license or title under any patent,
|
|
* copyright, or mask work right to the product. NXP Semiconductors
|
|
* reserves the right to make changes in the software without
|
|
* notification. NXP Semiconductors also make no representation or
|
|
* warranty that such application will be suitable for the specified
|
|
* use without further testing or modification.
|
|
**********************************************************************/
|
|
#ifndef __USBHW_H__
|
|
#define __USBHW_H__
|
|
|
|
#include "error.h"
|
|
#include "mw_usbd.h"
|
|
#include "mw_usbd_core.h"
|
|
|
|
/** \file
|
|
* \brief USB Hardware Function prototypes.
|
|
*
|
|
* Definition of functions exported by ROM based Device Controller Driver (DCD).
|
|
*
|
|
*/
|
|
|
|
/** \ingroup Group_USBD
|
|
* @defgroup USBD_HW USB Device Controller Driver
|
|
* \section Sec_HWModDescription Module Description
|
|
* The Device Controller Driver Layer implements the routines to deal directly with the hardware.
|
|
*/
|
|
|
|
/** \ingroup USBD_HW
|
|
* USB Endpoint/class handler Callback Events.
|
|
*
|
|
*/
|
|
enum USBD_EVENT_T {
|
|
USB_EVT_SETUP =1, /**< 1 Setup Packet received */
|
|
USB_EVT_OUT, /**< 2 OUT Packet received */
|
|
USB_EVT_IN, /**< 3 IN Packet sent */
|
|
USB_EVT_OUT_NAK, /**< 4 OUT Packet - Not Acknowledged */
|
|
USB_EVT_IN_NAK, /**< 5 IN Packet - Not Acknowledged */
|
|
USB_EVT_OUT_STALL, /**< 6 OUT Packet - Stalled */
|
|
USB_EVT_IN_STALL, /**< 7 IN Packet - Stalled */
|
|
USB_EVT_OUT_DMA_EOT, /**< 8 DMA OUT EP - End of Transfer */
|
|
USB_EVT_IN_DMA_EOT, /**< 9 DMA IN EP - End of Transfer */
|
|
USB_EVT_OUT_DMA_NDR, /**< 10 DMA OUT EP - New Descriptor Request */
|
|
USB_EVT_IN_DMA_NDR, /**< 11 DMA IN EP - New Descriptor Request */
|
|
USB_EVT_OUT_DMA_ERR, /**< 12 DMA OUT EP - Error */
|
|
USB_EVT_IN_DMA_ERR, /**< 13 DMA IN EP - Error */
|
|
USB_EVT_RESET, /**< 14 Reset event recieved */
|
|
USB_EVT_SOF, /**< 15 Start of Frame event */
|
|
USB_EVT_DEV_STATE, /**< 16 Device status events */
|
|
USB_EVT_DEV_ERROR /**< 17 Device error events */
|
|
};
|
|
|
|
/**
|
|
* \brief Hardware API functions structure.
|
|
* \ingroup USBD_HW
|
|
*
|
|
* This module exposes functions which interact directly with USB device controller hardware.
|
|
*
|
|
*/
|
|
typedef struct USBD_HW_API
|
|
{
|
|
/** \fn uint32_t GetMemSize(USBD_API_INIT_PARAM_T* param)
|
|
* Function to determine the memory required by the USB device stack's DCD and core layers.
|
|
*
|
|
* This fuction is called by application layer before calling pUsbApi->hw->Init(), to allocate memory used
|
|
* by DCD and core layers. The application should allocate the memory which is accessible by USB
|
|
* controller/DMA controller.
|
|
* \note Some memory areas are not accessible by all bus masters.
|
|
*
|
|
* \param[in] param Structure containing USB device stack initialization parameters.
|
|
* \return Returns the required memory size in bytes.
|
|
*/
|
|
uint32_t (*GetMemSize)(USBD_API_INIT_PARAM_T* param);
|
|
|
|
/** \fn ErrorCode_t Init(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param)
|
|
* Function to initialize USB device stack's DCD and core layers.
|
|
*
|
|
* This function is called by application layer to initialize USB hardware and core layers.
|
|
* On successful initialization the function returns a handle to USB device stack which should
|
|
* be passed to the rest of the functions.
|
|
*
|
|
* \param[in,out] phUsb Pointer to the USB device stack handle of type USBD_HANDLE_T.
|
|
* \param[in] param Structure containing USB device stack initialization parameters.
|
|
* \return Returns \ref ErrorCode_t type to indicate success or error condition.
|
|
* \retval LPC_OK(0) On success
|
|
* \retval ERR_USBD_BAD_MEM_BUF(0x0004000b) When insufficient memory buffer is passed or memory
|
|
* is not aligned on 2048 boundary.
|
|
*/
|
|
ErrorCode_t (*Init)(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param);
|
|
|
|
/** \fn void Connect(USBD_HANDLE_T hUsb, uint32_t con)
|
|
* Function to make USB device visible/invisible on the USB bus.
|
|
*
|
|
* This function is called after the USB initialization. This function uses the soft connect
|
|
* feature to make the device visible on the USB bus. This function is called only after the
|
|
* application is ready to handle the USB data. The enumeration process is started by the
|
|
* host after the device detection. The driver handles the enumeration process according to
|
|
* the USB descriptors passed in the USB initialization function.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] con States whether to connect (1) or to disconnect (0).
|
|
* \return Nothing.
|
|
*/
|
|
void (*Connect)(USBD_HANDLE_T hUsb, uint32_t con);
|
|
|
|
/** \fn void ISR(USBD_HANDLE_T hUsb)
|
|
* Function to USB device controller interrupt events.
|
|
*
|
|
* When the user application is active the interrupt handlers are mapped in the user flash
|
|
* space. The user application must provide an interrupt handler for the USB interrupt and
|
|
* call this function in the interrupt handler routine. The driver interrupt handler takes
|
|
* appropriate action according to the data received on the USB bus.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \return Nothing.
|
|
*/
|
|
void (*ISR)(USBD_HANDLE_T hUsb);
|
|
|
|
/** \fn void Reset(USBD_HANDLE_T hUsb)
|
|
* Function to Reset USB device stack and hardware controller.
|
|
*
|
|
* Reset USB device stack and hardware controller. Disables all endpoints except EP0.
|
|
* Clears all pending interrupts and resets endpoint transfer queues.
|
|
* This function is called internally by pUsbApi->hw->init() and from reset event.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \return Nothing.
|
|
*/
|
|
void (*Reset)(USBD_HANDLE_T hUsb);
|
|
|
|
/** \fn void ForceFullSpeed(USBD_HANDLE_T hUsb, uint32_t cfg)
|
|
* Function to force high speed USB device to operate in full speed mode.
|
|
*
|
|
* This function is useful for testing the behaviour of current device when connected
|
|
* to a full speed only hosts.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] cfg When 1 - set force full-speed or
|
|
* 0 - clear force full-speed.
|
|
* \return Nothing.
|
|
*/
|
|
void (*ForceFullSpeed )(USBD_HANDLE_T hUsb, uint32_t cfg);
|
|
|
|
/** \fn void WakeUpCfg(USBD_HANDLE_T hUsb, uint32_t cfg)
|
|
* Function to configure USB device controller to wakeup host on remote events.
|
|
*
|
|
* This function is called by application layer to configure the USB device controller
|
|
* to wakeup on remote events. It is recommended to call this function from users's
|
|
* USB_WakeUpCfg() callback routine registered with stack.
|
|
* \note User's USB_WakeUpCfg() is registered with stack by setting the USB_WakeUpCfg member
|
|
* of USBD_API_INIT_PARAM_T structure before calling pUsbApi->hw->Init() routine.
|
|
* Certain USB device controllers needed to keep some clocks always on to generate
|
|
* resume signaling through pUsbApi->hw->WakeUp(). This hook is provided to support
|
|
* such controllers. In most controllers cases this is an empty routine.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] cfg When 1 - Configure controller to wake on remote events or
|
|
* 0 - Configure controller not to wake on remote events.
|
|
* \return Nothing.
|
|
*/
|
|
void (*WakeUpCfg)(USBD_HANDLE_T hUsb, uint32_t cfg);
|
|
|
|
/** \fn void SetAddress(USBD_HANDLE_T hUsb, uint32_t adr)
|
|
* Function to set USB address assigned by host in device controller hardware.
|
|
*
|
|
* This function is called automatically when USB_REQUEST_SET_ADDRESS request is received
|
|
* by the stack from USB host.
|
|
* This interface is provided to users to invoke this function in other scenarios which are not
|
|
* handle by current stack. In most user applications this function is not called directly.
|
|
* Also this function can be used by users who are selectively modifying the USB device stack's
|
|
* standard handlers through callback interface exposed by the stack.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] adr USB bus Address to which the device controller should respond. Usually
|
|
* assigned by the USB host.
|
|
* \return Nothing.
|
|
*/
|
|
void (*SetAddress)(USBD_HANDLE_T hUsb, uint32_t adr);
|
|
|
|
/** \fn void Configure(USBD_HANDLE_T hUsb, uint32_t cfg)
|
|
* Function to configure device controller hardware with selected configuration.
|
|
*
|
|
* This function is called automatically when USB_REQUEST_SET_CONFIGURATION request is received
|
|
* by the stack from USB host.
|
|
* This interface is provided to users to invoke this function in other scenarios which are not
|
|
* handle by current stack. In most user applications this function is not called directly.
|
|
* Also this function can be used by users who are selectively modifying the USB device stack's
|
|
* standard handlers through callback interface exposed by the stack.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] cfg Configuration index.
|
|
* \return Nothing.
|
|
*/
|
|
void (*Configure)(USBD_HANDLE_T hUsb, uint32_t cfg);
|
|
|
|
/** \fn void ConfigEP(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD)
|
|
* Function to configure USB Endpoint according to descriptor.
|
|
*
|
|
* This function is called automatically when USB_REQUEST_SET_CONFIGURATION request is received
|
|
* by the stack from USB host. All the endpoints associated with the selected configuration
|
|
* are configured.
|
|
* This interface is provided to users to invoke this function in other scenarios which are not
|
|
* handle by current stack. In most user applications this function is not called directly.
|
|
* Also this function can be used by users who are selectively modifying the USB device stack's
|
|
* standard handlers through callback interface exposed by the stack.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] pEPD Endpoint descriptor structure defined in USB 2.0 specification.
|
|
* \return Nothing.
|
|
*/
|
|
void (*ConfigEP)(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD);
|
|
|
|
/** \fn void DirCtrlEP(USBD_HANDLE_T hUsb, uint32_t dir)
|
|
* Function to set firection for USB control endpoint EP0.
|
|
*
|
|
* This function is called automatically by the stack on need bassis.
|
|
* This interface is provided to users to invoke this function in other scenarios which are not
|
|
* handle by current stack. In most user applications this function is not called directly.
|
|
* Also this function can be used by users who are selectively modifying the USB device stack's
|
|
* standard handlers through callback interface exposed by the stack.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] cfg When 1 - Set EP0 in IN transfer mode
|
|
* 0 - Set EP0 in OUT transfer mode
|
|
* \return Nothing.
|
|
*/
|
|
void (*DirCtrlEP)(USBD_HANDLE_T hUsb, uint32_t dir);
|
|
|
|
/** \fn void EnableEP(USBD_HANDLE_T hUsb, uint32_t EPNum)
|
|
* Function to enable selected USB endpoint.
|
|
*
|
|
* This function enables interrupts on selected endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number.
|
|
* \return Nothing.
|
|
*/
|
|
void (*EnableEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
|
|
/** \fn void DisableEP(USBD_HANDLE_T hUsb, uint32_t EPNum)
|
|
* Function to disable selected USB endpoint.
|
|
*
|
|
* This function disables interrupts on selected endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number.
|
|
* \return Nothing.
|
|
*/
|
|
void (*DisableEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
|
|
/** \fn void ResetEP(USBD_HANDLE_T hUsb, uint32_t EPNum)
|
|
* Function to reset selected USB endpoint.
|
|
*
|
|
* This function flushes the endpoint buffers and resets data toggle logic.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number.
|
|
* \return Nothing.
|
|
*/
|
|
void (*ResetEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
|
|
/** \fn void SetStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum)
|
|
* Function to STALL selected USB endpoint.
|
|
*
|
|
* Generates STALL signalling for requested endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number.
|
|
* \return Nothing.
|
|
*/
|
|
void (*SetStallEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
|
|
/** \fn void ClrStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum)
|
|
* Function to clear STALL state for the requested endpoint.
|
|
*
|
|
* This function clears STALL state for the requested endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number.
|
|
* \return Nothing.
|
|
*/
|
|
void (*ClrStallEP)(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
|
|
/** \fn ErrorCode_t SetTestMode(USBD_HANDLE_T hUsb, uint8_t mode)
|
|
* Function to set high speed USB device controller in requested test mode.
|
|
*
|
|
* USB-IF requires the high speed device to be put in various test modes
|
|
* for electrical testing. This USB device stack calls this function whenever
|
|
* it receives USB_REQUEST_CLEAR_FEATURE request for USB_FEATURE_TEST_MODE.
|
|
* Users can put the device in test mode by directly calling this function.
|
|
* Returns ERR_USBD_INVALID_REQ when device controller is full-speed only.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] mode Test mode defined in USB 2.0 electrical testing specification.
|
|
* \return Returns \ref ErrorCode_t type to indicate success or error condition.
|
|
* \retval LPC_OK(0) - On success
|
|
* \retval ERR_USBD_INVALID_REQ(0x00040001) - Invalid test mode or
|
|
* Device controller is full-speed only.
|
|
*/
|
|
ErrorCode_t (*SetTestMode)(USBD_HANDLE_T hUsb, uint8_t mode);
|
|
|
|
/** \fn uint32_t ReadEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData)
|
|
* Function to read data received on the requested endpoint.
|
|
*
|
|
* This function is called by USB stack and the application layer to read the data
|
|
* received on the requested endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number.
|
|
* \param[in,out] pData Pointer to the data buffer where data is to be copied.
|
|
* \return Returns the number of bytes copied to the buffer.
|
|
*/
|
|
uint32_t (*ReadEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData);
|
|
|
|
/** \fn uint32_t ReadReqEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len)
|
|
* Function to queue read request on the specified endpoint.
|
|
*
|
|
* This function is called by USB stack and the application layer to queue a read request
|
|
* on the specified endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number.
|
|
* \param[in,out] pData Pointer to the data buffer where data is to be copied. This buffer
|
|
* address should be accessible by USB DMA master.
|
|
* \param[in] len Length of the buffer passed.
|
|
* \return Returns the length of the requested buffer.
|
|
*/
|
|
uint32_t (*ReadReqEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len);
|
|
|
|
/** \fn uint32_t ReadSetupPkt(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t *pData)
|
|
* Function to read setup packet data received on the requested endpoint.
|
|
*
|
|
* This function is called by USB stack and the application layer to read setup packet data
|
|
* received on the requested endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP0_IN is represented by 0x80 number.
|
|
* \param[in,out] pData Pointer to the data buffer where data is to be copied.
|
|
* \return Returns the number of bytes copied to the buffer.
|
|
*/
|
|
uint32_t (*ReadSetupPkt)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t *pData);
|
|
|
|
/** \fn uint32_t WriteEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt)
|
|
* Function to write data to be sent on the requested endpoint.
|
|
*
|
|
* This function is called by USB stack and the application layer to send data
|
|
* on the requested endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number as per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number.
|
|
* \param[in] pData Pointer to the data buffer from where data is to be copied.
|
|
* \param[in] cnt Number of bytes to write.
|
|
* \return Returns the number of bytes written.
|
|
*/
|
|
uint32_t (*WriteEP)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt);
|
|
|
|
/** \fn void WakeUp(USBD_HANDLE_T hUsb)
|
|
* Function to generate resume signaling on bus for remote host wakeup.
|
|
*
|
|
* This function is called by application layer to remotely wakeup host controller
|
|
* when system is in suspend state. Application should indicate this remote wakeup
|
|
* capability by setting USB_CONFIG_REMOTE_WAKEUP in bmAttributes of Configuration
|
|
* Descriptor. Also this routine will generate resume signalling only if host
|
|
* enables USB_FEATURE_REMOTE_WAKEUP by sending SET_FEATURE request before suspending
|
|
* the bus.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \return Nothing.
|
|
*/
|
|
void (*WakeUp)(USBD_HANDLE_T hUsb);
|
|
|
|
/** \fn void EnableEP(USBD_HANDLE_T hUsb, uint32_t EPNum)
|
|
* Function to enable/disable selected USB event.
|
|
*
|
|
* This function enables interrupts on selected endpoint.
|
|
*
|
|
* \param[in] hUsb Handle to the USB device stack.
|
|
* \param[in] EPNum Endpoint number corresponding to the eventas per USB specification.
|
|
* ie. An EP1_IN is represented by 0x81 number. For device events
|
|
* set this param to 0x0.
|
|
* \param[in] event Type of endpoint event. See \ref USBD_EVENT_T for more details.
|
|
* \param[in] enable 1 - enable event, 0 - disable event.
|
|
* \return Returns \ref ErrorCode_t type to indicate success or error condition.
|
|
* \retval LPC_OK(0) - On success
|
|
* \retval ERR_USBD_INVALID_REQ(0x00040001) - Invalid event type.
|
|
*/
|
|
ErrorCode_t (*EnableEvent)(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type,
|
|
uint32_t enable);
|
|
|
|
} USBD_HW_API_T;
|
|
|
|
/*-----------------------------------------------------------------------------
|
|
* Private functions & structures prototypes used by stack internally
|
|
*-----------------------------------------------------------------------------*/
|
|
/** @cond DIRECT_API */
|
|
|
|
/* Driver functions */
|
|
uint32_t hwUSB_GetMemSize(USBD_API_INIT_PARAM_T* param);
|
|
ErrorCode_t hwUSB_Init(USBD_HANDLE_T* phUsb, USB_CORE_DESCS_T* pDesc, USBD_API_INIT_PARAM_T* param);
|
|
void hwUSB_Connect(USBD_HANDLE_T hUsb, uint32_t con);
|
|
void hwUSB_ISR(USBD_HANDLE_T hUsb);
|
|
|
|
/* USB Hardware Functions */
|
|
extern void hwUSB_Reset(USBD_HANDLE_T hUsb);
|
|
extern void hwUSB_ForceFullSpeed (USBD_HANDLE_T hUsb, uint32_t con);
|
|
extern void hwUSB_WakeUpCfg(USBD_HANDLE_T hUsb, uint32_t cfg);
|
|
extern void hwUSB_SetAddress(USBD_HANDLE_T hUsb, uint32_t adr);
|
|
extern void hwUSB_Configure(USBD_HANDLE_T hUsb, uint32_t cfg);
|
|
extern void hwUSB_ConfigEP(USBD_HANDLE_T hUsb, USB_ENDPOINT_DESCRIPTOR *pEPD);
|
|
extern void hwUSB_DirCtrlEP(USBD_HANDLE_T hUsb, uint32_t dir);
|
|
extern void hwUSB_EnableEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
extern void hwUSB_DisableEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
extern void hwUSB_ResetEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
extern void hwUSB_SetStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
extern void hwUSB_ClrStallEP(USBD_HANDLE_T hUsb, uint32_t EPNum);
|
|
extern ErrorCode_t hwUSB_SetTestMode(USBD_HANDLE_T hUsb, uint8_t mode); /* for FS only devices return ERR_USBD_INVALID_REQ */
|
|
extern uint32_t hwUSB_ReadEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData);
|
|
extern uint32_t hwUSB_ReadReqEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t len);
|
|
extern uint32_t hwUSB_ReadSetupPkt(USBD_HANDLE_T hUsb, uint32_t, uint32_t *);
|
|
extern uint32_t hwUSB_WriteEP(USBD_HANDLE_T hUsb, uint32_t EPNum, uint8_t *pData, uint32_t cnt);
|
|
|
|
/* generate resume signalling on the bus */
|
|
extern void hwUSB_WakeUp(USBD_HANDLE_T hUsb);
|
|
extern ErrorCode_t hwUSB_EnableEvent(USBD_HANDLE_T hUsb, uint32_t EPNum, uint32_t event_type, uint32_t enable);
|
|
/* TODO implement following routines
|
|
- function to program TD and queue them to ep Qh
|
|
*/
|
|
|
|
/** @endcond */
|
|
|
|
|
|
#endif /* __USBHW_H__ */
|