?? massstorage.c
字號:
#include "ezusb.h"
#include "ezregs.h"
#include "massstorage.h"
#include "host_811.h"
#include "..\target\def.h"
#include "..\target\44blib.h"
#define OutPayLoad 64
#define InPayLoad 64
CBW MassStorageCBW;
CSW MassStorageCSW;
BYTE MassStorageDataBuf[512];
BYTE MassStorageStatusBuf[13];
BYTE UFI_Inquiry()//查詢,獲取設(shè)備信息
{
BYTE i;
MassStorageCBW.dCBWSignature= 0x55534243;
MassStorageCBW.dCBWTag= 0x28fa8b87;
MassStorageCBW.dCBWDataTransferLength[0]= 0x24;
MassStorageCBW.dCBWDataTransferLength[1]= 0x0;
MassStorageCBW.dCBWDataTransferLength[2]= 0x0;
MassStorageCBW.dCBWDataTransferLength[3]= 0x0;
MassStorageCBW.bmCBWFlags= 0x80; //D7位=0表示主機到設(shè)備的數(shù)據(jù)輸出
//D7位=1表示設(shè)備到主機的數(shù)據(jù)輸入
MassStorageCBW.bCBWLUN= 0;//表示接受該命令的設(shè)備的邏輯單元號LUN
MassStorageCBW.bCBWCBLength= 0x0C;
//表示CBWCB的長度,即將要發(fā)送的特定子類的長度
//0X0C是UFI子類中的Read(10)命令長度
MassStorageCBW.CBWCB[0]= 0x12;
MassStorageCBW.CBWCB[1]= 0x0;
MassStorageCBW.CBWCB[2]= 0x0;
MassStorageCBW.CBWCB[3]= 0x0;
MassStorageCBW.CBWCB[4]= 0x24;
MassStorageCBW.CBWCB[5]= 0x0;
for(i=6;i<0x10;i++) MassStorageCBW.CBWCB[i]= 0x0;
if(!usbXfer(1,epbulkout&0x0f,PID_OUT,0,OutPayLoad,31,(BYTE *)&MassStorageCBW)) //發(fā)送命令
{
//ErrorCode=0x01;
return FALSE;
}
EZUSB_Delay(20000);//嚴(yán)時200MS
if(!usbXfer(1,epbulkin&0x0f,PID_IN,0,InPayLoad,36,(BYTE *)&MassStorageDataBuf)) //設(shè)備到主機的數(shù)據(jù)傳輸,在此句無數(shù)據(jù)返回
{
//ErrorCode=0x01;
return FALSE;
}
if(!usbXfer(1,epbulkin&0x0f,PID_IN,0,InPayLoad,13,(BYTE *)&MassStorageStatusBuf))
{
//ErrorCode=0x01;
return FALSE;
}
if(MassStorageStatusBuf[12]!=0x00)
{
//ErrorCode=0x01;
return FALSE;
}
return TRUE;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -