⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbd_if.h

📁 epson usb2.0 控制芯片 S1R72V05 固件程序。
💻 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 + -