aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLars Amsel <lars.amsel@ni.com>2020-05-20 10:02:13 +0200
committerAaron Rossetto <aaron.rossetto@ni.com>2020-06-11 08:26:23 -0500
commit5476ec584efaa47bf986b360332973f3cf70b3ee (patch)
tree5d99d07ce5f907cc0d931f5cd97ed4d33e1d6b5c
parentf832a176d997713b1b0c515d4a7fdb217a0c855a (diff)
downloaduhd-5476ec584efaa47bf986b360332973f3cf70b3ee.tar.gz
uhd-5476ec584efaa47bf986b360332973f3cf70b3ee.tar.bz2
uhd-5476ec584efaa47bf986b360332973f3cf70b3ee.zip
examples: Fix usrp_power_meter example
This PR applies antenna channel settings before available calibration data, and moves initialization code to setup_device, returning necessary settings in a tuple.
-rw-r--r--host/examples/python/usrp_power_meter.py39
1 files changed, 23 insertions, 16 deletions
diff --git a/host/examples/python/usrp_power_meter.py b/host/examples/python/usrp_power_meter.py
index 7cd3dd3f6..ffda7d32e 100644
--- a/host/examples/python/usrp_power_meter.py
+++ b/host/examples/python/usrp_power_meter.py
@@ -47,10 +47,27 @@ def get_streamer(usrp, chan):
stream_args.channels = [chan]
return usrp.get_rx_stream(stream_args)
-def setup_device(usrp, args, chan):
+def setup_device(usrp, args):
"""
Apply the settings from args to the device
"""
+ chan = args.channel
+ if chan > usrp.get_rx_num_channels():
+ print("ERROR: Invalid channel selected: {} (only {} channels available!)"
+ .format(chan, usrp.get_rx_num_channels()))
+ raise RuntimeError("Invalid channel selected")
+ print("Using channel: {}".format(chan))
+
+ if args.antenna:
+ print("Setting RX antenna to `{}'...".format(args.antenna), end='')
+ usrp.set_rx_antenna(args.antenna, chan)
+ print("OK")
+
+ if not usrp.has_rx_power_reference(chan):
+ antenna = usrp.get_rx_antenna()
+ print("ERROR: This device is not calibrated for RX at RF%d-%s!" % (chan, antenna))
+ raise RuntimeError("Device not calibrated for selected antenna")
+
print("Requesting RX rate of {} Msps...".format(args.rate / 1e6), end='')
usrp.set_rx_rate(args.rate, chan)
if abs(usrp.get_rx_rate(chan) - args.rate) > 1.0:
@@ -58,10 +75,7 @@ def setup_device(usrp, args, chan):
.format(usrp.get_rx_rate(chan) / 1e6))
else:
print("OK")
- if args.antenna:
- print("Setting RX antenna to `{}'...".format(args.antenna), end='')
- usrp.set_rx_antenna(args.antenna, chan)
- print("OK")
+
print("Requesting RX frequency of {} MHz...".format(args.freq / 1e6), end='')
tr = uhd.types.TuneRequest(args.freq, args.lo_offset)
usrp.set_rx_freq(tr, chan)
@@ -69,6 +83,7 @@ def setup_device(usrp, args, chan):
print("ALMOST. Actual frequency: {} MHz".format(usrp.get_rx_freq(chan) / 1e6))
else:
print("OK")
+
print("Requesting RX power reference level of {:.2f} dBm..."
.format(args.ref_level), end='')
usrp.set_rx_power_reference(args.ref_level, chan)
@@ -77,6 +92,7 @@ def setup_device(usrp, args, chan):
print("ALMOST. Actual ref level: {:.2f} dBm".format(ref_level))
else:
print("OK")
+
if args.bandwidth:
print("Requesting analog RX bandwidth of {} Msps..."
.format(args.bandwidth), end='')
@@ -86,7 +102,7 @@ def setup_device(usrp, args, chan):
.format(usrp.get_rx_bandwidth(chan) / 1e6))
else:
print("OK")
- return ref_level
+ return (chan, ref_level)
RUN = True
@@ -96,16 +112,7 @@ def main():
"""
args = parse_args()
usrp = uhd.usrp.MultiUSRP(args.args)
- chan = args.channel
- if chan > usrp.get_rx_num_channels():
- print("ERROR: Invalid channel selected: {} (only {} channels available!)"
- .format(chan, usrp.get_rx_num_channels()))
- return False
- print("Using channel: {}".format(chan))
- if not usrp.has_rx_power_reference(chan):
- print("ERROR: This device is not calibrated for RX!")
- return False
- ref_level = setup_device(usrp, args, chan)
+ (chan, ref_level) = setup_device(usrp, args)
streamer = get_streamer(usrp, chan)
if args.mode == 'continuous':
def handle_sigint(_sig, _frame):