Hi all,
At What-the-Hack Stephane and I finally got the usrp driver almost completely 
working on windows.

We knew there still was a bug in our new code because the test_counting.py 
example told us that we still were missing some samples.
It still worked for things like fm-reception (if you miss a few samples you 
still get an audible signal)
But it bothered me because the driver is useless this way for analog-TV and 
digital reception (One of the other things I am working on)

So today I took the time to find and kill this bug once and for all.

Of course it was just a tiny mistake, but aren't they allways.

This makes gnuradio one step closer to being primetime windows ready.

See atachment for the patch and below for changelog.

Greetings,
Martin Dvh

2005-09-06  Martin Dudok van Heel <nldudok1 at olifantasia.com>

        * host/lib/fusb_win32.{cc}: Solved missing samples bug in usb code.
        (Which you could see by running test_counting.py example)

Index: host/lib/fusb_win32.cc
===================================================================
RCS file: /cvsroot/opensdr/usrp/host/lib/fusb_win32.cc,v
retrieving revision 1.2
diff -u -b -B -r1.2 fusb_win32.cc
--- host/lib/fusb_win32.cc      29 Jul 2005 21:14:09 -0000      1.2
+++ host/lib/fusb_win32.cc      6 Sep 2005 20:37:54 -0000
@@ -155,9 +155,9 @@
     return -1;
 
   int bytes_to_write = nbytes;
+  int a=0;
 
   if (d_output_short != 0) {
-       int a;
 
        buf = &d_buffer[d_curr*d_block_size +
                                                d_block_size - d_output_short];
@@ -191,7 +191,7 @@
       }
   }
 
-  memcpy(buf, buffer, bytes_to_write);
+  memcpy(buf, (void *) &(((char*)buffer)[a]), bytes_to_write);
 
   d_output_short = d_block_size - bytes_to_write;
   if (d_output_short == 0)
@@ -214,8 +214,8 @@
 
   int bytes_to_read = nbytes;
 
+  int a=0;
   if (d_input_leftover != 0) {
-       int a;
 
        buf = &d_buffer[d_curr*d_block_size +
                                                d_block_size - 
d_input_leftover];
@@ -244,7 +244,7 @@
        fprintf(stderr, "%s: usb_reap_async: %s\n",
                        __FUNCTION__, usb_strerror());
 
-  memcpy(buffer, buf, bytes_to_read);
+  memcpy((void *) &(((char*)buffer)[a]), buf, bytes_to_read);
 
   d_input_leftover = d_block_size - bytes_to_read;
   if (d_input_leftover == 0)
_______________________________________________
Discuss-gnuradio mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to