summaryrefslogtreecommitdiff
path: root/gr-usrp
diff options
context:
space:
mode:
authoreb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>2009-03-19 19:59:48 +0000
committereb <eb@221aa14e-8319-0410-a670-987f0aec2ac5>2009-03-19 19:59:48 +0000
commit1910719ec29a12be380b9fa3dcd3ab893ce87ce2 (patch)
tree87de344c79e51765761b63a65b8c5470036d6ecd /gr-usrp
parent06d584f74eb9407d804ce9d560c31d7c240b086f (diff)
Merged remainder of eb/t348 10637:10648. This adds a -N <nsamples>
argument to usrp_siggen.py, usrp_siggen.cc and test_usrp_standard_tx.cc. git-svn-id: http://gnuradio.org/svn/gnuradio/trunk@10650 221aa14e-8319-0410-a670-987f0aec2ac5
Diffstat (limited to 'gr-usrp')
-rw-r--r--gr-usrp/apps/usrp_siggen.cc32
-rw-r--r--gr-usrp/apps/usrp_siggen.h7
2 files changed, 25 insertions, 14 deletions
diff --git a/gr-usrp/apps/usrp_siggen.cc b/gr-usrp/apps/usrp_siggen.cc
index b88e811fe5..11006851a1 100644
--- a/gr-usrp/apps/usrp_siggen.cc
+++ b/gr-usrp/apps/usrp_siggen.cc
@@ -60,20 +60,20 @@ str_to_subdev(std::string spec_str)
usrp_siggen_sptr make_usrp_siggen(int which, usrp_subdev_spec spec,
double rf_freq, int interp, double wfreq,
int waveform, float amp, float gain,
- float offset)
+ float offset, long long nsamples)
{
return gnuradio::get_initial_sptr(new usrp_siggen(which, spec,
rf_freq, interp, wfreq,
waveform, amp, gain,
- offset));
+ offset, nsamples));
}
// Hierarchical block constructor, with no inputs or outputs
usrp_siggen::usrp_siggen(int which, usrp_subdev_spec spec,
double rf_freq, int interp, double wfreq,
int waveform, float amp, float gain,
- float offset) :
- gr_top_block("usrp_siggen")
+ float offset, long long nsamples)
+ : gr_top_block("usrp_siggen")
{
usrp_sink_c_sptr usrp = usrp_make_sink_c(which, interp);
@@ -126,7 +126,14 @@ usrp_siggen::usrp_siggen(int which, usrp_subdev_spec spec,
siggen->set_waveform((gr_waveform_t)waveform);
- connect(source, 0, usrp, 0);
+ if (nsamples > 0){
+ gr_block_sptr head = gr_make_head(sizeof(gr_complex), nsamples);
+ connect(source, 0, head, 0);
+ connect(head, 0, usrp, 0);
+ }
+ else {
+ connect(source, 0, usrp, 0);
+ }
}
int main(int argc, char *argv[])
@@ -140,6 +147,7 @@ int main(int argc, char *argv[])
float gain = -1; // set the d'board PGA gain
float offset = 0; // set waveform offset
int waveform;
+ double nsamples = 0; // set the number of samples to transmit (0 -> inf)
po::options_description cmdconfig("Program options");
cmdconfig.add_options()
@@ -155,9 +163,10 @@ int main(int argc, char *argv[])
("uniform", "generate Uniform random output")
("waveform-freq,w", po::value<double>(&wfreq), "set waveform frequency to FREQ")
- ("amplitdue,a", po::value<float>(&amp), "set amplitude")
+ ("amplitude,a", po::value<float>(&amp), "set amplitude")
("gain,g", po::value<float>(&gain), "set output gain to GAIN")
("offset,o", po::value<float>(&offset), "set waveform offset to OFFSET")
+ ("nsamples,N", po::value<double>(&nsamples), "number of samples to send [default=+inf]")
;
po::variables_map vm;
@@ -199,14 +208,15 @@ int main(int argc, char *argv[])
waveform = GR_SIN_WAVE;
}
- printf("which: %d\n", which);
- printf("interp: %d\n", interp);
- printf("rf_freq: %g\n", rf_freq);
- printf("amp: %f\n", amp);
+ printf("which: %d\n", which);
+ printf("interp: %d\n", interp);
+ printf("rf_freq: %g\n", rf_freq);
+ printf("amp: %f\n", amp);
+ printf("nsamples: %g\n", nsamples);
usrp_siggen_sptr top_block = make_usrp_siggen(which, spec, rf_freq,
interp, wfreq, waveform,
- amp, gain, offset);
+ amp, gain, offset, (long long) nsamples);
top_block->run();
diff --git a/gr-usrp/apps/usrp_siggen.h b/gr-usrp/apps/usrp_siggen.h
index 009a2447e5..053c4bdfa7 100644
--- a/gr-usrp/apps/usrp_siggen.h
+++ b/gr-usrp/apps/usrp_siggen.h
@@ -31,7 +31,7 @@ typedef boost::shared_ptr<usrp_siggen> usrp_siggen_sptr;
usrp_siggen_sptr make_usrp_siggen(int which, usrp_subdev_spec spec,
double rf_freq, int interp, double wfreq,
int waveform, float amp, float gain,
- float offset);
+ float offset, long long nsamples);
class usrp_siggen : public gr_top_block
{
@@ -39,11 +39,12 @@ private:
usrp_siggen(int which, usrp_subdev_spec spec,
double rf_freq, int interp, double wfreq,
int waveform, float amp, float gain,
- float offset);
+ float offset, long long nsamples);
friend usrp_siggen_sptr make_usrp_siggen(int which, usrp_subdev_spec spec,
double rf_freq, int interp, double wfreq,
int waveform, float amp, float gain,
- float offset);
+ float offset,
+ long long nsamples);
public:
gr_block_sptr source;