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

📄 usbh_usbd_api.h

📁 epson usb2.0 控制芯片 S1R72V05 固件程序。
💻 H
📖 第 1 页 / 共 2 页
字号:
/*****************************************
 * Macro function
 *****************************************/
#define USBH_USBD_SetPipeType(pipetype, epaddr, devaddr, dir) \
		((ULONG)((pipetype & 0x03) << 30))|((ULONG)((epaddr & 0xff) << 15))|((ULONG)((devaddr & 0xff) << 8)) | ((ULONG)(dir & 0xff))
#define USBH_USBD_SetINToggle(dev, ep, in) \
		((dev)->toggle[0] = ((dev)->toggle[0] & ~(1 << (ep))) | ((in) << (ep)));
#define USBH_USBD_SetOUTToggle(dev, ep, in) \
		((dev)->toggle[1] = ((dev)->toggle[1] & ~(1 << (ep))) | ((in) << (ep)));

/*****************************************
 * Call back function definition
 *****************************************/
typedef void ( *USBH_USBD_CALLBACK )( unsigned long message, unsigned long param0, void *pParam );


/*****************************************
 * Enumeration type definition
 *****************************************/
 typedef enum tagUSBH_USBD_MODULE {
	MSG_USBH_USBD_INIT		= 0x0001,
	MSG_USBH_USBD_CLEANUP,
	MSG_USBH_USBD_SUBMITURB,
	MSG_USBH_USBD_UNLINKURB,
	MSG_USBH_USBD_ENTRYCLASS,
	MSG_USBH_USBD_SETCONFIGURATION,
	MSG_USBH_USBD_RESET,
	MSG_USBH_USBD_PORTSUSPEND,
	MSG_USBH_USBD_PORTRESUME
} USBH_USBD_MODULE;

/* URB status */
typedef enum tagUSBH_USBD_URBSTS{
	URBSTS_SUCCESS,
	URBSTS_OVERFLOW,
	URBSTS_REMOTEIO,
	URBSTS_PIPE,
	URBSTS_INPROGRESS,
	URBSTS_PROTO,
	URBSTS_CONNRESET,
	URBSTS_NOENT
}USBH_USBD_URBSTS;

typedef enum tagUSBH_USBD_ENUMDEVSTATE{
	USBH_USBD_USB_STATE_NOTATTACHED,		/* Not attached */
	USBH_USBD_USB_STATE_POWERED,			/* Power on */
	USBH_USBD_USB_STATE_DEFAULT,			/* after USB reset */
	USBH_USBD_USB_STATE_ADDRESSED,			/* After Set Address request */
	USBH_USBD_USB_STATE_CONFIGURED,			/* After Set Configuration request ( besides 0 ) */
	USBH_USBD_USB_STATE_SUSPENDED			/* USB on suspension */
}USBH_USBD_ENUMDEVSTATE;

typedef enum tagUSBH_USBD_ENUMDEVSPEED{
	USBH_USBD_USB_SPEED_UNKNOWN,			/* Not connect */
	USBH_USBD_USB_SPEED_LOW,				/* Low-Speed */
	USBH_USBD_USB_SPEED_FULL,				/* Full-Speed */
	USBH_USBD_USB_SPEED_HIGH				/* High-Speed */
}USBH_USBD_ENUMDEVSPEED;

typedef enum tagUSBH_USBD_ENUMERATESTATE{
	USBH_USBD_ENUMERATE_RGETDESCRIPTER,		/* GetDescripter */
	USBH_USBD_ENUMERATE_RSETADDRESS,		/* SetAddress 0 ( default address ) -- 127 */
	USBH_USBD_ENUMERATE_RGETDESCRIPER,		/* GetDescriptor */
	USBH_USBD_ENUMERATE_RINTTERRUPTIN,		/* InterruptIN */
	USBH_USBD_ENUMERATE_RPORTPOWER,			/* SetPortFeature(PORT_POWER) */
	USBH_USBD_ENUMERATE_GETDESCRIPTER,		/* GetDescripter */
	USBH_USBD_ENUMERATE_SETADDRESS,			/* SetAddress 0 ( default address ) -- 127 */
	USBH_USBD_ENUMERATE_GETDESCRIPER		/* GetDescriptor */
}USBH_USBD_ENUMERATESTATE;


/*****************************************
 * Structure definition
 *****************************************/

typedef struct tagUSBH_USBD_EPTBL {
	USB_DESC_ENDPOINT	EndP;				/* Endpoint Descriptor */
	struct tagUSBH_USBD_EPTBL	*Next;		/* Pointer to next list */
} USBH_USBD_EPTBL;

