|
From: | Josh Blum |
Subject: | Re: [Discuss-gnuradio] precise transmit scheduling |
Date: | Thu, 04 Nov 2010 16:40:06 -0700 |
User-agent: | Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.12) Gecko/20101027 Thunderbird/3.1.6 |
I am also very interested in this. I have had some success by using gr.message_source, and having a python thread that periodically pushes new data into the system by putting it on the message queue. Transmitter auto_tr is enabled so that when the usrp runs out of data it turns off the transmit until the next message arrives. Scheduling at the python level seems very rough, with intervals varying ~+/- 1ms without tuning each time, and ~+/- 10ms when tuning before each burst. I was under the impression that calling set_rx_freq() to tune just the DUC rather than usrp.tune() should be faster/more responsive, but I haven't seen this to be true...
Im not sure how gr-usrp handles the tuning. If it helps, the UHD tuning interface will allow you to tune elements individually or as a complete chain. So you can tune the overall frequency, or just tweak the DSP frequency. Its all brought up into python FWIW.
http://www.ettus.com/uhd_docs/doxygen/html/structuhd_1_1tune__request__t.html
Any scheduling / hopping tips would be greatly appreciated!
I am going to make a overload of the UHD USRP source that pushes packet decoration (such as time, freq, sample rate) onto a message queue. An upstream block will pop off the queue as it runs its work() function.
Now, this could be done in reverse with a message queue feeding into a UHD USRP sink with timestamp information. And there you have timed, scheduled transmission of packets.
Now, the problem being, this only is possible with USRP2 as USRP1 does not currently support timestamped transmission and reception.
-Josh
[Prev in Thread] | Current Thread | [Next in Thread] |