?? scsicbwprocess.c
字號:
#ifndef _SCSI_DEFINE
#include "SCSI.c"
#endif
void SCSICBWProcess(void)
{
//驗證CBW有效性
if (USBEP1Buffer.InLength!=0x1f) return; //31字節
if (SCSICBW->dSignature!=0x55534243) return; //包標記 USBC
//驗證CBW有意義
if (SCSICBW->bLUN>SCSI_MAX_LUN) return; //錯誤的LUN
if (SCSICBW->bCBLength>0x10) return; //CBWCB長度錯誤
switch (SCSICBW->CBWCB[0])
{
case SCSI_CMD_INQUIRY :
SCSIInquiry();
USBEP2WritePacket();
SCSICSWProcess(SCSI_CSW_PASSED,0);
break;
case SCSI_CMD_READ10 :
SCSIRead10();
SCSICSWProcess(SCSI_CSW_PASSED,0);
break;
case SCSI_CMD_WRITE10 :
SCSIWrite10();
SCSICSWProcess(SCSI_CSW_PASSED,0);
break;
case SCSI_CMD_READ_LONG :
SCSIReadLong();
USBEP2WritePacket();
SCSICSWProcess(SCSI_CSW_PASSED,SCSICBW->dDataLength - USBEP1Buffer.OutLength);
break;
case SCSI_CMD_READ_CAPACITY :
// printf("request CAPACITY\n");
SCSIReadCapacity();
USBEP2WritePacket();
SCSICSWProcess(SCSI_CSW_PASSED,0);
break;
case SCSI_CMD_TEST_UNIT_READY :
SCSICSWProcess(SCSI_CSW_PASSED,0);
break;
case SCSI_CMD_REQUEST_SENSE :
printf("request sense\n");
SCSIRequestSense();
break;
case SCSI_CMD_MODE_SENSE6 :
SCSIModeSense6();
USBEP2WritePacket();
// UEPNUM=0x02;
// USB_SEND_STALL_PACKET;
SCSICSWProcess(SCSI_CSW_PASSED,0xbc);
break;
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -