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

📄 usbh_sampletask.h

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

#ifndef USBH_SAMPLE_TASK_H
#define USBH_SAMPLE_TASK_H

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

#include "SPRDEF.h"
#include "OSCall.h"
#include "SampleTask.h"
#include "usbh_SampleTaskAPI.h"
#include "usbh_stacktask.h"


//==========================================================================//
//																			//
// 						 Define declaration								//
//																			//
//==========================================================================//
//==========================================================================//
//--------------------------------------------------------------------------//
//							 Necessary for RTOS, 							//
//--------------------------------------------------------------------------//
// Task						:  HostSampleTask								//
// Fixed length memory block:  MPF_ID_MSGUSBH_SAMPLE						//
// Mailbox					:  MBX_ID_USBH_SAMPLE							//
// Event flag				:  FLG_ID_USBH_SAMPLE							//
//==========================================================================//
 #define	MSGSMP_DATSIZE				(32)/* Size of Message data		*/

// Structure declaration for mailbox header

typedef struct _MsgSMP{					/* SAMPLE task mailbox*/
	MSGHEAD		msgHead;				/* Message header */
	UCHAR		msgData[MSGSMP_DATSIZE];/* Message data */
} MSGSMP, *PMSGSMP;


//--------------------------------------------------------------------------
// HostSample IRQ number
//--------------------------------------------------------------------------
#ifdef TOYA2_C
	#define USBH_SAMPLE_CHIP_INT (8)							// IRQ 8
#else
	#define USBH_SAMPLE_CHIP_INT (20)							// IRQ 20(Undecided)
#endif

//--------------------------------------------------------------------------
// Task setting value
//--------------------------------------------------------------------------
/* SAMPLE task */
#define TSK_EXINFO_USBH_SAMPLE					(NULL)			// Extension information
#define TSK_ATTRIBUTE_USBH_SAMPLE				(OS_TA_HLNG)	// Attribute
#define TSK_PRIORITY_USBH_SAMPLE				(4)				// Priority level
#define TSK_STACK_SIZE_USBH_SAMPLE				(1024 * 5)		// Stack size

#define TSK_STACK_ADD_USBH_SAMPLE				(0)				// Stack address
/* SAMPLE task */
#define TSK_EXINFO_USBH_USBD					(NULL)			// Extension information
#define TSK_ATTRIBUTE_USBH_USBD					(OS_TA_HLNG)	// Attribute
#define TSK_PRIORITY_USBH_USBD					(4)				// Priority level
#define TSK_STACK_SIZE_USBH_USBD				(1024)			// Stack size
#define TSK_STACK_ADD_USBH_USBD					(0)				// Stack address

/* USBH storage's event task */
#define TSK_EXINFO_USBH_STRGEVENT				(NULL)			// Extension information
#define TSK_ATTRIBUTE_USBH_STRGEVENT			(OS_TA_HLNG)	// Attribute
#define TSK_PRIORITY_USBH_STRGEVENT				(4)				// Priority level
#define TSK_STACK_SIZE_USBH_STRGEVENT			(1024)			// Stack size
#define TSK_STACK_ADD_USBH_STRGEVENT			(0)				// Stack address

