📄 bulkcmd.h
字号:
/*
*********************************************************************************************************
* File: bulkcmd.h
* Contents:
*
* $Date: 04/06/06 Kimi v0.1
* 01/05/07 kevin v0.2
* 01/08/07 kevin v0.3
*
* Copyright (c) 2007 Fameg, Inc. All rights reserved
*********************************************************************************************************
*/
#ifndef BulkCmdH
#define BulkCmdH
#define CBW_SIGNATURE 0x55534243L // 0x43425355L
#define CSW_SIGNATURE 0x55534253L // 0x53425355L
#define CBWCB_OFFSET 0xf
#define CBW_LENGTH 31
#define CBW_LENGTH_98 32
#define CSW_LENGTH 13
#define EP4_5_FIFO_LEN 64
#define CBWCB_ADDR (UsbDmaBuffer + CBWCB_OFFSET)
extern bool ScsiCmdSTALLed;
// Bulk Completed State definitions
#define CBW_GET_COMPLETED 0x00
#define BULK_DMA_IN_COMPLETED 0x01
#define BULK_DMA_OUT_COMPLETED 0x02
#define SHORT_PACKET_STALL_COMPLETED 0x03
#define STALL_IN_COMPLETED 0x04
#define CSW_REPLY_COMPLETED 0x05
// Command Block Status Values
#define COMMAND_PASSED 0x00
#define COMMAND_FAILED 0x01
#define PHASE_ERROR 0x02 // Internal Device Error, Bit direction error, 13 cases
//EP1FIFOCS = (EP1FIFOCS | bmFIFO0_FULL_WE) & (~bmFIFO0_FULL);
//(EP1CS=EP1CS|bmEP_RXTXEN) //使能Out端点接收数据
#define BulkOutTogErr() (EP1CS=EP1CS&bmEP_TOGERR)
#define BulkInStall() (EP2CS=EP2CS|bmEP_SESTALL)
//#define BulkStallMask 0xfc // Because set "addition" rx_en(bit0) on current usb arch would make buffer error.
//----------------------------------------------------------------------------
// Command Block Wrapper Structure
//----------------------------------------------------------------------------
typedef struct
{
UINT32 Sign;
UINT32 Tag;
UINT32 DataXsferLen;
BYTE Flags;
BYTE CbwcbLun;
BYTE CbwcbLen;
}CMD_BLOCK_WRAPPER, *PCMD_BLOCK_WRAPPER;
//----------------------------------------------------------------------------
// Command Status Wrapper Structure
//----------------------------------------------------------------------------
typedef struct
{
UINT32 Sign;
UINT32 Tag;
UINT32 DataResidueLen;
BYTE Status;
}CMD_STATUS_WRAPPER, *PCMD_STATUS_WRAPPER;
//----------------------------------------------------------------------------
// Mode Page Table Structure
//----------------------------------------------------------------------------
typedef struct
{
PBYTE PagePtr;
BYTE Size;
}MODE_PAGE_TABLE;
void BulkBufferAvailable(UINT16 Buffer) reentrant;
void BulkInvalidFieldError(BYTE Lun);
void BulkSetDmaIn(void *Des, void *Src, UINT16 DmaLen, UINT16 TxDmaBaseAddr);
void BulkPrepareCSW(BYTE Status);
BYTE BulkGetBufIndex(UINT16 BufAddr);
extern void BulkWaitOutDataReady();
extern void BulkFreeBuffer();
#define BulkSetDmaOut() (EP1CS = EP1CS | bmEP_RXTXEN)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -