The last thread I posted had indicated problems related to overruns.

The problem turns out that start/stop weren't consistent in how they started and stopped things in gnuradio-3.0.3. It worked out that roughly every 800000 samples in my test, we got an overrun (except if the total was before the first stop()).

The problem lies in the start order:
   d_ephandle->start() followed by set_rx_enable(true)

and the stop order of:
   d_ephandle->stop() followed by set_rx_enable(false).

To fix the problem, the calls in stop() had to be flipped.

Here's the patch:
*** usrp_basic.cc.orig  2007-05-30 10:30:10.000000000 +0000
--- usrp_basic.cc       2007-05-30 10:23:11.000000000 +0000
***************
*** 541,556 ****
--- 541,565 ----
 {
   bool ok = usrp_basic::stop();

+ #if 1
+   if (!set_rx_enable(false)){
+     fprintf (stderr, "usrp_basic_rx: set_rx_enable(false) failed\n");
+     usb_strerror ();
+     ok = false;
+   }
+ #endif
   if (!d_ephandle->stop()){
     fprintf (stderr, "usrp_basic_rx: failed to stop end point streaming");
     usb_strerror ();
     ok = false;
   }
+ #if 0
   if (!set_rx_enable(false)){
     fprintf (stderr, "usrp_basic_rx: set_rx_enable(false) failed\n");
     usb_strerror ();
     ok = false;
   }
+ #endif
   return false;
 }


   Dave


_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio

Reply via email to