📄 usbh_sampletask.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 + -