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

📄 usbh_usbds_api.h

📁 epson usb2.0 控制芯片 S1R72V05 固件程序。
💻 H
字号:
/*
 *	description: USBH USBD APIs Definition(global)
 *	Maker	  : Toshiyuki Sakai
 *	Copyright  : (C)2005,SEIKO EPSON Corp. All Rights Reserved.
 */


#ifndef USBH_USBDS_H
#define USBH_USBDS_H

#ifdef __cplusplus
	extern "C" {
#endif /* cplusplus */

#include "usbh_hcd.h"


/*****************************************
 * Define definition
 *****************************************/
#ifdef TST_MODE
#define		STATIC_T
#else
#define		STATIC_T	static
#endif

/* index */
#define	USBH_USBD_DV	(0)
#define	USBH_USBD_IF	(1)
#define	USBH_USBD_EP	(2)

#define	ENUM_EP0		(0x00)		/* EP number for recognition */
#define	ENUM_EP1		(0x81)		/* EP number for root hub use */

/* Device table using status */
#define USBD_ENABLE						(0x01)
#define USBD_DISABLE					(0x00)

/* Standard Feature Selector */
#define SFEA_ENDPOINT_HALT				(0x00)
#define SFEA_DEVICE_REMOTE_WAKEUP		(0x01)
#define SFEA_TEST_MODE					(0x02)

/* Waiting time for power becoming steady from PORT_CONNECTION to request issuing ( over 100ms in specification ) */
/* Adjustment is needed according to action environment and connected device ( Wait by using time is also good )  */
#define MAX_CONNECT_WAIT_COUNT_BEFORE_RESET	(1500)	/* Counter before reset */
#define MAX_CONNECT_WAIT_COUNT_AFTER_RESET	(600)	/* Counter after reset */

#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_PipeToPara(pipe, pipetype, epaddr, devaddr, dir) \
		pipetype = (pipe >> 30) & 0x03; \
		epaddr = (pipe >> 15) & 0xff; \
		devaddr = (pipe >> 8) & 0x7f; \
		dir = pipe & 0xff;

/*****************************************
 * Call back function definition
 *****************************************/


/*****************************************
 * Enumeration type definition
 *****************************************/
typedef	enum tagUSBH_USBD_BREQ_TYPE {
	/* Standard request */
	BREQ_GETSTATUS=0,
	BREQ_CLEARFEATURE,
	BREQ_SETFEATURE,
	BREQ_SETADDRESS,
	BREQ_GETDESCRIPTOR,
	BREQ_RESERVE3,
	BREQ_GETCONFIGURATION,
	BREQ_SETCONFIGURATION,
	BREQ_GETINTERFACE,
	BREQ_SETINTERFACE,
	BREQ_RESERVE4,
	/* Below are class definition request */
	BREQ_GETSTATUS_HUB,
	BREQ_GETSTATUS_PORT,
	BREQ_CLEARFEATURE_HUB,
	BREQ_CLEARFEATURE_PORT,
	BREQ_SETFEATURE_HUB,
	BREQ_SETFEATURE_PORT,
	BREQ_GETDESCRIPTOR_HUB,
	BREQ_CLEAR_TT_BUFFER,
	BREQ_RESET_TT,
	BREQ_GET_TT_STATE,
	BREQ_STOP_TT,
	BREQ_BOMS_RESET,			/* BulkOnlyMassStrage Reset */
	BREQ_GMAXLUN,				/* Get Max LUN */
} USBH_USBD_BREQ_TYPE;

typedef	enum tagUSBH_USBD_MODE {
	USBH_USBD_MODE_INIT=0,
	USBH_USBD_MODE_ENUM,
	USBH_USBD_MODE_DEVDES8,				/* GET DEVICE DESCRIPTOR(Total Length acquisition only) */
	USBH_USBD_MODE_DEVDES,				/* GET DEVICE DESCRIPTOR */
	USBH_USBD_MODE_DEVQDES,				/* GET DEVICE QUALIFIER DESCRIPTOR */
	USBH_USBD_MODE_CFGDES8,				/* GET CONFIGURATION DESCRIPTOR(Total Length acquisition only) */
	USBH_USBD_MODE_CFGDES,				/* GET CONFIGURATION DESCRIPTOR */
	USBH_USBD_MODE_SADDR,				/* SET ADDRESS */
	USBH_USBD_MODE_SCFG,				/* SET CONFIGURATION DESCRIPTOR */
	USBH_USBD_MODE_GHUBDES,				/* GET HUBDESCRIPTOR */
	USBH_USBD_MODE_INTRIN,				/* INTERRUPT IN */
	USBH_USBD_MODE_SPORTPWR,			/* SET PORTFEATURE(PORT_POWER) */
	USBH_USBD_MODE_GSTATUS,				/* GET STATUS */
	USBH_USBD_MODE_PR_GSTATUS,			/* GET STATUS(PORT_RESUME) */
	USBH_USBD_MODE_PR_CPORTSUS,			/* CLEAR PORTFEATURE(PORT_RESUME) */
	USBH_USBD_MODE_CPORTCON,			/* CLEAR PORTFEATURE(C_PORT_CONNECTION) */
	USBH_USBD_MODE_SPORTRES,			/* SET PORTFEATURE(C_PORT_RESET) */
	USBH_USBD_MODE_CPORTRES,			/* CLEAR PORTFEATURE(C_PORT_RESET) */
	USBH_USBD_MODE_DEV_ENUM,			/* DEVICE ENUMERATION */
	USBH_USBD_MODE_CPORTENA,			/* CLEAR PORTFEATURE(C_PORT_ENABLE) */
	USBH_USBD_MODE_GSTATUSHUB,			/* GET STATUS(HUB) */
	USBH_USBD_MODE_CHANGE_VBUSERRCON,	/* V-BUS ERROR(occurrence)	*/
	USBH_USBD_MODE_CHANGE_VBUSERRCCMP,	/* V-BUS ERROR(completion) */
	USBH_USBD_MODE_CHANGE_VBUSERRREC,	/* V-BUS ERROR RESUME(occurrence) */
	USBH_USBD_MODE_CHANGE_VBUSERRRCMP,	/* V-BUS ERROR RESUME(completion) */
	USBH_USBD_MODE_COMP
} USBH_USBD_MODE;

/*****************************************
 * Structure definition
 *****************************************/
typedef struct tagUSBH_USBD_DEVLIST_TBL {
		UCHAR					Enable;
		USBH_USBD_DEVLIST_HEAD	DeviceList;
} USBH_USBD_DEVLIST_TBL;

typedef struct tagUSBH_USBD_URB_TBL {
		UCHAR			Enable;
		USBH_USBD_URB	Urb_List;
} USBH_USBD_URB_TBL;

typedef struct tagUSBH_USBD_IF_CTBL {
		UCHAR			Enable;
		USBH_USBD_IFTBL	IfList;
} USBH_USBD_IF_CTBL;

typedef struct tagUSBH_USBD_EP_CTBL {
		UCHAR			Enable;
		USBH_USBD_EPTBL	EpList;
} USBH_USBD_EP_CTBL;

typedef struct tagUSBH_USBD_API_STATE {
		long				retValue;			/* Return value of API */
		USBH_USBD_CALLBACK	Callback;			/* API call back */
} USBH_USBD_API_STATE;

/* Set up request information */
typedef struct{
	UCHAR	bmRequestType;
	UCHAR	bRequest;
	UCHAR	wValueL;
	UCHAR	wValueH;
	UCHAR	wIndexL;
	UCHAR	wIndexH;
	UCHAR	wLengthL;
	UCHAR	wLengthH;
} SETUP_REQUEST;


/* Class driver information */
typedef struct tagUSBH_USBD_ClssDriverINFO {
		USBH_USBD_CALLBACK	pfnEntryClassCallback;
		UCHAR				ClassNo;		/* Class Driver No. : device class number defined by USB */
		UCHAR				ClassID;		/* Class Driver ID	: through number commonly for all class driver from 1. 0 identify that not yet register. */
} USBH_USBD_ClssDriverINFO;

extern SETUP_REQUEST SetupReq[];
#ifdef TST_MODE
extern USBH_USBD_DEVLIST_TBL	DeviceListTbl[];		/* 0: default address, 1:root hub, 2-- : common device */
extern USBH_USBD_URB_TBL	UrbListTbl[];
extern USBH_USBD_IF_CTBL	IfListTbl[];
extern USBH_USBD_EP_CTBL	EpListTbl[];
#endif
/*****************************************
 * Function prototype declaration
 *****************************************/

long USBH_USBDS_Init( USBH_USBD_CALLBACK pfnCallback, UCHAR sw ) ;
long USBH_USBDS_Cleanup( void ) ;
long USBH_USBDS_SubmitURB( USBH_USBD_URB *psURB, unsigned char  classid, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBDS_UnlinkURB( USBH_USBD_URB *psURB, UCHAR  classid, USBH_USBD_CALLBACK pfnCallback );
long USBH_USBDS_SetConfiguration( UCHAR  classid, UCHAR  devaddr, USBH_USBD_CALLBACK pfnCallback );
long USBH_USBDS_EntryClass( unsigned char  classno, unsigned char  *classid, USBH_USBD_CALLBACK pfnCallback
		, USBH_USBD_CALLBACK pfnEventCallback ) ;
long USBH_USBDS_Reset( unsigned char  classid, unsigned char  devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBDS_PortSuspend( unsigned char	classid, unsigned char	devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
long USBH_USBDS_PortResume( unsigned char  classid, unsigned char  devaddr, USBH_USBD_CALLBACK pfnCallback ) ;
void USBH_USBDS_MkSetupPacket( SETUP_REQUEST *tmp, UCHAR kind, USHORT size, UCHAR port, UCHAR other );
long USBH_USBDS_PipeCheck(ULONG pipe);

#ifdef __cplusplus
	}
#endif /* cplusplus */

#endif /* USBH_USBDS_H */

⌨️ 快捷键说明

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