- __usb_ep_read(ep_num, ep_buffer, size, usb_endpointRead_complete);
- while (!rx_done)
- cpu_relax();
- memcpy(buffer, ep_buffer, rx_size);
+ __usb_ep_read(ep_num, ep_buffer[ep_num], size,
+ usb_endpointRead_complete);
+ if (timeout < 0)
+ event_wait(&usb_event_done[ep_num >> 1]);
+ else
+ if (!event_waitTimeout(&usb_event_done[ep_num >> 1], timeout))
+ return 0;
+ memcpy(buffer, ep_buffer[ep_num], rx_size);