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

📄 bulkcmd.h

📁 FS7805 使用ATA硬盘的demo
💻 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 + -