📄 usbd_if.h
字号:
/*
* description: USB I/F definition
* Maker : Tsuyoshi Yamashita
* Copyright : (C)2003,SEIKO EPSON Corp. All Rights Reserved.
*
*--------------------------------------------------------------------------
* $Revision: 1.5 $ $Date: 2006/08/10 08:11:29 $
*/
#include "SPRDEF.h"
/*
Prevention for double include
*/
#ifndef USBD_IF_H
#define USBD_IF_H
/*=== Define ==============================================================*/
#define USBD_IF_MAX_ENDPOINT (4) /* Endpoint number supported */
#define USBD_IF_EP0_IN (0x80)
#define USBD_IF_EP0_OUT (0x00)
/*--- USBD_IFRemoteWakeup --------------------------------------------------*/
#define USBD_IF_SIGNAL_K (0x00) /* Transmission of K */
#define USBD_IF_SIGNAL_STOP_K (0x01) /* Stop the transmission of K */
/*--- USBD_IFGetOpMode -----------------------------------------------------*/
#define USBD_IF_OPMODE_NORMAL (0x00) /* Normal state */
#define USBD_IF_OPMODE_NONDRIVE (0x01) /* Non-Drive */
#define USBD_IF_OPMODE_DISBITSTUFF (0x02) /* Disable Bitstuffing and NRZI encoding */
#define USBD_IF_OPMODE_PWDOWN (0x03) /* Power-Down */
/*--- USBD_IFChangeTestMode ------------------------------------------------*/
#define USBD_IF_TESTMODE_PACKET (0x01) /* Test_Packet */
#define USBD_IF_TESTMODE_K (0x02) /* Test K */
#define USBD_IF_TESTMODE_J (0x04) /* Test J */
#define USBD_IF_TESTMODE_SE0_NAK (0x08) /* Test SE0NAK */
/*--- USBD_IFGetState ------------------------------------------------------*/
#define USBD_IF_LINESTATE_SE0 (0x00) /* SE0 */
#define USBD_IF_LINESTATE_J (0x01) /* J STATE */
#define USBD_IF_LINESTATE_K (0x02) /* K STATE */
#define USBD_IF_LINESTATE_SE1 (0x03) /* SE1 */
#define USBD_IF_VBUS_LOW (0x00) /* Port state of VBUS = L */
#define USBD_IF_VBUS_HIGH (0x01) /* Port state of VBUS = H */
#define USBD_IF_SPEEDMODE_HS (0x00) /* High Speed Mode */
#define USBD_IF_SPEEDMODE_FS (0x01) /* Full Speed Mode */
#define USBD_IF_SPEEDMODE_LS (0x02) /* Low Speed Mode */
/*--- USBD_IFSetEP0Direction -----------------------------------------------*/
#define USBD_IF_DIR_HOST_TO_DEVICE (0x00) /* OUT direction */
#define USBD_IF_DIR_DEVICE_TO_HOST (0x01) /* IN direction */
#define USBD_IF_TRANTYPE_CONTROL (0x00) /* Control transfer */
#define USBD_IF_TRANTYPE_ISOCHRONOUS (0x01) /* Isochronous transfer */
#define USBD_IF_TRANTYPE_BULK (0x02) /* Bulk transfer */
#define USBD_IF_TRANTYPE_INTERRUPT (0x03) /* Interrupt transfer */
/*--- USBD_IFEP{0/x}SetNotifyPacketXferStatus ----------------------------------*/
#define USBD_IF_XFER_STATUS_OUT_STALL (0x0001) /* STALL's receiving */
#define USBD_IF_XFER_STATUS_IN_STALL (0x0002) /* STALL's reply */
#define USBD_IF_XFER_STATUS_OUT_NAK (0x0004) /* NAK's receiving */
#define USBD_IF_XFER_STATUS_IN_NAK (0x0008) /* NAK's reply */
#define USBD_IF_XFER_STATUS_OUT_ACK (0x0010) /* ACK's receiving */
#define USBD_IF_XFER_STATUS_IN_ACK (0x0020) /* ACK's reply */
#define USBD_IF_XFER_STATUS_OUT_SHORTACK (0x0040) /* ACK reply while OUT Short Pkt */
/*--- USBD_IFRegisterCBRDPDMState ------------------------------------------*/
#define USBD_IF_BUS_SUSPEND (0x0001)
#define USBD_IF_BUS_RESUME (0x0002)
#define USBD_IF_BUS_RESET (0x0004)
#define USBD_IF_BUS_CHIRPCMP (0x0008)
#define USBD_IF_BUS_RESUMECMP (0x0010)
/*--- USBD_IFEPxIsUseDMA ---------------------------------------------------*/
#define USBD_IF_EPX_NOT_USEDMA (0)
#define USBD_IF_EPX_USEDMA (1)
/*--- USBD_IFSetAutoEnShort ------------------------------------------------*/
#define USBD_IF_DMACH0 (0)
#define USBD_IF_DMACH1 (1)
#define USBD_IF_DMACH2 (2)
/*--- USBD_IFSetBulkOnlyMode -----------------------------------------------*/
#define USBD_IF_CBWMODE (1) /* CBW Mode */
#define USBD_IF_CSWMODE (2) /* CSW Mode */
#define USBD_IF_ENABLE (1) /* Enable */
#define USBD_IF_DISABLE (0) /* Disable */
#define USBD_IF_CBW_CMP_EVENT (0x0001) /* CBW's receiving */
#define USBD_IF_CBW_LENERR_EVENT (0x0002) /* CBW Length Error */
#define USBD_IF_CBW_ERR_EVENT (0x0003) /* CBW Error */
#define USBD_IF_CSW_CMP_EVENT (0x0004) /* CSW's sending */
#define USBD_IF_CSW_ERR_EVENT (0x0005) /* CSW Error */
/*--- USBD_IFSetBulkOnlyNakMode --------------------------------------------*/
#define USBD_IF_CBW_ENBAUTONAK (1) /* ForceNAK after CBW receiving */
#define USBD_IF_CBW_DISAUTONAK (0) /* No ForceNAK after CBW receiving */
/*=== Structure ===========================================================*/
/*--- USBD_IFGetState ------------------------------------------------------*/
typedef struct usbd_if_usb_state {
ULONG LineState :2; /* State of LineState */
ULONG VBUS :1; /* State of VBUS */
ULONG Speed :3; /* State of Speed for device */
ULONG SOF :11; /* FrameNumber value of SOF packet */
ULONG Reseved :15; /* Reserved */
} USBD_IF_USB_STATE, *PUSBD_IF_USB_STATE;
/*--- USBD_IFGetSetupPacket ------------------------------------------------*/
typedef struct usbd_if_request_packet {
UCHAR bmRequestType; /* Request Type */
UCHAR bRequest; /* Request */
USHORT wValue; /* wValue */
USHORT wIndex; /* wIndex */
USHORT wLength; /* wLength */
} USBD_IF_REQUEST_PACKET, *PUSBD_IF_REQUEST_PACKET;
/*--- USBD_IFSetEPxConfiguration -------------------------------------------*/
typedef struct usbd_if_ep_information {
UCHAR epAddress; /* Endpoint address */
UCHAR type; /* Transfer type */
USHORT MaxPacketSize; /* Maximum packet size */
} USBD_IF_EP_INFORMATION, *PUSBD_IF_EP_INFORMATION;
/*--- USBD_IFGetEPxStatus --------------------------------------------------*/
typedef struct usbd_if_endpoint_status {
UCHAR epOutShortAck:1; /**/
UCHAR epInAck:1; /**/
UCHAR epOutAck:1; /**/
UCHAR epInNak:1; /**/
UCHAR epOutNak:1; /**/
UCHAR epInStall:1; /**/
UCHAR epOutStall:1; /**/
UCHAR Reserved:1; /**/
} USBD_IF_ENDPOINT_STATUS, *PUSBD_IF_ENDPOINT_STATUS;
/*--- USBD_IFSetFeatureMode ------------------------------------------------*/
typedef struct usbd_if_feature_mode {
ULONG DisableHS :1; /* HS mode is enabled */
ULONG AutoNego :1; /* Automatical negotiation */
ULONG HWSetAddress :1; /* H/W set address */
ULONG ReplyDescriptor :1; /* Reply decriptor */
ULONG Reserved :29;
} USBD_IF_FEATURE_MODE, *PUSBD_IF_FEATURE_MODE;
/*--- USBD_IFSetEPxControlNakMode ------------------------------------------*/
typedef struct usbd_if_nak_mode {
UCHAR AutoForceNakShort :1; /* Receiving is disabled after receiving ShortPkt */
UCHAR AutoForceNak :1; /* Receiving is disabled after receiving Packet */
UCHAR Reserved :6;
} USBD_IF_NAK_MODE,*PUSBD_IF_NAK_MODE;
/*--- API Table -----------------------------------------------------------*/
/*=== Function Prototype ==================================================*/
extern LONG USBD_IFReset(void);
extern LONG USBD_IFOpen(void);
extern LONG USBD_IFClose(void);
extern LONG USBD_IFAttach(void);
extern LONG USBD_IFDetach(void);
extern LONG USBD_IFEnableBusDetect(void);
extern LONG USBD_IFRemoteWakeup(UCHAR SignalState);
extern LONG USBD_IFResetProcess(void);
extern LONG USBD_IFSuspendProcess(void);
extern LONG USBD_IFResumeProcess(void);
extern LONG USBD_IFChangeTestMode(UCHAR testMode);
extern LONG USBD_IFGetAddress(UCHAR *pAddress);
extern LONG USBD_IFSetAddress(UCHAR address);
extern LONG USBD_IFGetOpMode(UCHAR *pOpMode);
extern LONG USBD_IFSetOpMode(UCHAR opMode);
extern LONG USBD_IFGetState(USBD_IF_USB_STATE *pUsbState);
extern LONG USBD_IFGetSetupPacket(PUSBD_IF_REQUEST_PACKET pRequestPacket);
extern LONG USBD_IFGetEP0Direction(UCHAR *direction);
extern LONG USBD_IFSetEP0Direction(UCHAR direction);
extern LONG USBD_IFSetEPxConfiguration(UCHAR number,const PUSBD_IF_EP_INFORMATION pInformation);
extern LONG USBD_IFGetEPxStatus(UCHAR number,PUSBD_IF_ENDPOINT_STATUS pEpStatus);
extern LONG USBD_IFClearEPxStatus(UCHAR number,PUSBD_IF_ENDPOINT_STATUS pEpStatus);
extern LONG USBD_IFEPxEnable(UCHAR number,UCHAR enable);
extern LONG USBD_IFGetEPxShortPktEnable(UCHAR number,UCHAR *enable);
extern LONG USBD_IFSetEPxShortPktEnable(UCHAR number,UCHAR enable,UCHAR forceNAK,UCHAR nakEnable);
extern LONG USBD_IFGetEPxForceNakEnable(UCHAR number,UCHAR *enable);
extern LONG USBD_IFSetEPxForceNakEnable(UCHAR number,UCHAR enable);
extern LONG USBD_IFSetEPxForceStallEnable(UCHAR number,UCHAR enable);
extern LONG USBD_IFGetEPxForceStallEnable(UCHAR number,UCHAR *enable);
extern LONG USBD_IFGetDataToggle(UCHAR number,UCHAR *toggle);
extern LONG USBD_IFSetDataToggle(UCHAR number,UCHAR toggle);
extern LONG USBD_IFSafeSetDataToggle(UCHAR number,UCHAR toggle);
extern LONG USBD_IFEP0GetNotifyPacketXferStatus(USHORT *statusType);
extern LONG USBD_IFEP0SetNotifyPacketXferStatus(USHORT statusType);
extern LONG USBD_IFEPxGetNotifyPacketXferStatus(UCHAR number,USHORT *statusType);
extern LONG USBD_IFEPxSetNotifyPacketXferStatus(UCHAR number,USHORT statusType);
extern LONG USBD_IFEPxIsUseDMA(UCHAR number,UCHAR *result);
extern LONG USBD_IFSetAutoEnShort(UCHAR dmaCh,UCHAR enable);
extern LONG USBD_IFRegisterCBRBusChange(const CALLBACK_PROC pfnVBusChanged);
extern LONG USBD_IFUnregisterCBRBusChange(const CALLBACK_PROC pfnVBusChanged);
extern LONG USBD_IFRegisterCBRDPDMState(const CALLBACK_PROC pfnDPDMState);
extern LONG USBD_IFUnregisterCBRDPDMState(const CALLBACK_PROC pfnDPDMState);
extern LONG USBD_IFRegisterCBRReceiveSOF(const CALLBACK_PROC pfnReceiveSOF);
extern LONG USBD_IFUnregisterCBRReceiveSOF(const CALLBACK_PROC pfnReceiveSOF);
extern LONG USBD_IFRegisterCBRReceiveSetup(const CALLBACK_PROC pfnReceiveSetup);
extern LONG USBD_IFUnregisterCBRReceiveSetup(const CALLBACK_PROC pfnReceiveSetup);
extern LONG USBD_IFRegisterCBREP0PacketXferStatus(const CALLBACK_PROC pfnPacketXferStatus);
extern LONG USBD_IFUnregisterCBREP0PacketXferStatus(const CALLBACK_PROC pfnPacketXferStatus);
extern LONG USBD_IFRegisterCBREPxPacketXferStatus(const CALLBACK_PROC pfnPacketXferStatus);
extern LONG USBD_IFUnregisterCBREPxPacketXferStatus(const CALLBACK_PROC pfnPacketXferStatus);
extern LONG USBD_IFGetPowerMode(UCHAR *mode);
extern LONG USBD_IFGetFeatureMode(PUSBD_IF_FEATURE_MODE pFeatureMode);
extern LONG USBD_IFSetFeatureMode(const PUSBD_IF_FEATURE_MODE pFeatureMode);
extern LONG USBD_IFSetEPxDataSize(USHORT *epxFifoSize,UCHAR num);
extern LONG USBD_IFSetEPxPayloadSize(UCHAR number,USHORT payload,UCHAR trancnt);
extern LONG USBD_IFSetReplyDataSize(USHORT size);
extern LONG USBD_IFSetReplyData(UCHAR *ptr,USHORT offset,USHORT count);
extern LONG USBD_IFSendReplyDescriptor(USHORT offset,USHORT count);
extern LONG USBD_IFGetEPxControlNakMode(UCHAR number,PUSBD_IF_NAK_MODE pNakMode);
extern LONG USBD_IFSetEPxControlNakMode(UCHAR number,const PUSBD_IF_NAK_MODE pNakMode);
extern LONG USBD_IFSetEPxAutoEnShort(UCHAR number,UCHAR AutoEnShort);
extern LONG USBD_IFSetEPxStall(void);
extern LONG USBD_IFSetEPxNak(void);
/* BulkOnly Support */
extern LONG USBD_IFSetBulkOnlyEndpoint(UCHAR epCBW,UCHAR epCSW);
extern LONG USBD_IFSetBulkOnlyMode(UCHAR mode,UCHAR enable);
extern LONG USBD_IFSetBulkOnlyNakMode(UCHAR mode);
extern LONG USBD_IFGetBulkOnlyCBW(UCHAR *pCBW);
extern LONG USBD_IFSetBulkOnlyCSW(UCHAR *pCSW);
extern LONG USBD_IFRegisterCBRBulkOnlyEvent(const CALLBACK_PROC pfnCallback);
extern LONG USBD_IFUnregisterCBRBulkOnlyEvent(const CALLBACK_PROC pfnCallback);
/* End of BulkOnly Support */
/* Alarm Support */
extern LONG USBD_IFSetAlarmEndpoint(USHORT inEndpoints,USHORT inIsoEndpoints,USHORT outEndpoints,USHORT outIsoEndpoints);
extern LONG USBD_IFGetAlarmEndpoint(USHORT *inEndpoints,USHORT *inIsoEndpoints,USHORT *outEndpoints,USHORT *outIsoEndpoints);
extern LONG USBD_IFGetAlarmStatus(USHORT *inEndpoints,USHORT *outEndpoints);
extern LONG USBD_IFClearAlarmStatus(USHORT inEndpoints,USHORT outEndpoints);
extern LONG USBD_IFSetAlarmEvent(USHORT inEndpoints,USHORT outEndpoints);
extern LONG USBD_IFGetAlarmEvent(USHORT *inEndpoints,USHORT *outEndpoints);
extern LONG USBD_IFRegisterCBRAlarmEndpointEvent(const CALLBACK_PROC pfnCallback);
extern LONG USBD_IFUnregisterCBRAlarmEndpointEvent(const CALLBACK_PROC pfnCallback);
/* End of Alarm Support */
extern LONG USBD_IFRegisterCBRReplyDescCmp(const CALLBACK_PROC pfnReplyDescCmp);
extern LONG USBD_IFUnregisterCBRReplyDescCmp(const CALLBACK_PROC pfnReplyDescCmp);
extern LONG USBD_IFRegisterCBRSetAddressCmp(const CALLBACK_PROC pfnSetAddressCmp);
extern LONG USBD_IFUnregisterCBRSetAddressCmp(const CALLBACK_PROC pfnSetAddressCmp);
extern void USBD_IFInterruptProc(UCHAR *deviceIntEnb,UCHAR *sieIntEnb,UCHAR *cpuIntEnb,UCHAR *fifoIntEnb);
#endif /* USBD_IF_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -