📄 test_hcd.c
字号:
urb->DataLength = 13;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* read capacity */
/* CBW */
// urb->Ed = bulkOutEd;
urb->EndPointNum = UDISK_BULK_OUT_EPNUM;
urb->Direction = USB_DIR_OUT;
urb->SetupPacket = NULL;
urb->DataBuffer = ReadCapacity;
urb->DataLength = 31;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* DATA */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[4];
urb->DataLength = 8;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* CSW */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[5];
urb->DataLength = 13;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* mode sense */
/* CBW */
// urb->Ed = bulkOutEd;
urb->EndPointNum = UDISK_BULK_OUT_EPNUM;
urb->Direction = USB_DIR_OUT;
urb->SetupPacket = NULL;
urb->DataBuffer = ModeSense;
urb->DataLength = 31;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* DATA */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[6];
urb->DataLength = 8;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* CSW */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[7];
urb->DataLength = 13;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* test unit ready */
/* CBW */
// urb->Ed = bulkOutEd;
urb->EndPointNum = UDISK_BULK_OUT_EPNUM;
urb->Direction = USB_DIR_OUT;
urb->SetupPacket = NULL;
urb->DataBuffer = TestUnitReady;
urb->DataLength = 31;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* CSW */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[8];
urb->DataLength = 13;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* request sense */
/* CBW */
// urb->Ed = bulkOutEd;
urb->EndPointNum = UDISK_BULK_OUT_EPNUM;
urb->Direction = USB_DIR_OUT;
urb->SetupPacket = NULL;
urb->DataBuffer = RequsetSense;
urb->DataLength = 31;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* DATA */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[9];
urb->DataLength = 18;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* CSW */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[10];
urb->DataLength = 13;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* read LBA16 */
/* CBW */
// urb->Ed = bulkOutEd;
urb->EndPointNum = UDISK_BULK_OUT_EPNUM;
urb->Direction = USB_DIR_OUT;
urb->SetupPacket = NULL;
urb->DataBuffer = ReadLBA16;
urb->DataLength = 31;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* DATA */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = buffer;
urb->DataLength = 8192;
urb->IsUseDMA = UDISK_BULK_DMA_EN;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* CSW */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[12];
urb->DataLength = 13;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
if (HciSendUrb(urb) != NO_ERROR)
return FALSE;
/* write LBA0 */
/* CBW */
// urb->Ed = bulkOutEd;
urb->EndPointNum = UDISK_BULK_OUT_EPNUM;
urb->Direction = USB_DIR_OUT;
urb->SetupPacket = NULL;
urb->DataBuffer = WriteLBA16;
urb->DataLength = 31;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
// if (HciSendUrb(urb) != NO_ERROR)
// return FALSE;
/* DATA */
// urb->Ed = bulkOutEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = buffer;
urb->DataLength = 8192;
urb->IsUseDMA = UDISK_BULK_DMA_EN;
urb->Err = NO_ERROR;
// if (HciSendUrb(urb) != NO_ERROR)
// return FALSE;
/* CSW */
// urb->Ed = bulkInEd;
urb->EndPointNum = UDISK_BULK_IN_EPNUM;
urb->Direction = USB_DIR_IN;
urb->SetupPacket = NULL;
urb->DataBuffer = val[13];
urb->DataLength = 13;
urb->IsUseDMA = 0;
urb->Err = NO_ERROR;
// if (HciSendUrb(urb) != NO_ERROR)
// return FALSE;
return TRUE;
}
#endif
volatile OTG_REG XDATA *otg = (volatile OTG_REG XDATA *)OTG_REG_ADDR;
#ifdef PPP
int
main(void)
{
VOID XDATA *hci;
URB XDATA urb;
HC_RH_PORT XDATA *port;
BOOL flag = 1;
/* init OTG into host mode */
OpenSysTime();
hci = AllocHci();
OpenHci(hci);
port = &hci->Port[0];
while(1)
{
HciPollRootHub(hci);
if (port->IsChange)
{
if (port->IsConnect)
{
urb.HcPriv = hci;
urb.FuncAddr = 0;
urb.EndPointNum = 0;
urb.TransferType = USB_ENDPOINT_XFER_CONTROL;
urb.Direction = USB_DIR_IN;
urb.MaxPacketSize = 8;
urb.Interval = 0;
if (!TestUdiskCtrl(&urb))
flag = 0;
}
else if (!port->IsConnect)
{
flag = 1;
}
}
else if (port->IsConnect)
{
if (!TestUdiskBulk(&urb, (BYTE XDATA *)0xB000))
{
flag = 0;
}
}
}
}
#endif
DWORD XDATA gCnt = 0;
int
main(void)
{
VOID XDATA *usb;
VOID XDATA *hub;
DWORD a, b;
// WORD DATA i;
BYTE err;
/* init OTG into host mode */
OpenSysTime();
usb = AllocUsbBus();
OpenUsb(usb);
hub = AllocHub();
OpenHub(hub, usb);
a = GetSysTime();
while(1)
{
HubPoll(hub);
if (GetStorLun() != 0)
{
// a = GetSysTime();
// for (i = 0; i < 1000; ++i)
gCnt++;
err = StorReadBlock(0, 0, 0xB000, 8);
if (err != 0)
{
b = GetSysTime();
b = b - a;
a = err;
}
// b = b - a;
// ApplyREQ();
// ReleaseREQ();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -