?? usbisr.c
字號:
#include "usbISR.h"#include "uart.h"usbEp0OutHandler(usbEnuFsm * usbEnuStatus){ //raiseLevel(); usb_1362_LockDevice(0xaa37); int i; int bufLength; uartPrintf("in the ep0 out handler\n"); printf("in the ep0 out handler\n");/*1. read host request*/ bufLength = usb_1362_device_epx_read(0, usbEnuStatus->rxBuf); if(usbEnuStatus->ep0Status & 0x04){ usb_1362_device_0_write(ISP_1363_Acknowledge_Set_Up);//ack the set-up packet usb_1362_device_0_write(ISP_1362_EP0_OUT_Clear_Buffer_reg);//clear buffer //usbEnuStatus->ep0Status = usb_1362_device_16_read(ISP_1362_DcEndpointStatus_EP0_OUT_Read_reg); }/*2. check the request*/ usbEnuStatus->usbRequest = analyseUsbRequest((char*)(usbEnuStatus->rxBuf)); uartPrintf("[uart]usb request:%d\n",usbEnuStatus->usbRequest); printf("[uart]usb request:%d\n",usbEnuStatus->usbRequest); printf("ep0 status:%x\n",usbEnuStatus->ep0Status);/*3. Do the request*/ if(!(usbEnuStatus->ep0Status & 0x60)){ printf("EP0: buffer not full. exit....\n"); usb_1362_epx_transmit(0,NULL,0); //usb_1362_device_0_write(ISP_1362_EP0_OUT_Clear_Buffer_reg);//clear buffer return; } else if((usbEnuStatus->ep0Status & 0x04)){ if(usbEnuStatus->usbRequest == -1){ usb_1362_ep0_stall(); printf("EP0 Stall!\n"); return; } doUsbStandardRequest(usbEnuStatus); } else{ printf("EP0:Do nothing\n"); } }
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -