[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commit-gnuradio] r4405 - gnuradio/branches/releases/3.0/usrp/host/lib
From: |
jcorgan |
Subject: |
[Commit-gnuradio] r4405 - gnuradio/branches/releases/3.0/usrp/host/lib |
Date: |
Wed, 7 Feb 2007 11:10:46 -0700 (MST) |
Author: jcorgan
Date: 2007-02-07 11:10:46 -0700 (Wed, 07 Feb 2007)
New Revision: 4405
Modified:
gnuradio/branches/releases/3.0/usrp/host/lib/fusb_win32.cc
Log:
Applied changeset r4153 on trunk to release branch.
Modified: gnuradio/branches/releases/3.0/usrp/host/lib/fusb_win32.cc
===================================================================
--- gnuradio/branches/releases/3.0/usrp/host/lib/fusb_win32.cc 2007-02-07
18:06:50 UTC (rev 4404)
+++ gnuradio/branches/releases/3.0/usrp/host/lib/fusb_win32.cc 2007-02-07
18:10:46 UTC (rev 4405)
@@ -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] r4405 - gnuradio/branches/releases/3.0/usrp/host/lib,
jcorgan <=