summaryrefslogtreecommitdiff
path: root/gr-uhd
diff options
context:
space:
mode:
Diffstat (limited to 'gr-uhd')
-rwxr-xr-xgr-uhd/apps/uhd_fft6
-rw-r--r--gr-uhd/apps/uhd_siggen_base.py6
-rw-r--r--gr-uhd/examples/grc/uhd_wbfm_receive.grc234
-rw-r--r--gr-uhd/gnuradio-uhd.pc.in2
-rw-r--r--gr-uhd/include/gr_uhd_usrp_sink.h2
-rw-r--r--gr-uhd/include/gr_uhd_usrp_source.h8
-rw-r--r--gr-uhd/lib/gr_uhd_usrp_source.cc23
7 files changed, 171 insertions, 110 deletions
diff --git a/gr-uhd/apps/uhd_fft b/gr-uhd/apps/uhd_fft
index 8bb5e0d2b..7af2c5326 100755
--- a/gr-uhd/apps/uhd_fft
+++ b/gr-uhd/apps/uhd_fft
@@ -196,18 +196,18 @@ class app_top_block(stdgui2.std_top_block):
callback=self.set_gain)
try:
- mboard_id = self.u.get_usrp_info().get("mboard_id").split(" ")[0]
+ mboard_id = self.u.get_usrp_info().get("mboard_id")
mboard_serial = self.u.get_usrp_info().get("mboard_serial")
if mboard_serial == "":
mboard_serial = "no serial"
- dboard_id = self.u.get_usrp_info().get("rx_id").split(" ")[0].split(",")[0]
+ dboard_subdev_name = self.u.get_usrp_info().get("rx_subdev_name")
dboard_serial = self.u.get_usrp_info().get("rx_serial")
if dboard_serial == "":
dboard_serial = "no serial"
subdev = self.u.get_subdev_spec()
antenna = self.u.get_antenna()
- usrp_config_val = "%s (%s), %s (%s, %s, %s)" % (mboard_id, mboard_serial, dboard_id, dboard_serial, subdev, antenna)
+ usrp_config_val = "%s (%s), %s (%s, %s, %s)" % (mboard_id, mboard_serial, dboard_subdev_name, dboard_serial, subdev, antenna)
except:
usrp_config_val = "Not implemented in this version."
diff --git a/gr-uhd/apps/uhd_siggen_base.py b/gr-uhd/apps/uhd_siggen_base.py
index 5fa881e42..8c69da1cc 100644
--- a/gr-uhd/apps/uhd_siggen_base.py
+++ b/gr-uhd/apps/uhd_siggen_base.py
@@ -110,11 +110,11 @@ class top_block(gr.top_block, pubsub):
# Setup USRP Configuration value
try:
usrp_info = self._u.get_usrp_info()
- mboard_id = usrp_info.get("mboard_id").split(" ")[0]
+ mboard_id = usrp_info.get("mboard_id")
mboard_serial = usrp_info.get("mboard_serial")
if mboard_serial == "":
mboard_serial = "no serial"
- dboard_id = usrp_info.get("tx_id").split(" ")[0].split(",")[0]
+ dboard_subdev_name = usrp_info.get("tx_subdev_name")
dboard_serial = usrp_info.get("tx_serial")
if dboard_serial == "":
dboard_serial = "no serial"
@@ -122,7 +122,7 @@ class top_block(gr.top_block, pubsub):
antenna = self._u.get_antenna()
desc_key_str = "Motherboard: %s [%s]\n" % (mboard_id, mboard_serial)
- desc_key_str += "Daughterboard: %s [%s]\n" % (dboard_id, dboard_serial)
+ desc_key_str += "Daughterboard: %s [%s]\n" % (dboard_subdev_name, dboard_serial)
desc_key_str += "Subdev: %s\n" % subdev
desc_key_str += "Antenna: %s" % antenna
except:
diff --git a/gr-uhd/examples/grc/uhd_wbfm_receive.grc b/gr-uhd/examples/grc/uhd_wbfm_receive.grc
index 62658a2eb..7f14123f2 100644
--- a/gr-uhd/examples/grc/uhd_wbfm_receive.grc
+++ b/gr-uhd/examples/grc/uhd_wbfm_receive.grc
@@ -1,6 +1,6 @@
<?xml version='1.0' encoding='ASCII'?>
<flow_graph>
- <timestamp>Sat Oct 8 15:18:49 2011</timestamp>
+ <timestamp>Tue Apr 24 16:59:09 2012</timestamp>
<block>
<key>options</key>
<param>
@@ -389,7 +389,15 @@
</param>
<param>
<key>type</key>
- <value>complex</value>
+ <value>fc32</value>
+ </param>
+ <param>
+ <key>otw</key>
+ <value></value>
+ </param>
+ <param>
+ <key>stream_args</key>
+ <value></value>
</param>
<param>
<key>dev_addr</key>
@@ -408,7 +416,11 @@
<value>1</value>
</param>
<param>
- <key>ref_source0</key>
+ <key>clock_source0</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source0</key>
<value></value>
</param>
<param>
@@ -416,7 +428,11 @@
<value></value>
</param>
<param>
- <key>ref_source1</key>
+ <key>clock_source1</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source1</key>
<value></value>
</param>
<param>
@@ -424,7 +440,11 @@
<value></value>
</param>
<param>
- <key>ref_source2</key>
+ <key>clock_source2</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source2</key>
<value></value>
</param>
<param>
@@ -432,7 +452,11 @@
<value></value>
</param>
<param>
- <key>ref_source3</key>
+ <key>clock_source3</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source3</key>
<value></value>
</param>
<param>
@@ -440,7 +464,11 @@
<value></value>
</param>
<param>
- <key>ref_source4</key>
+ <key>clock_source4</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source4</key>
<value></value>
</param>
<param>
@@ -448,7 +476,11 @@
<value></value>
</param>
<param>
- <key>ref_source5</key>
+ <key>clock_source5</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source5</key>
<value></value>
</param>
<param>
@@ -456,7 +488,11 @@
<value></value>
</param>
<param>
- <key>ref_source6</key>
+ <key>clock_source6</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source6</key>
<value></value>
</param>
<param>
@@ -464,7 +500,11 @@
<value></value>
</param>
<param>
- <key>ref_source7</key>
+ <key>clock_source7</key>
+ <value></value>
+ </param>
+ <param>
+ <key>time_source7</key>
<value></value>
</param>
<param>
@@ -1036,93 +1076,6 @@
</param>
</block>
<block>
- <key>wxgui_fftsink2</key>
- <param>
- <key>id</key>
- <value>wxgui_fftsink2</value>
- </param>
- <param>
- <key>_enabled</key>
- <value>True</value>
- </param>
- <param>
- <key>type</key>
- <value>complex</value>
- </param>
- <param>
- <key>title</key>
- <value>FFT Plot</value>
- </param>
- <param>
- <key>samp_rate</key>
- <value>samp_rate</value>
- </param>
- <param>
- <key>baseband_freq</key>
- <value>(freq+fine)*1e6</value>
- </param>
- <param>
- <key>y_per_div</key>
- <value>10</value>
- </param>
- <param>
- <key>y_divs</key>
- <value>10</value>
- </param>
- <param>
- <key>ref_level</key>
- <value>0</value>
- </param>
- <param>
- <key>ref_scale</key>
- <value>2.0</value>
- </param>
- <param>
- <key>fft_size</key>
- <value>512</value>
- </param>
- <param>
- <key>fft_rate</key>
- <value>15</value>
- </param>
- <param>
- <key>peak_hold</key>
- <value>False</value>
- </param>
- <param>
- <key>average</key>
- <value>False</value>
- </param>
- <param>
- <key>avg_alpha</key>
- <value>0</value>
- </param>
- <param>
- <key>win</key>
- <value>None</value>
- </param>
- <param>
- <key>win_size</key>
- <value></value>
- </param>
- <param>
- <key>grid_pos</key>
- <value>2, 0, 2, 4</value>
- </param>
- <param>
- <key>notebook</key>
- <value></value>
- </param>
- <param>
- <key>_coordinate</key>
- <value>(624, 278)</value>
- </param>
- <param>
- <key>_rotation</key>
- <value>0</value>
- </param>
- </block>
- <block>
<key>parameter</key>
<param>
<key>id</key>
@@ -1332,6 +1285,93 @@
<value>0</value>
</param>
</block>
+ <block>
+ <key>wxgui_fftsink2</key>
+ <param>
+ <key>id</key>
+ <value>wxgui_fftsink2</value>
+ </param>
+ <param>
+ <key>_enabled</key>
+ <value>True</value>
+ </param>
+ <param>
+ <key>type</key>
+ <value>complex</value>
+ </param>
+ <param>
+ <key>title</key>
+ <value>FFT Plot</value>
+ </param>
+ <param>
+ <key>samp_rate</key>
+ <value>samp_rate</value>
+ </param>
+ <param>
+ <key>baseband_freq</key>
+ <value>(freq+fine)</value>
+ </param>
+ <param>
+ <key>y_per_div</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>y_divs</key>
+ <value>10</value>
+ </param>
+ <param>
+ <key>ref_level</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>ref_scale</key>
+ <value>2.0</value>
+ </param>
+ <param>
+ <key>fft_size</key>
+ <value>512</value>
+ </param>
+ <param>
+ <key>fft_rate</key>
+ <value>15</value>
+ </param>
+ <param>
+ <key>peak_hold</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>average</key>
+ <value>False</value>
+ </param>
+ <param>
+ <key>avg_alpha</key>
+ <value>0</value>
+ </param>
+ <param>
+ <key>win</key>
+ <value>None</value>
+ </param>
+ <param>
+ <key>win_size</key>
+ <value></value>
+ </param>
+ <param>
+ <key>grid_pos</key>
+ <value>2, 0, 2, 4</value>
+ </param>
+ <param>
+ <key>notebook</key>
+ <value></value>
+ </param>
+ <param>
+ <key>_coordinate</key>
+ <value>(624, 278)</value>
+ </param>
+ <param>
+ <key>_rotation</key>
+ <value>0</value>
+ </param>
+ </block>
<connection>
<source_block_id>gr_multiply_const_vxx</source_block_id>
<sink_block_id>audio_sink</sink_block_id>
diff --git a/gr-uhd/gnuradio-uhd.pc.in b/gr-uhd/gnuradio-uhd.pc.in
index 383ad6011..721141c52 100644
--- a/gr-uhd/gnuradio-uhd.pc.in
+++ b/gr-uhd/gnuradio-uhd.pc.in
@@ -3,7 +3,7 @@ exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=@includedir@
-Name: gnuradio-qtgui
+Name: gnuradio-uhd
Description: GNU Radio blocks for UHD
Requires: gnuradio-core
Version: @LIBVER@
diff --git a/gr-uhd/include/gr_uhd_usrp_sink.h b/gr-uhd/include/gr_uhd_usrp_sink.h
index 0b05363f7..eaf60fb77 100644
--- a/gr-uhd/include/gr_uhd_usrp_sink.h
+++ b/gr-uhd/include/gr_uhd_usrp_sink.h
@@ -133,7 +133,7 @@ public:
/*!
* Returns identifying information about this USRP's configuration.
* Returns motherboard ID, name, and serial.
- * Returns daughterboard TX ID, subdev name, and serial.
+ * Returns daughterboard TX ID, subdev name and spec, serial, and antenna.
* \param chan channel index 0 to N-1
* \return TX info
*/
diff --git a/gr-uhd/include/gr_uhd_usrp_source.h b/gr-uhd/include/gr_uhd_usrp_source.h
index 2611c5e07..b5acabee4 100644
--- a/gr-uhd/include/gr_uhd_usrp_source.h
+++ b/gr-uhd/include/gr_uhd_usrp_source.h
@@ -60,11 +60,17 @@ class uhd_usrp_source;
*
* The following tag keys will be produced by the work function:
* - pmt::pmt_string_to_symbol("rx_time")
+ * - pmt::pmt_string_to_symbol("rx_rate")
+ * - pmt::pmt_string_to_symbol("rx_freq")
*
* The timstamp tag value is a pmt tuple of the following:
* (uint64 seconds, and double fractional seconds).
* A timestamp tag is produced at start() and after overflows.
*
+ * The sample rate and center frequency tags are doubles,
+ * representing the sample rate in Sps and frequency in Hz.
+ * These tags are produced upon the user changing parameters.
+ *
* See the UHD manual for more detailed documentation:
* http://code.ettus.com/redmine/ettus/projects/uhd/wiki
*
@@ -125,7 +131,7 @@ public:
/*!
* Returns identifying information about this USRP's configuration.
* Returns motherboard ID, name, and serial.
- * Returns daughterboard RX ID, subdev name, and serial.
+ * Returns daughterboard RX ID, subdev name and spec, serial, and antenna.
* \param chan channel index 0 to N-1
* \return RX info
*/
diff --git a/gr-uhd/lib/gr_uhd_usrp_source.cc b/gr-uhd/lib/gr_uhd_usrp_source.cc
index 8aa965401..ad4cb4d81 100644
--- a/gr-uhd/lib/gr_uhd_usrp_source.cc
+++ b/gr-uhd/lib/gr_uhd_usrp_source.cc
@@ -24,10 +24,13 @@
#include <stdexcept>
#include <iostream>
#include <boost/format.hpp>
+#include <boost/thread/thread.hpp>
#include <boost/make_shared.hpp>
#include "gr_uhd_common.h"
static const pmt::pmt_t TIME_KEY = pmt::pmt_string_to_symbol("rx_time");
+static const pmt::pmt_t RATE_KEY = pmt::pmt_string_to_symbol("rx_rate");
+static const pmt::pmt_t FREQ_KEY = pmt::pmt_string_to_symbol("rx_freq");
#include <uhd/convert.hpp>
inline gr_io_signature_sptr args_to_io_sig(const uhd::stream_args_t &args){
@@ -88,6 +91,8 @@ public:
void set_samp_rate(double rate){
_dev->set_rx_rate(rate);
+ _samp_rate = this->get_samp_rate();
+ _tag_now = true;
}
double get_samp_rate(void){
@@ -105,7 +110,10 @@ public:
uhd::tune_result_t set_center_freq(
const uhd::tune_request_t tune_request, size_t chan
){
- return _dev->set_rx_freq(tune_request, chan);
+ const uhd::tune_result_t res = _dev->set_rx_freq(tune_request, chan);
+ _center_freq = this->get_center_freq(chan);
+ _tag_now = true;
+ return res;
}
double get_center_freq(size_t chan){
@@ -330,9 +338,10 @@ public:
//If receive resulted in a timeout condition:
//We now receive a single packet with a large timeout.
- if (_metadata.error_code == uhd::rx_metadata_t::ERROR_CODE_TIMEOUT){
+ while (_metadata.error_code == uhd::rx_metadata_t::ERROR_CODE_TIMEOUT){
+ if (boost::this_thread::interruption_requested()) return WORK_DONE;
num_samps = _rx_stream->recv(
- output_items, noutput_items, _metadata, 1.0, true/*one pkt*/
+ output_items, noutput_items, _metadata, 0.1, true/*one pkt*/
);
}
#else
@@ -358,9 +367,11 @@ public:
pmt::pmt_from_uint64(_metadata.time_spec.get_full_secs()),
pmt::pmt_from_double(_metadata.time_spec.get_frac_secs())
);
- //create a timestamp tag for each channel
+ //create a tag set for each channel
for (size_t i = 0; i < _nchan; i++){
this->add_item_tag(i, nitems_written(0), TIME_KEY, val, _id);
+ this->add_item_tag(i, nitems_written(0), RATE_KEY, pmt::pmt_from_double(_samp_rate), _id);
+ this->add_item_tag(i, nitems_written(0), FREQ_KEY, pmt::pmt_from_double(_center_freq), _id);
}
}
break;
@@ -508,6 +519,10 @@ private:
uhd::time_spec_t _start_time;
bool _start_time_set;
+
+ //tag shadows
+ double _samp_rate;
+ double _center_freq;
};