static int GeckoRead(int connection, u8 *buf, u32 len, u32 tout) // timeout in msec { u32 read = 0; s32 ret = 0; u32 t; t = ticks_to_millisecs(gettime()) + tout; while (read < len) { ret = usb_recvbuffer_safe_ex(connection, buf + read, len - read, 500); if (ret > 0) { t = ticks_to_millisecs(gettime()) + tout; read += ret; } else usleep (1000); if (ticks_to_millisecs(gettime()) > t) break; } return read; }
int usb_recvbuffer_safe(s32 chn,void *buffer,int size) { return usb_recvbuffer_safe_ex(chn, buffer, size, -1); }