diff options
author | Lars Amsel <lars.amsel@ni.com> | 2020-05-20 10:02:13 +0200 |
---|---|---|
committer | Aaron Rossetto <aaron.rossetto@ni.com> | 2020-06-11 08:26:23 -0500 |
commit | 5476ec584efaa47bf986b360332973f3cf70b3ee (patch) | |
tree | 5d99d07ce5f907cc0d931f5cd97ed4d33e1d6b5c | |
parent | f832a176d997713b1b0c515d4a7fdb217a0c855a (diff) | |
download | uhd-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.py | 39 |
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): |