//--------------------------------------------------------------------------
// Fixed length memory pool for send message
//--------------------------------------------------------------------------
#define MPF_ATTRIBUTE_USBH_SAMPLE_MSG			(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_USBH_SAMPLE_MSG			(8)				// Number of block
#define MPF_BLOCK_SIZE_USBH_SAMPLE_MSG			(44 + TMSGSIZE)	// Size of block
#define MPF_BLOCK_ADD_USBH_SAMPLE_MSG			(NULL)			//--------------------------------------------------------------------------
// Fixed length memory pool for send data
//--------------------------------------------------------------------------
// DATA64
#define MPF_ATTRIBUTE_USBH_SAMPLE_DATA64		(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_USBH_SAMPLE_DATA64		(2)				// Number of block
#define MPF_BLOCK_SIZE_USBH_SAMPLE_DATA64		(64)			// Size of block
#define MPF_BLOCK_ADD_USBH_SAMPLE_DATA64		(NULL)			// Address of block
// DATA128
#define MPF_ATTRIBUTE_USBH_SAMPLE_DATA128		(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_USBH_SAMPLE_DATA128		(2)				// Number of block
#define MPF_BLOCK_SIZE_USBH_SAMPLE_DATA128		(64)			// Size of block
#define MPF_BLOCK_ADD_USBH_SAMPLE_DATA128		(NULL)			// Address of block
// DATA256
#define MPF_ATTRIBUTE_USBH_SAMPLE_DATA256		(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_USBH_SAMPLE_DATA256		(2)				// Number of block
#define MPF_BLOCK_SIZE_USBH_SAMPLE_DATA256		(256)			// Size of block
#define MPF_BLOCK_ADD_USBH_SAMPLE_DATA256		(NULL)			// Address of block
// DATA512
#define MPF_ATTRIBUTE_USBH_SAMPLE_DATA512		(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_USBH_SAMPLE_DATA512		(1)				// Number of block
#define MPF_BLOCK_SIZE_USBH_SAMPLE_DATA512		(512)			// Size of block
#define MPF_BLOCK_ADD_USBH_SAMPLE_DATA512		(NULL)			// Address of block

//--------------------------------------------------------------------------
// Mailbox
//--------------------------------------------------------------------------
#define MBX_ATTRIBUTE_USBH_SAMPLE				(OS_TA_TFIFO)	// Attribute
#define MBX_MAX_PRI_USBH_SAMPLE					(1)				// Priority's maximum value
#define MBX_PRI_ADD_USBH_SAMPLE					(NULL)			// Address of header of message queue

#define	MSGUSBH_SAMPLE_DATASIZE					(32)			// Size of message data

#define MPF_DATA64_SIZE							(64)			// Data area(64 bytes)
#define MPF_DATA128_SIZE						(128)			// Data area(128 bytes)
#define MPF_DATA256_SIZE						(256)			// Data area(256 bytes)
#define MPF_DATA512_SIZE						(512)			// Data area(512 bytes)

// Mailbox's structure declaration
typedef struct _USBH_SAMPLE_MSG{				/* HostSample task mailbox */
	MSGHEAD		msgHead;						/* Message header */
	UCHAR		msgData[MSGUSBH_SAMPLE_DATASIZE];	/* Message data */
} USBH_SAMPLE_MSG, *PUSBH_SAMPLE_MSG;

//--------------------------------------------------------------------------
// HostSample event flag
//--------------------------------------------------------------------------
#define FLG_ATTRIBUTE_USBH_SAMPLE				(OS_TA_TFIFO)	// Attribute
#define FLG_PATTERN_USBH_SAMPLE					(0)				// Bit pattern's initial value
// Event flag bit definition
#define	FLG_EVENT_FORCE_USBH_SAMPLE				0x80000000		// (bit31)Forcely processing event
#define	FLG_EVENT_INT_USBH_SAMPLE				0x08000000		// (bit27)Interrupt processing event
#define	FLG_EVENT_MSG_USBH_SAMPLE				0x00000001		// (bit0 )Message processing event
#define	FLG_EVENT_USBH_SAMPLE_API_CALLBACK		0x00004000		// (bit14) USB Reset's end event
#define	FLG_EVENT_USBH_SAMPLE_URB_CALLBACK		0x00008000		// (bit15) USB Reset's end event
#define	FLG_EVENT_USBRESET_CMP_USBH_SAMPLE		0x00010000		// (bit16) USB Reset's end event
#define	FLG_EVENT_URB_CMP_USBH_SAMPLE			0x00020000		// (bit17) URB transfer's end event
#define	FLG_EVENT_USBDINIT_CMP_USBH_SAMPLE		0x00040000		// (bit18) USBD initialization's end event
#define	FLG_EVENT_UNLINKURB_CMP_USBH_SAMPLE		0x00080000		// (bit19) UnlinkURB's end event
#define	FLG_EVENT_SUBMITURB_CMP_USBH_SAMPLE		0x00100000		// (bit20) SubmitURB's end event
#define FLG_EVENT_FINISH_PM_USBH_SAMPLE			0x00200000		// PowerManagement transfer's end event
#define FLG_EVENT_USBDENTRY_CMP_USBH_SAMPLE		0x00400000		// Class registration's end event to USBD

