summaryrefslogtreecommitdiff
path: root/gr-uhd/apps/uhd_app.py
diff options
context:
space:
mode:
Diffstat (limited to 'gr-uhd/apps/uhd_app.py')
-rw-r--r--gr-uhd/apps/uhd_app.py35
1 files changed, 27 insertions, 8 deletions
diff --git a/gr-uhd/apps/uhd_app.py b/gr-uhd/apps/uhd_app.py
index ff4412a140..652a9fbab6 100644
--- a/gr-uhd/apps/uhd_app.py
+++ b/gr-uhd/apps/uhd_app.py
@@ -42,12 +42,25 @@ LONG_TPL = """{prefix} Motherboard: {mb_id} ({mb_serial})
"""
class UHDApp(object):
+ " Base class for simple UHD-based applications "
def __init__(self, prefix=None, args=None):
self.prefix = prefix
self.args = args
self.verbose = args.verbose or 0
if self.args.sync == 'auto' and len(self.args.channels) > 1:
self.args.sync = 'pps'
+ self.antenna = None
+ self.gain_range = None
+ self.samp_rate = None
+ self.has_lo_sensor = None
+ self.async_msgq = None
+ self.async_src = None
+ self.async_rcv = None
+ self.tr = None
+ self.gain = None
+ self.freq = None
+ self.channels = None
+ self.cpu_format = None
def vprint(self, *args):
"""
@@ -78,7 +91,7 @@ class UHDApp(object):
if info_pp['mb_serial'] == "":
info_pp['mb_serial'] = "no serial"
info_pp['db_subdev'] = usrp_info["{xx}_subdev_name".format(xx=tx_or_rx)]
- info_pp['db_serial'] = ", " + usrp_info["{xx}_serial".format(xx=tx_or_rx)]
+ info_pp['db_serial'] = ", " + usrp_info["{xx}_serial".format(xx=tx_or_rx)]
if info_pp['db_serial'] == "":
info_pp['db_serial'] = "no serial"
info_pp['subdev'] = self.usrp.get_subdev_spec(mboard)
@@ -112,12 +125,12 @@ class UHDApp(object):
"""
Call this when USRP async metadata needs printing.
"""
- md = self.async_src.msg_to_async_metadata_t(msg)
+ metadata = self.async_src.msg_to_async_metadata_t(msg)
print("[{prefix}] Channel: {chan} Time: {t} Event: {e}".format(
prefix=self.prefix,
- chan=md.channel,
- t=md.time_spec.get_real_secs(),
- e=md.event_code,
+ chan=metadata.channel,
+ t=metadata.time_spec.get_real_secs(),
+ e=metadata.event_code,
))
def setup_usrp(self, ctor, args, cpu_format='fc32'):
@@ -141,9 +154,13 @@ class UHDApp(object):
if args.spec:
for mb_idx in xrange(self.usrp.get_num_mboards()):
self.usrp.set_subdev_spec(args.spec, mb_idx)
- # Set the clock source:
+ # Set the clock and/or time source:
if args.clock_source is not None:
- self.usrp.set_clock_source(args.clock_source)
+ for mb_idx in xrange(self.usrp.get_num_mboards()):
+ self.usrp.set_clock_source(args.clock_source, mb_idx)
+ if args.time_source is not None:
+ for mb_idx in xrange(self.usrp.get_num_mboards()):
+ self.usrp.set_time_source(args.time_source, mb_idx)
# Sampling rate:
self.usrp.set_samp_rate(args.samp_rate)
self.samp_rate = self.usrp.get_samp_rate()
@@ -153,7 +170,7 @@ class UHDApp(object):
if self.antenna is not None:
for i, chan in enumerate(self.channels):
if not self.antenna[i] in self.usrp.get_antennas(chan):
- self.vprint("[ERROR] {} is not a valid antenna name for this USRP device!".format(ant))
+ self.vprint("[ERROR] {} is not a valid antenna name for this USRP device!".format(self.antenna[i]))
exit(1)
self.usrp.set_antenna(self.antenna[i], chan)
self.vprint("[{prefix}] Channel {chan}: Using antenna {ant}.".format(
@@ -310,5 +327,7 @@ class UHDApp(object):
default='auto', help="Set to 'pps' to sync devices to PPS")
group.add_argument("--clock-source",
help="Set the clock source; typically 'internal', 'external' or 'gpsdo'")
+ group.add_argument("--time-source",
+ help="Set the time source")
return parser