diff options
| -rw-r--r-- | host/examples/benchmark_rx_rate.cpp | 39 | 
1 files changed, 22 insertions, 17 deletions
| diff --git a/host/examples/benchmark_rx_rate.cpp b/host/examples/benchmark_rx_rate.cpp index 118bf413c..50af1b98b 100644 --- a/host/examples/benchmark_rx_rate.cpp +++ b/host/examples/benchmark_rx_rate.cpp @@ -114,7 +114,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){      //variables to be set by po      std::string args;      double duration; -    double only_rate; +    double rate;      //setup the program options      po::options_description desc("Allowed options"); @@ -122,7 +122,7 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){          ("help", "help message")          ("args", po::value<std::string>(&args)->default_value(""), "single uhd device address args")          ("duration", po::value<double>(&duration)->default_value(10.0), "duration for each test in seconds") -        ("rate", po::value<double>(&only_rate), "specify to perform a single test as this rate (sps)") +        ("rate", po::value<double>(&rate), "specify to perform a single test as this rate (sps)")      ;      po::variables_map vm;      po::store(po::parse_command_line(argc, argv, desc), vm); @@ -134,26 +134,31 @@ int UHD_SAFE_MAIN(int argc, char *argv[]){          return ~0;      } +    //verify that rate was specified +    if (not vm.count("rate")){ +        std::cerr << "Please specify the sample rate with --rate" << std::endl; +        return ~0; +    } +      //create a usrp device      std::cout << std::endl; +    uhd::device_addrs_t device_addrs = uhd::device::find(args); +    if (device_addrs.empty()){ +        std::cerr << "Could not find any devices for: " << args << std::endl; +        return ~0; +    } +    if (device_addrs.at(0).get("type", "") == "usrp1"){ +        std::cerr << "*** Warning! ***" << std::endl; +        std::cerr << "Benchmark RX results will be inaccurate on USRP1 due to soft-time control.\n" << std::endl; +    }      std::cout << boost::format("Creating the usrp device with: %s...") % args << std::endl; -    uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(args); +    uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(device_addrs.at(0));      std::cout << boost::format("Using Device: %s") % usrp->get_pp_string() << std::endl; -    if (not vm.count("rate")){ -        usrp->set_rx_rate(500e3); //initial rate -        while(true){ -            double rate = usrp->get_rx_rate(); -            test_device(usrp, rate, duration); -            usrp->set_rx_rate(rate*2); //double the rate -            if (usrp->get_rx_rate() == rate) break; -        } -    } -    else{ -        usrp->set_rx_rate(only_rate); -        double rate = usrp->get_rx_rate(); -        test_device(usrp, rate, duration); -    } +    //start the test +    usrp->set_rx_rate(rate); +    rate = usrp->get_rx_rate(); +    test_device(usrp, rate, duration);      //finished      std::cout << std::endl << "Done!" << std::endl << std::endl; | 
