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

📄 usbh_storage_if.h

📁 epson usb2.0 控制芯片 S1R72V05 固件程序。
💻 H
字号:
/*
 *	description: USBH Mass Storage Class Interface Definition(global)
 *	Maker	   : Shuichi Yanagihara
 *	Copyright  : (C)2005,SEIKO EPSON Corp. All Rights Reserved.
 */


#ifndef USBH_STRG_IF_H
#define USBH_STRG_IF_H

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

#include "OSCall.h"
#include "drvacs.h"
#include "usbh_usbd_api.h"

/*****************************************
 * Constants define
 *****************************************/
/* Mass Storage Class Code */
#define VENDOR_CLASS_IF_CODE			0xFF							/* Vendor Class Interface Code */
#define STRG_CLASS_IF_CODE				0x08							/* Mass Storage Class Interface Code */
#define	HID_CLASS_IF_CODE				0x03							/* HID Class Interface Code */
#define AUDIO_CLASS_IF_CODE				0x01							/* Audio Class Code */
#define STRG_CLASS_CODE					STRG_CLASS_IF_CODE				/* Mass Storage Class Code */
#define AUDIO_CLASS_CODE				AUDIO_CLASS_IF_CODE				/* Audio Class Code(CC_AUDIO) */
#define HID_CLASS_CODE					HID_CLASS_IF_CODE				/* HID Class Code */
#define STRG_CLASS_IF_PROT_CODE			0x50							/* Bulk Only Transport Protocol Code */
#define SUBCLASS_RBC					0x01							/* Reduced Block Command */
#define SUBCLASS_SFF8020I				0x02							/* SFF8020i or MMC-2 */
#define SUBCLASS_QIC157					0x03							/* QIC-157 */
#define SUBCLASS_UFI					0x04							/* UFI */
#define SUBCLASS_SFF8070I				0x05							/* SFF8070i */
#define SUBCLASS_SCSI					0x06							/* SCSI Primary Command-2 */

/* SCSI/ATAPI OP Code */
#define TEST_UNIT_READY					0x00
#define REQUEST_SENSE					0x03
#define FORMAT_UNIT						0x04
#define INQUIRY							0x12
#define READ_FORMAT_CAPACITY			0x23
#define READ_CAPACITY					0x25
#define READ10							0x28
#define WRITE10							0x2A

/* RequestSense SenseKey Code */
#define NO_SENSE						0x00
#define RECOVERED_ERROR					0x01
#define NOT_READY						0x02
#define MEDIUM_ERROR					0x03
#define HARDWARE_ERROR					0x04
#define ILLEGAL_REQEEST					0x05
#define UNIT_ATTENTION					0x06
#define DATA_PROTECT					0x07
#define BLANK_CHECK						0x08
#define COPY_ABORTED					0x0A
#define ABORTED_COMMAND					0x0B
#define EQUAL							0x0C
#define VOLUME_OVERFLOW					0x0D
#define MISCOMPARE						0x0E

/* Inquiry/Identify DeviceType Code */
#define DIRECT_DEV						0x00						/* Direct Access Device */
#define WRONCE_DEV						0x04						/* Write Once Device */
#define CDROM_DEV						0x05						/* CD-ROM Device */
#define OPTICAL_DEV						0x07						/* Optical Memory Device */

/* SCSI/ATAPI Command Mode */
#define SCSI							0x00
#define ATAPI							0x01

/* SCSI/ATAPI Command Parameter */
#define REQSENSE_LENGTH					 18							/* RequestSense Data Length 18Byte */
#define INQUIRY_LENGTH					 36							/* Inquiry Data Length 36Byte(product Rev . ) */
#define IDENTIFY_LENGTH					512							/* Identify Data Length 512Byte */
#define RDFORMCAPA_LENGTH				252							/* Read Format Capacity Allocation Length 252Byte */



/* CBW/CSW Fixed Value */
#ifdef LITTLE_ENDIAN_C
#define CBW_SIGNATURE					0x43425355						/* CBW Signature */
#else	/* #ifdef LITTLE_ENDIAN_C */
#define CBW_SIGNATURE					0x55534243						/* CBW Signature */
#endif	/* #ifdef LITTLE_ENDIAN_C */
#define CBW_OUT							0x00							/* CBW Flag : Data Out */
#define CBW_IN							0x80							/* CBW Flag : Data In */
#define CBW_LENGTH						0x1F							/* CBW Length 31byte */
#define CSW_LENGTH						0x0D							/* CSW Length 13byte */

/* CSW Status */
#define CSW_OK							0x00							/* CSW Status OK */
#define CSW_ERR							0x01							/* CSW Status Error */
#define CSW_PHASE_ERR					0x02							/* CSW Status Phase Error */

/* Mass Storage Class Request Type */
#define MASS_STORAGE_RESET				0x21							/* BulkOnly Mass Storage Reset Request */
#define GET_MAX_LUN						0xA1							/* Get Max LUN Request */

/* Standard Device Request Type */
#define CLEAR_FEATURE_EP				0x02							/* Clear Feature EP Request */

/* Callback Flag */
#define EVENT_NONE						0x0000							/* Callback event none */
#define EVENT_USBD_INIT					0x0001							/* USBD initialization end event */
#define EVENT_DEVICE					0x0002							/* Device connection and disconnectting Callback event */
#define EVENT_SETCONFIG					0x0004							/* SetConfiguration end Callback event */
#define EVENT_RESET						0x0008							/* USB Reset end Callback event */
#define EVENT_CBW_COMP					0x0010							/* CBW transport forwarding end Callback event */
#define EVENT_DATA_COMP					0x0020							/* DATA transport forwarding end Callback event */
#define EVENT_CSW_COMP					0x0040							/* CSW transport forwarding end Callback event */
#define EVENT_CTL_COMP					0x0080							/* Control forwarding end Callback event */
#define EVENT_RESET_RECOVERY			0x0100							/* ResetRecovery event  */
#define EVENT_SUBMIT_URB				0x0200							/* SubmitURB registration end event */
#define EVENT_UNLINK_URB				0x0400							/* UnlinkURB end event */
#define EVENT_ENTRY_CLASS				0x0800							/* EntryClass end event */
#define EVENT_RETURN_VALUE				0x1000							/* ReturnValue acquisition event */

