- while ((ch = getopt (argc, argv, "vfdcI:F:a:DM:B:N:R")) != EOF){
- switch (ch){
- case 'f':
- max_bytes = 0;
- break;
-
- case 'v':
- verbose_p = true;
- break;
-
- case 'd':
- dump_regs_p = true;
- break;
-
- case 'D':
- dc_p = true;
- break;
-
-#if 0
- case 'l':
- loopback_p = true;
- break;
-#endif
-
- case 'c':
- counting_p = true;
- break;
-
- case 'I':
- interp = strtol (optarg, 0, 0);
- break;
-
- case 'F':
- center_freq = strtod (optarg, 0);
- break;
-
- case 'a':
- ampl = strtod (optarg, 0);
- break;
-
- case 'M':
- max_bytes = strtol (optarg, 0, 0) * (1L << 20);
- if (max_bytes < 0) max_bytes = 0;
- break;
-
- case 'B':
- fusb_block_size = strtol (optarg, 0, 0);
- break;
+ po::options_description cmdconfig("Program options");
+ cmdconfig.add_options()
+ ("help,h", "produce help message")
+ ("which,W", po::value<int>(&which), "select which USRP board")
+ ("tx-subdev-spec,T", po::value<std::string>(), "select USRP Tx side A or B")
+ ("rf-freq,f", po::value<double>(), "set RF center frequency to FREQ")
+ ("interp,i", po::value<int>(&interp), "set fgpa interpolation rate to INTERP")
+
+ ("sine", "generate a complex sinusoid [default]")
+ ("const", "generate a constant output")
+
+ //("waveform-freq,w", po::value<double>(&wfreq), "set waveform frequency to FREQ")
+ ("amplitude,a", po::value<float>(&), "set amplitude")
+ ("gain,g", po::value<float>(&gain), "set output gain to GAIN [default=MAX]")
+ //("offset,o", po::value<float>(&offset), "set waveform offset to OFFSET")
+ ("nsamples,N", po::value<double>(&nsamples), "number of samples to send [default=32M]")
+ ;
+
+ po::variables_map vm;
+ po::store(po::command_line_parser(argc, argv).
+ options(cmdconfig).run(), vm);
+ po::notify(vm);
+
+ if (vm.count("help")) {
+ std::cout << cmdconfig << "\n";
+ return 1;
+ }
+
+ if(vm.count("tx-subdev-spec")) {
+ std::string s = vm["tx-subdev-spec"].as<std::string>();
+ spec = str_to_subdev(s);
+ }