Changeset 9214
- Timestamp:
- 08/08/08 11:15:12
- Files:
-
- usrp2/trunk/host-ng/apps/rx_streaming_samples.cc (modified) (11 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
usrp2/trunk/host-ng/apps/rx_streaming_samples.cc
r9210 r9214 67 67 68 68 protected: 69 bool *d_err;69 bool d_err; 70 70 71 71 public: 72 72 73 rx_nop_handler(size_t max_samples , bool *err=0)74 : d_max_samples(max_samples), d_nsamples(0), d_nframes(0), d_err( err) {}73 rx_nop_handler(size_t max_samples) 74 : d_max_samples(max_samples), d_nsamples(0), d_nframes(0), d_err(false) {} 75 75 76 76 ~rx_nop_handler(); … … 79 79 size_t nsamples() const { return d_nsamples; } 80 80 size_t max_samples() const { return d_max_samples; } 81 81 bool has_errored_p() const { return d_err; } 82 bool has_finished_p() const 83 { return d_max_samples == 0 ? false : d_nsamples >= d_max_samples; } 84 82 85 bool 83 86 operator()(const uint32_t *items, size_t nitems, const usrp2::rx_metadata *metadata) … … 89 92 d_nframes++; 90 93 91 if (d_max_samples != 0) 92 return d_nsamples < d_max_samples; 93 94 return true; 94 return !has_finished_p(); 95 95 } 96 96 }; … … 112 112 public: 113 113 114 complex_16_file_writer(const std::string &filename, size_t max_samples , bool *err=0)115 : rx_nop_handler(max_samples , err), d_filename(filename)114 complex_16_file_writer(const std::string &filename, size_t max_samples) 115 : rx_nop_handler(max_samples), d_filename(filename) 116 116 { 117 117 d_fp = fopen(filename.c_str(), "wb"); … … 139 139 n += r; 140 140 if (r == 0){ // out of space? 141 if (d_err) 142 *d_err = true; 141 d_err = true; 143 142 perror(d_filename.c_str()); 144 143 ok = false; … … 165 164 public: 166 165 167 complex_float_file_writer(const std::string &filename, size_t max_samples , bool *err=0)168 : rx_nop_handler(max_samples , err), d_filename(filename)166 complex_float_file_writer(const std::string &filename, size_t max_samples) 167 : rx_nop_handler(max_samples), d_filename(filename) 169 168 { 170 169 d_fp = fopen(filename.c_str(), "wb"); … … 192 191 n += r; 193 192 if (r == 0){ // out of space? 194 if (d_err) 195 *d_err = true; 193 d_err = true; 196 194 perror(d_filename.c_str()); 197 195 ok = false; … … 254 252 int ch; 255 253 256 while ((ch = getopt(argc, argv, "he:m:f:d:g:N o:sv")) != EOF){254 while ((ch = getopt(argc, argv, "he:m:f:d:g:N:o:sv")) != EOF){ 257 255 double tmp; 258 256 switch (ch){ … … 292 290 293 291 case 'N': 292 printf("In 'N' clause: optarg=%p &tmp=%p\n", optarg, &tmp); 294 293 if (!strtod_si(optarg, &tmp)) { 295 294 std::cerr << "invalid number: " << optarg << std::endl; … … 337 336 handler_sptr handler; 338 337 339 bool file_err = false;340 338 if (output_filename){ 341 339 if (output_shorts) 342 handler = handler_sptr(new complex_16_file_writer(output_filename, nsamples , &file_err));340 handler = handler_sptr(new complex_16_file_writer(output_filename, nsamples)); 343 341 else 344 handler = handler_sptr(new complex_float_file_writer(output_filename, nsamples , &file_err));342 handler = handler_sptr(new complex_float_file_writer(output_filename, nsamples)); 345 343 } 346 344 else … … 400 398 gettimeofday(&start, 0); 401 399 402 while(!signaled && !file_err && 403 (handler->max_samples() == 0 || handler->nsamples() < handler->max_samples())){ 400 while (!signaled && 401 !handler->has_errored_p() && 402 !handler->has_finished_p()) { 404 403 bool ok = u2->rx_samples(0, handler.get()); 405 404 if (!ok){
