commit-gnuradio
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commit-gnuradio] r9214 - usrp2/trunk/host-ng/apps


From: jcorgan
Subject: [Commit-gnuradio] r9214 - usrp2/trunk/host-ng/apps
Date: Fri, 8 Aug 2008 11:15:12 -0600 (MDT)

Author: jcorgan
Date: 2008-08-08 11:15:12 -0600 (Fri, 08 Aug 2008)
New Revision: 9214

Modified:
   usrp2/trunk/host-ng/apps/rx_streaming_samples.cc
Log:
Better fix for detecting file error.

Modified: usrp2/trunk/host-ng/apps/rx_streaming_samples.cc
===================================================================
--- usrp2/trunk/host-ng/apps/rx_streaming_samples.cc    2008-08-08 17:06:23 UTC 
(rev 9213)
+++ usrp2/trunk/host-ng/apps/rx_streaming_samples.cc    2008-08-08 17:15:12 UTC 
(rev 9214)
@@ -66,19 +66,22 @@
   size_t       d_nframes;
 
 protected:
-  bool         *d_err;
+  bool          d_err;
   
 public:
   
-  rx_nop_handler(size_t max_samples, bool *err=0)
-    : d_max_samples(max_samples), d_nsamples(0), d_nframes(0), d_err(err) {}
+  rx_nop_handler(size_t max_samples)
+    : d_max_samples(max_samples), d_nsamples(0), d_nframes(0), d_err(false) {}
       
   ~rx_nop_handler();
 
   size_t nframes() const { return d_nframes; }
   size_t nsamples() const { return d_nsamples; }
   size_t max_samples() const { return d_max_samples; }
-
+  bool   has_errored_p() const { return d_err; }
+  bool   has_finished_p() const 
+    { return d_max_samples == 0 ? false : d_nsamples >= d_max_samples; }
+    
   bool 
   operator()(const uint32_t *items, size_t nitems, const usrp2::rx_metadata 
*metadata)
   {
@@ -88,10 +91,7 @@
     d_nsamples += nitems;
     d_nframes++;
 
-    if (d_max_samples != 0)
-        return d_nsamples < d_max_samples;
-
-    return true;        
+    return !has_finished_p();
   }
 };
 
@@ -111,8 +111,8 @@
   
 public:
 
-  complex_16_file_writer(const std::string &filename, size_t max_samples, bool 
*err=0)
-    : rx_nop_handler(max_samples, err), d_filename(filename)
+  complex_16_file_writer(const std::string &filename, size_t max_samples)
+    : rx_nop_handler(max_samples), d_filename(filename)
   {
     d_fp = fopen(filename.c_str(), "wb");
     if (d_fp == 0){
@@ -138,8 +138,7 @@
       size_t r = fwrite(&host_items[n], sizeof(host_items[0]), host_nitems - 
n, d_fp);
       n += r;
       if (r == 0){     // out of space?
-        if (d_err)
-            *d_err = true;
+        d_err = true;
        perror(d_filename.c_str());
        ok = false;
        break;
@@ -164,8 +163,8 @@
   
 public:
 
-  complex_float_file_writer(const std::string &filename, size_t max_samples, 
bool *err=0)
-    : rx_nop_handler(max_samples, err), d_filename(filename)
+  complex_float_file_writer(const std::string &filename, size_t max_samples)
+    : rx_nop_handler(max_samples), d_filename(filename)
   {
     d_fp = fopen(filename.c_str(), "wb");
     if (d_fp == 0){
@@ -191,8 +190,7 @@
       size_t r = fwrite(&host_items[n], sizeof(host_items[0]), host_nitems - 
n, d_fp);
       n += r;
       if (r == 0){     // out of space?
-        if (d_err)
-          *d_err = true;
+        d_err = true;
        perror(d_filename.c_str());
        ok = false;
        break;
@@ -253,7 +251,7 @@
 
   int ch;
 
-  while ((ch = getopt(argc, argv, "he:m:f:d:g:No:sv")) != EOF){
+  while ((ch = getopt(argc, argv, "he:m:f:d:g:N:o:sv")) != EOF){
     double tmp;
     switch (ch){
 
@@ -291,6 +289,7 @@
       break;
 
     case 'N':
+      printf("In 'N' clause: optarg=%p &tmp=%p\n", optarg, &tmp);
       if (!strtod_si(optarg, &tmp)) {
         std::cerr << "invalid number: " << optarg << std::endl;
        usage(argv[0]);
@@ -336,12 +335,11 @@
   typedef boost::shared_ptr<rx_nop_handler> handler_sptr;
   handler_sptr handler;
 
-  bool file_err = false;
   if (output_filename){
     if (output_shorts)
-      handler = handler_sptr(new complex_16_file_writer(output_filename, 
nsamples, &file_err));
+      handler = handler_sptr(new complex_16_file_writer(output_filename, 
nsamples));
     else
-      handler = handler_sptr(new complex_float_file_writer(output_filename, 
nsamples, &file_err));
+      handler = handler_sptr(new complex_float_file_writer(output_filename, 
nsamples));
   }
   else
     handler = handler_sptr(new rx_nop_handler(nsamples));
@@ -399,8 +397,9 @@
   struct timeval start, end;
   gettimeofday(&start, 0);
 
-  while(!signaled && !file_err && 
-        (handler->max_samples() == 0 || handler->nsamples() < 
handler->max_samples())){
+  while (!signaled && 
+         !handler->has_errored_p() && 
+         !handler->has_finished_p()) {
     bool ok = u2->rx_samples(0, handler.get());
     if (!ok){
       fprintf(stderr, "u2->rx_samples failed\n");





reply via email to

[Prev in Thread] Current Thread [Next in Thread]