typedef struct tagUSBH_USBD_IFTBL{
	USB_DESC_INTERFACE	InterF;				/* Interface Descriptor */
	USBH_USBD_EPTBL		*EPTbl;				/* Endpoint Descriptor structure */
	struct tagUSBH_USBD_IFTBL	*Next;		/* Pointer to next list */
} USBH_USBD_IFTBL;

typedef struct tagUSBH_USBD_DEVCTL{
	USB_DESC_DEVICE			Dev;			/* DEVICE Descriptor */
	USB_DESC_CONFIG			Config;			/* Configuration Descriptor */
	USB_DESC_HUB			Hub;			/* Hub Descriptor */
	USBH_USBD_IFTBL			*InterTbl;		/* Interface Descriptor structure */
}USBH_USBD_DEVCTL;

typedef struct tagUSBH_USBD_USBDEV{
	void *pHCPriv;							/* Private area for Host Controller use ( out ) */
											/* Assign memory area for management use of USB device here */
	void *pConfigDesc;						/* Pointer to Configuration Descriptor ( in ) */
	USBH_USBD_ENUMDEVSTATE eState;			/* USB device state ( Address, Configure etc. ) ( in ) */
	USBH_USBD_ENUMDEVSPEED eSpeed;			/* USB device transfer speed ( LS, FS, HS ) ( in ) */
	struct tagUSBH_USBD_USBDEV *psParent;	/* If USB device is not root hub, it is the */
											/* pointer to USB device information structure of parent hub( in ) */
	unsigned short toggle[2];				/* Toggle state of endpoint. Bit position become endpoint number as it is ( in/out ) */
											/* (toggle[0]: IN, toggle[1]: OUT) */
	unsigned short epMaxPacketIn[16];		/* MaxPacketSize of endpoint in direction of IN ( in ) */
	unsigned short epMaxPacketOut[16];		/* MaxPacketSize of endpoint in direction of OUT ( in ) */
	unsigned char devNum;					/* USB device address */
	unsigned char port;						/* Port number of parent which is connected with ( in ) */
}USBH_USBD_USBDEV;

typedef struct tagUSBH_USBD_DEVLIST_HEAD{
	struct tagUSBH_USBD_DEVLIST_HEAD *psNext;	/* Pointer to next list */
	struct tagUSBH_USBD_DEVLIST_HEAD *psPrev;	/* Pointer to front list */
	USBH_USBD_USBDEV	sUsbDev;
	USBH_USBD_DEVCTL	sUsbDes;
	UCHAR	savedEnumState;
	UCHAR	statusChange;						/* Status change data */
	UCHAR	ClassID;							/* Object class ID */
	UCHAR	hubStat;							/* Status change bitmap of hub */
	UCHAR	statRESET;							/* Bit map of the RESET completion port */
}USBH_USBD_DEVLIST_HEAD;

typedef struct tagUSBH_USBD_DEVINFO {
	UCHAR	DevCount;						/* Number of connect devices */
	USBH_USBD_DEVLIST_HEAD	*DevInfo;		/* Device information table */
} USBH_USBD_DEVINFO;

typedef struct tagUSBH_USBD_LIST_HEAD{
	struct tagUSBH_USBD_LIST_HEAD *psNext;	/* Pointer to next list */
	struct tagUSBH_USBD_LIST_HEAD *psPrev;	/* Pointer to front list */
}USBH_USBD_LIST_HEAD;

typedef struct tagUSBH_USBD_USB_ISO_PACKET_DESCRIPTOR{
	unsigned short offset;					/* (io)Offset from pTransBuf */
	unsigned short length;					/* (in)The length in bytes that transfers it */
	unsigned short actual_length;			/* (out)The length in bytes that transferred it actually */
	unsigned short status;					/* (out)Status for each packet */
}USBH_USBD_USB_ISO_PACKET_DESCRIPTOR;

typedef struct tagUSBH_USBD_URB{
	USBH_USBD_LIST_HEAD	slist;				/* Header for list structure use ( out )		 						 */
	void *pHCPriv;							/* Private area for Host Controller use ( out )				 		 */
	struct tagUSBH_USBD_URB *psNext;		/* Pointer to next URB structure ( in )					 			 */
	USBH_USBD_USBDEV *psDev;	 			/* Pointer to USB device information structure ( in )		 		 */
	unsigned long pipe;						/* Pipe information ( in )				 							 */
											/* bit31-30: Transfer type					 						 */
											/*	PIPE_ISOCHRONOUS							 						 */
											/*	PIPE_INTERRUPT							 							 */
											/*	PIPE_CONTROL										 				 */
											/*	PIPE_BULK							 								 */
											/* bit29-24:Reserved											 		 */
											/* bit23-16: EP address ( Direction + EP number )			 		 */
											/* bit15-8: USB device address						 				 */
											/* bit7-0: Direction										 			 */
											/*	 DIR_IN											 					 */
											/*	 DIR_OUT										 					 */
	unsigned short status;					/* URB status ( out )												 */
											/* URBSTS_SUCCESS														 */
											/* URB finish normally												 */
											/* URBSTS_OVERFLOW														 */
											/* Overflow															 */
											/* URBSTS_REMOTEIO														 */
											/* In case of URB_SHORT_NOT_OK is specified in transfer flag,		 */
											/* receive data shorter than length of transfer buffer 				 */
											/* URBSTS_PIPE															 */
											/* Error on pipe ( CRC error, timeout, etc. )						 */
											/* URBSTS_INPROGRESS													 */
											/* On executing														 */
											/* URBSTS_PROTO															 */
											/* Protocol error ( STALL, Complete-split miss )						 */
	unsigned short transFlag;				/* Transfer flag ( in )												 */
											/* URB_SHORT_NOT_OK														 */
											/* Judge short packet receiving as error								 */
											/* URB_ISO_ASAP															 */
											/* Specify start frame in isochronous transfer						 */
											/* URB_ASYNC_UNLINK														 */
											/* Cancel URB with asynchronous										 */
											/* URB_ZERO_PACKET														 */
											/* The last in transfer of OUT direction must be short packet		 */
											/* ( Including zero-length packet )									 */
											/* URB_REQ_DMA															 */
											/* Request DMA transfer												 */
											/* URB_STRG_MODE														 */
											/* Support bulk only transport function of mass storage class		 */
											/* URB_DIRECT_COPY														 */
											/* Direct copy function between USB and IDE							 */
	unsigned char *pSetupPacket;			/* Pointer of SETUP packet data used in Control transfer ( in )		 */
	void *pTransBuf;						/* Pointer of transfer buffer ( in )									 */
	unsigned long transBufLength;			/* Byte length of transfer buffer ( in )								 */
	unsigned long actualLength;				/* Byte length being transfered actually ( out )						 */
	unsigned short errorCount;				/* Number of packet errors ( out ). It is set only in isochronous transfer */
	unsigned short interval;				/* Interval time ( in ). Valid in case of periodic transfer ( isochronous and interrupt ) */
	unsigned short startFrame;				/* Frame Number which begin to transfer is set ( io )				 */
											/* In case of URB_ISO_ASAP is specified in transfer flag on Isochronous transfer */
											/* Set Frame Number to begin transfer								 */
	void (*pfnComplete)(struct tagUSBH_USBD_URB *urb);
											/* Pointer of call back function which is called when URB completed ( in ) */
}USBH_USBD_URB;

/* Parameters between USB task and other tasks */
typedef struct _MSG_USBH_USBD{
	unsigned char  interfaceno;
	unsigned char  classno;
	unsigned char  classid;
	unsigned char  devaddr;
	unsigned char  *psClassid;
	USBH_USBD_URB *psURB;
	USBH_USBD_CALLBACK pfnCallback;
	USBH_USBD_CALLBACK pfnEventCallback;
	USBH_USBD_DEVLIST_HEAD	*DevInfo;
}MSG_USBH_USBD;

/*****************************************
 * Function prototype declaration
 *****************************************/
long USBH_USBD_Init( USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBD_Cleanup( void ) ;
long USBH_USBD_SubmitURB( USBH_USBD_URB *psURB, unsigned char  classid, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBD_UnlinkURB( USBH_USBD_URB *psURB, unsigned char  classid, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBD_SetConfiguration( unsigned char	classid, unsigned char	devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBD_EntryClass( unsigned char  classno, unsigned char  *classid, USBH_USBD_CALLBACK pfnCallback, USBH_USBD_CALLBACK pfnEventCallback ) ;
long USBH_USBD_Reset( unsigned char  classid, unsigned char  devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBD_PortSuspend( unsigned char  classid, unsigned char  devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBD_PortResume( unsigned char  classid, unsigned char  devaddr, USBH_USBD_CALLBACK pfnCallback ) ;

#ifdef __cplusplus
	}
#endif /* cplusplus */

#endif /* USBH_USBD_H */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -