[Top][All Lists]
[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");
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Commit-gnuradio] r9214 - usrp2/trunk/host-ng/apps,
jcorgan <=