/*****************************************
 * Callback functions declaration
 *****************************************/

/*****************************************
 * Enumeration type declaration
 *****************************************/

/*****************************************
 * structures declaration
 *****************************************/
 typedef struct tagUSBH_STRG_DEVICE_PARA{
	UCHAR	reqSenseData[18];						/* Last Execution RequestSense Data */
	UCHAR	identifyData[512];						/* Device Identify Data */
	UCHAR	devAdr;									/* Device Address */
	USHORT	interface;								/* Device Configuration Interface */
	UCHAR	subClass;								/* Mass Storage Interface Sub Class Code */
	UCHAR	lun;									/* LUN */
	UCHAR	commandStatus;							/* Command Status */
	UCHAR	commandMode;							/* Command Mode (SCSI or ATAPI) */
	UCHAR	deviceStatus;							/* Device Status */
	UCHAR	bulkInEP;								/* Device Bulk IN Endpoint */
	UCHAR	bulkOutEP;								/* Device Bulk OUT Endpoint */
#ifdef AUDIO_TST
	UCHAR	InbInterval;
	UCHAR	OutbInterval;
#endif
}USBH_STRG_DEVICE_PARA;

/* Parameter passed from CallBack routine to cycle handler */
typedef struct tagUSBH_STRG_CALLBACK_PARA{
	USHORT			flag;							/* CallBack flag */
	ULONG			event;							/* Message(USBH_STRG_DeviceCallback, USBH_STRG_ResetCallback) */
	ULONG			param1;							/* Connected device USB address(USBH_STRG_DeviceCallback) */
	void			*pParam;						/* Pointer to connected device descriptor(USBH_STRG_DeviceCallback) */
	USBH_USBD_URB	*pUrb; 							/* Pointer to executed URB(USBH_STRG_CBWCompCallback, USBH_STRG_DATACompCallback */
													/*						   USBH_STRG_CSWCompCallback, USBH_STRG_CtlCompCallback) */
}USBH_STRG_CALLBACK_PARA;

/* Handler internal state preservation parameter of cycle */
typedef struct tagUSBH_STRG_CYCHDR_PARA{
#ifdef AUDIO_TST
	UCHAR				IsoDeviceNo;				/* DeviceNo executing Control forwarding(for Isochronous device) */
#endif
	UCHAR				deviceNo;					/* DeviceNo executing Control forwarding */
	USHORT				ctlPass;					/* Passing that forwards Control */
	UCHAR				resetRecovPass ;			/* Passing ResetRecovery's operating */
	USBH_USBD_DEVCTL	*pDeviceCtl;				/* Device Descriptor of connected device */
	UCHAR				tranData;					/* Pointer of Control transfer data */
}USBH_STRG_CYCHDR_PARA;


/*****************************************
 * Function prototype declaration
 *****************************************/
extern LONG USBH_STRG_IFReset( void );
extern LONG USBH_STRG_IFDeviceReset( USHORT deviceNo );
extern LONG USBH_STRG_IFGetDeviceList( UCHAR *pList );
extern LONG USBH_STRG_IFGetDeviceParameter( USHORT deviceNo, UCHAR *pDataPtr);
extern LONG USBH_STRG_IFCommandOut( USHORT deviceNo, UCHAR transferMode, DRIVEACCESS_FUNCCMDPARA *pCmdBlock, CALLBACK_PROC pfnNotifyIntrqComp );
extern LONG USBH_STRG_IFCommandStop( USHORT deviceNo);
extern LONG USBH_STRG_IFDMAStartA( USHORT deviceNo, UCHAR transferMode, DRIVEACCESS_FUNCTRANPARA *pTranPara, CALLBACK_PROC pfnNotifyDMAComp );
extern LONG USBH_STRG_IFDMAStop( USHORT deviceNo );
extern LONG USBH_STRG_IFGetStatus( USHORT deviceNo, ULONG *pStatus, ULONG *pTransferSize, UCHAR *pSenseData );
extern LONG USBH_STRG_IFSyncCommand( USHORT deviceNo, UCHAR transferMode, DRIVEACCESS_FUNCCMDPARA *pCmdBlock, DRIVEACCESS_FUNCTRANPARA *pTranPara, ULONG *pStatus, UCHAR *pSenseData );
extern LONG USBH_STRG_IFRegisterCBRDMAComp( USHORT deviceNo, CALLBACK_PROC pfnNotifyDMAComp );
extern LONG USBH_STRG_IFUnregisterCBRDMAComp( USHORT deviceNo, CALLBACK_PROC pfnNotifyDMAComp );
extern LONG USBH_STRG_IFRegisterCBRIntrqComp( USHORT deviceNo, CALLBACK_PROC pfnNotifyIntrqComp );
extern LONG USBH_STRG_IFUnregisterCBRIntrqComp( USHORT deviceNo, CALLBACK_PROC pfnNotifyIntrqComp );
extern void USBH_STRG_tmrhdr( VP_INT exinf );
extern void USBH_STRGEventTask( VP_INT exinf );

#ifdef __cplusplus
	}
#endif /* cplusplus */

#endif /* USBH_STRG_IF_H */

⌨️ 快捷键说明

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