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

📄 devicetask.h

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

#ifndef DEVICE_TASK_H
#define DEVICE_TASK_H

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

#include "SPRDEF.h"
#include <SampleTask.h>
#include <DeviceTaskAPI.h>
#include "OSCall.h"


//==========================================================================//
//--------------------------------------------------------------------------//
//							 Necessary for RTOS  							//
//--------------------------------------------------------------------------//
// Task						:  DEVICETask									//
// Fixed lenth memory block :  MPF_ID_MSGDEVICE								//
// Mailbox					:  MBX_ID_DEVICE								//
// Event flag				:  FLG_ID_DEVICE								//
// Semaphore  				:  SEMID_DEVICE									//
//==========================================================================//

//--------------------------------------------------------------------------
// DEVICE IRQ number
//--------------------------------------------------------------------------
	#define DEVICE_CHIP_INT (8)							// IRQ 8

//--------------------------------------------------------------------------
// Setting value for DEVICE task
//--------------------------------------------------------------------------
#define TSK_EXINFO_DEVICE					(NULL)			// Enhancing information
#define TSK_ATTRIBUTE_DEVICE				(OS_TA_HLNG)	// Attribute
#define TSK_PRIORITY_DEVICE					(4)				// Priority level
#define TSK_STACK_SIZE_DEVICE				(1024)			// Stack size
#define TSK_STACK_ADD_DEVICE				(0)				// Stack address

//--------------------------------------------------------------------------
// Fixed length memory pool for DEVICE message transfer
//--------------------------------------------------------------------------
#define MPF_ATTRIBUTE_DEVICE_MSG			(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_DEVICE_MSG			(8)				// Number of block
#define MPF_BLOCK_SIZE_DEVICE_MSG			(44 + OS_TMSG_SIZE)	// Block size
#define MPF_BLOCK_ADD_DEVICE_MSG			(NULL)			// Block address

//--------------------------------------------------------------------------
// Fixed length memory pool for DEVICE data transfer
//--------------------------------------------------------------------------
// DATA64
#define MPF_ATTRIBUTE_DEVICE_DATA64		(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_DEVICE_DATA64		(2)				// Number of block
#define MPF_BLOCK_SIZE_DEVICE_DATA64		(64)			// Block size
#define MPF_BLOCK_ADD_DEVICE_DATA64		(NULL)			// Block address
// DATA128
#define MPF_ATTRIBUTE_DEVICE_DATA128		(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_DEVICE_DATA128		(2)				// Number of block
#define MPF_BLOCK_SIZE_DEVICE_DATA128		(128)			// Block size
#define MPF_BLOCK_ADD_DEVICE_DATA128		(NULL)			// Block address
// DATA256
#define MPF_ATTRIBUTE_DEVICE_DATA256		(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_DEVICE_DATA256		(2)				// Number of block
#define MPF_BLOCK_SIZE_DEVICE_DATA256		(256)			// Block size
#define MPF_BLOCK_ADD_DEVICE_DATA256		(NULL)			// Block address
// DATA512
#define MPF_ATTRIBUTE_DEVICE_DATA512		(OS_TA_TFIFO)	// Attribute
#define MPF_BLOCK_CNT_DEVICE_DATA512		(1)				// Number of block
#define MPF_BLOCK_SIZE_DEVICE_DATA512		(512)			// Block size
#define MPF_BLOCK_ADD_DEVICE_DATA512		(NULL)			// Block address

//--------------------------------------------------------------------------
// DEVICE Mailbox
//--------------------------------------------------------------------------
#define MBX_ATTRIBUTE_DEVICE				(OS_TA_TFIFO)	// Attribute
#define MBX_MAX_PRI_DEVICE					(1)				// Priority's maximum value
#define MBX_PRI_ADD_DEVICE					(NULL)			// Address of message queue header

#define	MSGDEVICE_DATASIZE					(32)			// Size of DEVICE 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)

// Declaration for Mailbox structure
typedef struct _DEVICE_MSG{					/* Mailbox for DEVICE task */
	MSGHEAD		msgHead;					/* Message header		*/
	UCHAR		msgData[MSGDEVICE_DATASIZE];	/* Message data			*/
} DEVICE_MSG, *PDEVICE_MSG;

//--------------------------------------------------------------------------
// DEVICE: Event flag
//--------------------------------------------------------------------------
#define FLG_ATTRIBUTE_DEVICE				(OS_TA_TFIFO)	// Attribute
#define FLG_PATTERN_DEVICE					(0)				// Bit pattern's initial value
// Event flag bit definition
#define	FLG_EVENT_FORCE_DEVICE				0x80000000		// (bit31) Force processing event
#define	FLG_EVENT_INT_DEVICE				0x08000000		// (bit27) Interrupt processing event
#define	FLG_EVENT_MSG_DEVICE				0x00000001		// (bit0 ) Message processing event
/* Synchronous flag for API to Task */
#define FLG_EVENT_START_USB_DEVICE			0x00010000		// (bit16) Event for process of USB operation's start
#define FLG_EVENT_STOP_USB_DEVICE			0x00020000		// (bit17) Event for process of USB operation's stop
#define FLG_EVENT_ATTACH_USB_DEVICE		0x00040000		// (bit18) Event for requesting the USB attach
#define FLG_EVENT_DETACH_USB_DEVICE		0x00080000		// (bit19) Event for requesting the USB detach
#define FLG_EVENT_EXECMD_DEVICE			0x00100000		// (bit20) Event for executing the command
#define FLG_EVENT_IDEHRST_DEVICE			0x00200000		// (bit21) IDE HRST event
#define FLG_EVENT_USB_XFER_DEVICE			0x00400000		// (bit22) Request for USB PIO transfer's start
#define FLG_EVENT_STRG_STS_DEVICE			0x00800000		// (bit23) Event for request of USER STRG command status's transfer
#define FLG_EVENT_DMA_START_DEVICE			0x01000000		// Request for data transfer's start
#define FLG_EVENT_DMA_ABORT_DEVICE			0x02000000		// DMA transfer abort
// Pattern of waiting the event flag
#define FLG_WAIT_PTN_DEVICE				( FLG_EVENT_FORCE_DEVICE	| FLG_EVENT_INT_DEVICE		  | FLG_EVENT_MSG_DEVICE		| FLG_EVENT_START_USB_DEVICE  |\
										  FLG_EVENT_STOP_USB_DEVICE | FLG_EVENT_EXECMD_DEVICE	  | FLG_EVENT_ATTACH_USB_DEVICE | FLG_EVENT_DETACH_USB_DEVICE |\
										  FLG_EVENT_IDEHRST_DEVICE	| FLG_EVENT_USB_XFER_DEVICE   | FLG_EVENT_STRG_STS_DEVICE	| FLG_EVENT_DMA_START_DEVICE  |\
										  FLG_EVENT_DMA_ABORT_DEVICE )

//--------------------------------------------------------------------------
// Semaphore of synchronization for DEVICE Module 佁 Task
//--------------------------------------------------------------------------
#define SEM_ATTRIBUTE_DEVICE				(OS_TA_TFIFO)	// Semaphore's attribute
#define SEM_CNT_DEVICE						(0)				// Initial value
#define SEM_MAX_CNT_DEVICE					(1)				// Maximum number

//==========================================================================//
//																			//
// 						Define declaration								//
//																			//
//==========================================================================//

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

// User Strg Command
#define CMD_SIZE		0xFF				// Number of maximum command code
typedef struct _USER_STRG_CMD {
	ULONG			length;
	UCHAR			code[CMD_SIZE];
} USER_STRG_CMD, *PUSER_STRG_CMD;

//
typedef struct _USER_XFER_INFO {
	ULONG			size;					// Number of transfer
	UCHAR*			pBuffer;				//
	UCHAR			mode;					// Transfer mode
	UCHAR			dir;					// Transfer direction
	UCHAR			dmaCh;					// DMA ch
} USER_XFER_INFO, *PUSER_XFER_INFO;

//
#define MAX_LUN_SIZE	2					// Number of maximum LUN supported
// user command state
#define DEVICE_CMD_IDLE_STATE		0			// State of idle
#define DEVICE_CMD_RCV_STATE		1			// State of command reception
#define DEVICE_CMD_DATA_STATE		3			// State of data transfer
#define DEVICE_CMD_STS_STATE		4			// State of status

typedef struct _USER_CMD_INFO {
	USER_XFER_INFO	xferInfo;
	USER_STRG_CMD	cmd[MAX_LUN_SIZE];
	UCHAR			status;
	UCHAR			state;
	BOOL			bCpuXferCmp;
	BOOL			bUsbXferCmp;
} USER_CMD_INFO, *PUSER_CMD_INFO;

// Information of USB operation mode
typedef struct _USB_INFO {
	UCHAR			bManAttach;				// Attach manual mode
	UCHAR			bManPwrCtrl;			// Power saving control mode
	UCHAR			suspenLV;				// Suspend level
	UCHAR			vbus;					// VBUS state
	UCHAR			bEnable;				// USB connect's enable/disable
	USER_CMD_INFO	userCmdInfo;			// Used for UserCmd process
} USB_INFO, *PUSB_INFO;

// Information of PLAY operation mode
typedef struct _PLAY_XFER_INFO {
	UCHAR			mode;					// Transfer mode
	UCHAR			dir;					// Transfer direction
	ULONG			reqSize;				// Required transfer number
	ULONG			totalXferSize;			// Number actually transferred
	ULONG			size;					// Transfer number
	UCHAR*			buffer;					// Buffer which is gotten in PIO transfer
	ULONG			fifoRWSize;				// Number written in FIFO in PIO transfer
	UCHAR			dmaCh;					// DMA ch
} PLAY_XFER_INFO, *PPLAY_XFER_INFO;

// Information of PLAY operation mode
typedef struct _PLAY_INFO {
	UCHAR				execMode;				// PLAY operation mode
	UCHAR				cmdType;				// Command type cmdType
	UCHAR				cmdStatus;				// Command execution's status
	UCHAR				lun;					// Specified LUN number
	UCHAR				ideCmd[12];				// ATA command
	PLAY_XFER_INFO		xferInfo;				// Transfer information
	UCHAR				bIdeCmdCmp;				// IDE command end
	UCHAR				bCpuXferCmp;			// CPU data transfer end
	UCHAR				ideXferMode;			// IDE to DEVICE data transfer mode
} PLAY_INFO, *PPLAY_INFO;

// DEVICE information
typedef struct _DEVICE_MODULE_INFO {
	UCHAR					state;				// DEVICE task's state
	USB_INFO				usbInfo;			// USB information
	UCHAR					pwrState;			// Electric power mode
	PLAY_INFO				playInfo;			// PLAY mode information
	DEVICE_TASK_PFN_CALLBACK_PROC pfnMsgProc;		// Callback address to other module
} DEVICE_MODULE_INFO, *PDEVICE_MODULE_INFO;

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

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


#ifdef __cplusplus
	}
#endif /* cplusplus */

#endif /* DEVICE_TASK_H */

⌨️ 快捷键说明

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