summaryrefslogtreecommitdiff
path: root/gr-usrp2/src/usrp2_sink_16sc.cc
diff options
context:
space:
mode:
authorJohnathan Corgan2010-06-19 11:27:56 -0700
committerJohnathan Corgan2010-06-19 11:27:56 -0700
commite20160b7cc480176ba629ebfbe9fb073963c25d3 (patch)
tree5651ad07a8d2ccf7869edf6c33a5a22b2831846c /gr-usrp2/src/usrp2_sink_16sc.cc
parentf0b3dab8125979630651e8d016be296ae607c641 (diff)
downloadgnuradio-e20160b7cc480176ba629ebfbe9fb073963c25d3.tar.gz
gnuradio-e20160b7cc480176ba629ebfbe9fb073963c25d3.tar.bz2
gnuradio-e20160b7cc480176ba629ebfbe9fb073963c25d3.zip
gr-usrp2: implement start_streaming_at(usrp2::fpga_timestamp time)
This new method on usrp2.sink_* causes the first TX sample data to be sent at the FPGA clock time specified, with all further data immediately following. u = usrp2.sink_32fc() # or 16sc ...configure sink here... u.sync_to_pps() ...delay a second for PPS to have happened u.start_streaming_at(int(100e6)) # start TX stream one second later ...start flowgraph here... If this function is not called, all transmit data will be sent immediately (the prior behavior).
Diffstat (limited to 'gr-usrp2/src/usrp2_sink_16sc.cc')
-rw-r--r--gr-usrp2/src/usrp2_sink_16sc.cc16
1 files changed, 12 insertions, 4 deletions
diff --git a/gr-usrp2/src/usrp2_sink_16sc.cc b/gr-usrp2/src/usrp2_sink_16sc.cc
index 1e7c54dcd..75cc1f4a6 100644
--- a/gr-usrp2/src/usrp2_sink_16sc.cc
+++ b/gr-usrp2/src/usrp2_sink_16sc.cc
@@ -67,12 +67,20 @@ usrp2_sink_16sc::work(int noutput_items,
return 0;
usrp2::tx_metadata metadata;
- metadata.timestamp = -1;
- metadata.send_now = 1;
+
+ // Set TX metadata to either start time or now
+ if (d_should_wait == true) {
+ metadata.timestamp = d_tx_time;
+ metadata.send_now = 0;
+ d_should_wait = false;
+ }
+ else {
+ metadata.timestamp = -1;
+ metadata.send_now = 1;
+ }
metadata.start_of_burst = 1;
- bool ok = d_u2->tx_16sc(0, // FIXME: someday, streams will have channel numbers
- in, noutput_items, &metadata);
+ bool ok = d_u2->tx_16sc(0, in, noutput_items, &metadata);
if (!ok){
std::cerr << "usrp2_sink_16sc: tx_16sc failed" << std::endl;
return -1; // say we're done