#define FLG_WAIT_PTN_USBH_SAMPLE		( FLG_EVENT_FORCE_USBH_SAMPLE | FLG_EVENT_INT_USBH_SAMPLE | FLG_EVENT_MSG_USBH_SAMPLE |\
										  FLG_EVENT_USBRESET_CMP_USBH_SAMPLE | FLG_EVENT_URB_CMP_USBH_SAMPLE |\
										  FLG_EVENT_USBDINIT_CMP_USBH_SAMPLE | FLG_EVENT_UNLINKURB_CMP_USBH_SAMPLE|\
										  FLG_EVENT_USBH_SAMPLE_API_CALLBACK | FLG_EVENT_USBH_SAMPLE_URB_CALLBACK |\
										  FLG_EVENT_SUBMITURB_CMP_USBH_SAMPLE | FLG_EVENT_FINISH_PM_USBH_SAMPLE |\
										  FLG_EVENT_USBDENTRY_CMP_USBH_SAMPLE)

//--------------------------------------------------------------------------
// Semaphore for USBH Storage Event
//--------------------------------------------------------------------------
#define SEM_ATTRIBUTE_USBH_STRGEVENT			(OS_TA_TFIFO)	// Semaphore's attribute
#define SEM_CNT_USBH_STRGEVENT					(0)				// Initial value
#define SEM_MAX_CNT_USBH_STRGEVENT				(5)				// Maximum number


//==========================================================================//
//																			//
// 						Structure declaration							//
//																			//
//==========================================================================//


// HostSample information
typedef struct _USBH_SAMPLE_MODULE_INFO {
	UCHAR					state;				// Task state
	USBH_SAMPLE_PFN_CALLBACK_PROC pfnMsgProc;	// Address of callback to another module
} USBH_SAMPLE_MODULE_INFO, *PUSBH_SAMPLE_MODULE_INFO;

typedef struct tagTEST_DEVICE_PARA{
	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	reqSenseData[18];					/* Last Execution RequestSense Data */
	USBH_USBD_USBDEV	*psDev;					/* Pointer to structure of USB device information */
	USBH_USBD_DEVLIST_HEAD	*DevLH;				//MT!
}TEST_DEVICE_PARA;

typedef struct tagTEST_CTL_SETUP{
	UCHAR	bmRequestType;
	UCHAR	bRequest;
	USHORT	wValue;
	USHORT	wIndex;
	USHORT	wLength;
}TEST_CTL_SETUP;

typedef struct tagTEST_STRG_CBW{
	ULONG	signature;
	ULONG	tag;
	ULONG	transferLength;
	UCHAR	flag;
	UCHAR	lun;
	UCHAR	cbdLength;
	UCHAR	cbd[16];
}TEST_STRG_CBW;

/* BulkOnly Transport CSW */
typedef struct tagTEST_STRG_CSW{
	ULONG	signature;
	ULONG	tag;
	ULONG	dataResidue;
	UCHAR	status;
}TEST_STRG_CSW;

typedef struct tagTEST_CALLBACK_PARAM{
	ULONG	param0;
	ULONG	param1;
	VOID	*pParam;
}TEST_CALLBACK_PARAM;

typedef struct tagATAPI_INFO{
	UCHAR	LBAdress[4];		/* Logical Block Address */
	UCHAR	BLength[4];			/* Block Length */
}ATAPI_INFO;


//==========================================================================//
//																			//
// 								Variable declaration					//
//																			//
//==========================================================================//

//==========================================================================//
//																			//
// 								Function declaration					//
//																			//
//==========================================================================//
extern void USBH_SampleTask( void );

#ifdef __cplusplus
	}
#endif /* cplusplus */

#endif /* USBH_SAMPLE_TASK_H */

⌨️ 快捷键说明

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