[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4153 - gnuradio/trunk/usrp/host/lib
From: |
eb |
Subject: |
[Commit-gnuradio] r4153 - gnuradio/trunk/usrp/host/lib |
Date: |
Tue, 19 Dec 2006 15:54:23 -0700 (MST) |
Author: eb
Date: 2006-12-19 15:54:23 -0700 (Tue, 19 Dec 2006)
New Revision: 4153
Modified:
gnuradio/trunk/usrp/host/lib/fusb_win32.cc
Log:
applied patch for ticket:115
Modified: gnuradio/trunk/usrp/host/lib/fusb_win32.cc
===================================================================
--- gnuradio/trunk/usrp/host/lib/fusb_win32.cc 2006-12-19 22:40:26 UTC (rev
4152)
+++ gnuradio/trunk/usrp/host/lib/fusb_win32.cc 2006-12-19 22:54:23 UTC (rev
4153)
@@ -168,33 +168,33 @@
if (d_output_short == 0)
usb_submit_async(d_context[d_curr],
&d_buffer[d_curr*d_block_size], d_block_size);
+ }
- if (bytes_to_write == 0)
- return nbytes;
+ while (bytes_to_write > 0) {
+ d_curr = (d_curr+1)%d_nblocks;
+ buf = &d_buffer[d_curr*d_block_size];
- assert(d_output_short == 0);
- }
+ if (d_outstanding_write != d_nblocks) {
+ d_outstanding_write++;
+ } else {
+ retval = usb_reap_async(d_context[d_curr], USB_TIMEOUT);
+ if (retval < 0) {
+ fprintf(stderr, "%s: usb_reap_async: %s\n",
+ __FUNCTION__, usb_strerror());
+ return retval;
+ }
+ }
- d_curr = (d_curr+1)%d_nblocks;
- buf = &d_buffer[d_curr*d_block_size];
+ int ncopy = std::min(bytes_to_write, d_block_size);
+ memcpy(buf, (void *) &(((char*)buffer)[a]), ncopy);
+ bytes_to_write -= ncopy;
+ a += ncopy;
- if (d_outstanding_write != d_nblocks) {
- d_outstanding_write++;
- } else {
- retval = usb_reap_async(d_context[d_curr], USB_TIMEOUT);
- if (retval < 0) {
- fprintf(stderr, "%s: usb_reap_async: %s\n",
- __FUNCTION__, usb_strerror());
- return retval;
- }
+ d_output_short = d_block_size - ncopy;
+ if (d_output_short == 0)
+ usb_submit_async(d_context[d_curr], buf, d_block_size);
}
- memcpy(buf, (void *) &(((char*)buffer)[a]), bytes_to_write);
-
- d_output_short = d_block_size - bytes_to_write;
- if (d_output_short == 0)
- usb_submit_async(d_context[d_curr], buf, d_block_size);
-
return retval < 0 ? retval : nbytes;
}
@@ -224,27 +224,27 @@
if (d_input_leftover == 0)
usb_submit_async(d_context[d_curr],
&d_buffer[d_curr*d_block_size], d_block_size);
-
- if (bytes_to_read == 0)
- return nbytes;
-
- assert(d_input_leftover == 0);
}
+ while (bytes_to_read > 0) {
- d_curr = (d_curr+1)%d_nblocks;
- buf = &d_buffer[d_curr*d_block_size];
+ d_curr = (d_curr+1)%d_nblocks;
+ buf = &d_buffer[d_curr*d_block_size];
- retval = usb_reap_async(d_context[d_curr], USB_TIMEOUT);
- if (retval < 0)
- fprintf(stderr, "%s: usb_reap_async: %s\n",
- __FUNCTION__, usb_strerror());
+ retval = usb_reap_async(d_context[d_curr], USB_TIMEOUT);
+ if (retval < 0)
+ fprintf(stderr, "%s: usb_reap_async: %s\n",
+ __FUNCTION__, usb_strerror());
- memcpy((void *) &(((char*)buffer)[a]), buf, bytes_to_read);
+ int ncopy = std::min(bytes_to_read, d_block_size);
+ memcpy((void *) &(((char*)buffer)[a]), buf, ncopy);
+ bytes_to_read -= ncopy;
+ a += ncopy;
- d_input_leftover = d_block_size - bytes_to_read;
- if (d_input_leftover == 0)
- usb_submit_async(d_context[d_curr], buf, d_block_size);
+ d_input_leftover = d_block_size - ncopy;
+ if (d_input_leftover == 0)
+ usb_submit_async(d_context[d_curr], buf, d_block_size);
+ }
return retval < 0 ? retval : nbytes;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r4153 - gnuradio/trunk/usrp/host/lib,
eb <=