summaryrefslogtreecommitdiff
path: root/gr-uhd
diff options
context:
space:
mode:
Diffstat (limited to 'gr-uhd')
-rw-r--r--gr-uhd/apps/uhd_app.py85
-rwxr-xr-xgr-uhd/apps/uhd_fft5
-rw-r--r--gr-uhd/lib/CMakeLists.txt6
-rw-r--r--gr-uhd/lib/usrp_source_impl.cc5
-rw-r--r--gr-uhd/lib/usrp_source_impl.h1
5 files changed, 45 insertions, 57 deletions
diff --git a/gr-uhd/apps/uhd_app.py b/gr-uhd/apps/uhd_app.py
index f9b08a6457..7fccf858dc 100644
--- a/gr-uhd/apps/uhd_app.py
+++ b/gr-uhd/apps/uhd_app.py
@@ -61,6 +61,11 @@ class UHDApp(object):
self.freq = None
self.channels = None
self.cpu_format = None
+ self.spec = None
+ self.clock_source = None
+ self.time_source = None
+ self.lo_source = None
+ self.lo_export = None
def vprint(self, *args):
"""
@@ -106,43 +111,21 @@ class UHDApp(object):
except:
return "Can't establish USRP info."
- def normalize_antenna_sel(self, args):
+ def normalize_sel(self, num_name, arg_name, num, arg):
"""
- Make sure the --antenna option matches the --channels option.
+ num_name: meaningful name why we need num arguments
+ arg_name: name of current argument
+ num: required number of arguments
+ arg: actual argument
"""
- if args.antenna is None:
+ if arg is None:
return None
- antennas = [x.strip() for x in args.antenna.split(",")]
- if len(antennas) != 1 and len(antennas) != len(args.channels):
- raise ValueError("Invalid antenna setting for {n} channels: {a}".format(
- n=len(self.channels), a=args.antenna,
+ args = [x.strip() for x in arg.split(",")]
+ if len(args) != num:
+ raise ValueError("Invalid {m} setting for {n} {b}: {a}".format(
+ m=arg_name, n=num, a=arg, b=num_name
))
- if len(antennas) == 1:
- antennas = [antennas[0],] * len(args.channels)
- return antennas
-
- def normalize_subdev_sel(self, spec):
- """
- """
- if spec is None:
- return None
- specs = [x.strip() for x in spec.split(",")]
- if len(specs) == 1:
- return spec
- elif len(specs) != self.usrp.get_num_mboards():
- raise ValueError("Invalid subdev setting for {n} mboards: {a}".format(
- n=len(self.usrp.get_num_mboards()), a=spec
- ))
- return specs
-
- def normalize_lo_source_export_sel(self, args):
- lo_source = [x.strip() for x in args.lo_source.split(",")]
- lo_export = [x.strip() for x in args.lo_export.split(",")]
- if len(lo_source) != len(self.channels):
- raise ValueError("Invalid number of lo-source settings {n} for {c} channels. Must be one argument per channel.".format(n=len(lo_source), c=len(args.channels)))
- if len(lo_export) != len(self.channels):
- raise ValueError("Invalid number of lo-export settings {n} for {c} channels. Must be one argument per channel.".format(n=len(lo_source), c=len(args.channels)))
- return (lo_source, lo_export)
+ return args
def async_callback(self, msg):
"""
@@ -174,30 +157,43 @@ class UHDApp(object):
)
)
# Set the subdevice spec:
- args.spec = self.normalize_subdev_sel(args.spec)
- if args.spec:
+ self.spec = self.normalize_sel("mboards", "subdev",
+ self.usrp.get_num_mboards(), args.spec)
+ if self.spec:
for mb_idx in xrange(self.usrp.get_num_mboards()):
- if isinstance(args.spec, list):
- self.usrp.set_subdev_spec(args.spec[mb_idx], mb_idx)
+ if len(self.spec) == 1:
+ self.usrp.set_subdev_spec(self.spec, mb_idx)
else:
- self.usrp.set_subdev_spec(args.spec, mb_idx)
+ self.usrp.set_subdev_spec(self.spec[mb_idx], mb_idx)
# Set the clock and/or time source:
if args.clock_source is not None:
+ self.clock_source = self.normalize_sel("mboards", "clock-source",
+ self.usrp.get_num_mboards(), args.clock_source)
for mb_idx in xrange(self.usrp.get_num_mboards()):
- self.usrp.set_clock_source(args.clock_source, mb_idx)
+ if len(self.clock_source) == 1:
+ self.usrp.set_clock_source(self.clock_source[0], mb_idx)
+ else:
+ self.usrp.set_clock_source(self.clock_source[mb_idx], mb_idx)
if args.time_source is not None:
+ self.time_source = self.normalize_sel("mboards", "time-source",
+ self.usrp.get_num_mboards(), args.time_source)
for mb_idx in xrange(self.usrp.get_num_mboards()):
- self.usrp.set_time_source(args.time_source, mb_idx)
+ if len(self.time_source) == 1:
+ self.usrp.set_time_source(self.time_source[0], mb_idx)
+ else:
+ self.usrp.set_time_source(self.time_source[mb_idx], mb_idx)
# Sampling rate:
self.usrp.set_samp_rate(args.samp_rate)
self.samp_rate = self.usrp.get_samp_rate()
self.vprint("Using sampling rate: {rate}".format(rate=self.samp_rate))
# Set the antenna:
- self.antenna = self.normalize_antenna_sel(args)
+ self.antenna = self.normalize_sel("channels", "antenna", len(args.channels), args.antenna)
if self.antenna is not None:
+ if len(self.antenna) == 1:
+ self.antenna = self.antenna * len(args.channels)
for i, chan in enumerate(self.channels):
if not self.antenna[i] in self.usrp.get_antennas(i):
- self.vprint("[ERROR] {} is not a valid antenna name for this USRP device!".format(self.antenna[i]))
+ print("[ERROR] {} is not a valid antenna name for this USRP device!".format(self.antenna[i]))
exit(1)
self.usrp.set_antenna(self.antenna[i], i)
self.vprint("[{prefix}] Channel {chan}: Using antenna {ant}.".format(
@@ -215,8 +211,9 @@ class UHDApp(object):
self.has_lo_sensor = 'lo_locked' in self.usrp.get_sensor_names()
# Set LO export and LO source operation
if (args.lo_export is not None) and (args.lo_source is not None):
- (args.lo_source,args.lo_export) = self.normalize_lo_source_export_sel(args)
- for chan,lo_source,lo_export in zip(self.channels,args.lo_source,args.lo_export):
+ self.lo_source = self.normalize_sel("channels", "lo-source", len(self.channels), args.lo_source)
+ self.lo_export = self.normalize_sel("channels", "lo-export", len(self.channels), args.lo_export)
+ for chan, lo_source, lo_export in zip(self.channels, self.lo_source, self.lo_export):
if (lo_source == "None") or (lo_export == "None"):
continue
if lo_export == "True":
diff --git a/gr-uhd/apps/uhd_fft b/gr-uhd/apps/uhd_fft
index b65bb7a062..1f0cf1cda5 100755
--- a/gr-uhd/apps/uhd_fft
+++ b/gr-uhd/apps/uhd_fft
@@ -98,6 +98,7 @@ class uhd_fft(gr.top_block, Qt.QWidget, UHDApp):
self.stream_args = args.stream_args
self.update_rate = args.update_rate
self.wire_format = args.otw_format
+ self.lo_offset = args.lo_offset
##################################################
# Variables
@@ -128,7 +129,7 @@ class uhd_fft(gr.top_block, Qt.QWidget, UHDApp):
self.setup_usrp(uhd.usrp_source, args)
self._ant_options = self.usrp.get_antennas(0)
for c in range(len(self.channels)):
- self.usrp.set_bandwidth(self.samp_rate, c)
+ self.usrp.set_bandwidth(self.samp_rate + abs(self.lo_offset), c)
self.usrp_device_info = self.get_usrp_info_string(compact=True, tx_or_rx='rx')
### Now set up the GUI widgets: #####################################
@@ -431,7 +432,7 @@ class uhd_fft(gr.top_block, Qt.QWidget, UHDApp):
self.qtgui_waterfall_sink_x_0.set_frequency_range(self.freq, self.samp_rate)
self.usrp.set_samp_rate(self.samp_rate)
for c in range(len(self.channels)):
- self.usrp.set_bandwidth(self.samp_rate, c)
+ self.usrp.set_bandwidth(self.samp_rate + abs(self.lo_offset), c)
def set_lo_locked_probe(self, lo_locked_probe):
self.lo_locked_probe = lo_locked_probe
diff --git a/gr-uhd/lib/CMakeLists.txt b/gr-uhd/lib/CMakeLists.txt
index be77e22556..c6622566f1 100644
--- a/gr-uhd/lib/CMakeLists.txt
+++ b/gr-uhd/lib/CMakeLists.txt
@@ -25,13 +25,11 @@ include_directories(
${GR_UHD_INCLUDE_DIRS}
${GNURADIO_RUNTIME_INCLUDE_DIRS}
${UHD_INCLUDE_DIRS}
- ${LOG4CXX_INCLUDE_DIRS}
${Boost_INCLUDE_DIRS}
)
link_directories(
${UHD_LIBRARY_DIRS}
- ${LOG4CXX_LIBRARY_DIRS}
${Boost_LIBRARY_DIRS}
)
@@ -39,9 +37,6 @@ if(ENABLE_GR_CTRLPORT)
ADD_DEFINITIONS(-DGR_CTRLPORT)
endif(ENABLE_GR_CTRLPORT)
-include_directories(${LOG4CPP_INCLUDE_DIRS})
-link_directories(${LOG4CPP_LIBRARY_DIRS})
-
########################################################################
# Setup library
########################################################################
@@ -70,7 +65,6 @@ list(APPEND uhd_libs
gnuradio-runtime
${Boost_LIBRARIES}
${UHD_LIBRARIES}
- ${LOG4CPP_LIBRARIES}
)
add_library(gnuradio-uhd SHARED ${gr_uhd_sources})
diff --git a/gr-uhd/lib/usrp_source_impl.cc b/gr-uhd/lib/usrp_source_impl.cc
index 11b6300406..23b94c684f 100644
--- a/gr-uhd/lib/usrp_source_impl.cc
+++ b/gr-uhd/lib/usrp_source_impl.cc
@@ -79,7 +79,6 @@ namespace gr {
_id = pmt::string_to_symbol(str.str());
_samp_rate = this->get_samp_rate();
- _center_freq = this->get_center_freq(0);
#ifdef GR_UHD_USE_STREAM_API
_samps_per_packet = 1;
#endif
@@ -144,10 +143,8 @@ namespace gr {
usrp_source_impl::set_center_freq(const ::uhd::tune_request_t tune_request,
size_t chan)
{
- const size_t user_chan = chan;
chan = _stream_args.channels[chan];
const ::uhd::tune_result_t res = _dev->set_rx_freq(tune_request, chan);
- _center_freq = this->get_center_freq(user_chan);
_tag_now = true;
return res;
}
@@ -657,7 +654,7 @@ namespace gr {
this->add_item_tag(i, nitems_written(0), RATE_KEY,
pmt::from_double(_samp_rate), _id);
this->add_item_tag(i, nitems_written(0), FREQ_KEY,
- pmt::from_double(_center_freq), _id);
+ pmt::from_double(this->get_center_freq(i)), _id);
}
}
break;
diff --git a/gr-uhd/lib/usrp_source_impl.h b/gr-uhd/lib/usrp_source_impl.h
index ab0f5c62c4..7ee5a138d4 100644
--- a/gr-uhd/lib/usrp_source_impl.h
+++ b/gr-uhd/lib/usrp_source_impl.h
@@ -135,7 +135,6 @@ namespace gr {
//tag shadows
double _samp_rate;
- double _center_freq;
boost::recursive_mutex d_mutex;
};