diff options
Diffstat (limited to 'host/python/usrp.py')
-rw-r--r-- | host/python/usrp.py | 141 |
1 files changed, 0 insertions, 141 deletions
diff --git a/host/python/usrp.py b/host/python/usrp.py deleted file mode 100644 index ce141d683..000000000 --- a/host/python/usrp.py +++ /dev/null @@ -1,141 +0,0 @@ -# -# Copyright 2017-2018 Ettus Research, a National Instruments Company -# -# SPDX-License-Identifier: GPL-3.0-or-later -# -""" @package usrp -Python UHD module containing the MultiUSRP and other objects -""" - -import numpy as np -from . import libpyuhd as lib - - -class MultiUSRP(lib.usrp.multi_usrp): - """ - MultiUSRP object for controlling devices - """ - def __init__(self, args=""): - """MultiUSRP constructor""" - super(MultiUSRP, self).__init__(args) - - def recv_num_samps(self, num_samps, freq, rate=1e6, channels=(0,), gain=10): - """ - RX a finite number of samples from the USRP - :param num_samps: number of samples to RX - :param freq: RX frequency (Hz) - :param rate: RX sample rate (Hz) - :param channels: list of channels to RX on - :param gain: RX gain (dB) - :return: numpy array of complex floating-point samples (fc32) - """ - result = np.empty((len(channels), num_samps), dtype=np.complex64) - - for chan in channels: - super(MultiUSRP, self).set_rx_rate(rate, chan) - super(MultiUSRP, self).set_rx_freq(lib.types.tune_request(freq), chan) - super(MultiUSRP, self).set_rx_gain(gain, chan) - - st_args = lib.usrp.stream_args("fc32", "sc16") - st_args.channels = channels - metadata = lib.types.rx_metadata() - streamer = super(MultiUSRP, self).get_rx_stream(st_args) - buffer_samps = streamer.get_max_num_samps() - recv_buffer = np.zeros( - (len(channels), buffer_samps), dtype=np.complex64) - - recv_samps = 0 - stream_cmd = lib.types.stream_cmd(lib.types.stream_mode.start_cont) - stream_cmd.stream_now = True - streamer.issue_stream_cmd(stream_cmd) - - samps = np.array([], dtype=np.complex64) - while recv_samps < num_samps: - samps = streamer.recv(recv_buffer, metadata) - - if metadata.error_code != lib.types.rx_metadata_error_code.none: - print(metadata.strerror()) - if samps: - real_samps = min(num_samps - recv_samps, samps) - result[:, recv_samps:recv_samps + real_samps] = recv_buffer[:, 0:real_samps] - recv_samps += real_samps - - stream_cmd = lib.types.stream_cmd(lib.types.stream_mode.stop_cont) - streamer.issue_stream_cmd(stream_cmd) - - while samps: - samps = streamer.recv(recv_buffer, metadata) - - # Help the garbage collection - streamer = None - return result - - def send_waveform(self, - waveform_proto, - duration, - freq, - rate=1e6, - channels=(0,), - gain=10): - """ - TX a finite number of samples from the USRP - :param waveform_proto: numpy array of samples to TX - :param duration: time in seconds to transmit at the supplied rate - :param freq: TX frequency (Hz) - :param rate: TX sample rate (Hz) - :param channels: list of channels to TX on - :param gain: TX gain (dB) - :return: the number of transmitted samples - """ - for chan in channels: - super(MultiUSRP, self).set_tx_rate(rate, chan) - super(MultiUSRP, self).set_tx_freq(lib.types.tune_request(freq), chan) - super(MultiUSRP, self).set_tx_gain(gain, chan) - - st_args = lib.usrp.stream_args("fc32", "sc16") - st_args.channels = channels - - streamer = super(MultiUSRP, self).get_tx_stream(st_args) - buffer_samps = streamer.get_max_num_samps() - proto_len = waveform_proto.shape[-1] - - if proto_len < buffer_samps: - waveform_proto = np.tile(waveform_proto, - (1, int(np.ceil(float(buffer_samps)/proto_len)))) - proto_len = waveform_proto.shape[-1] - - metadata = lib.types.tx_metadata() - send_samps = 0 - max_samps = int(np.floor(duration * rate)) - - if len(waveform_proto.shape) == 1: - waveform_proto = waveform_proto.reshape(1, waveform_proto.size) - if waveform_proto.shape[0] < len(channels): - waveform_proto = np.tile(waveform_proto[0], (len(channels), 1)) - - while send_samps < max_samps: - real_samps = min(proto_len, max_samps-send_samps) - if real_samps < proto_len: - samples = streamer.send(waveform_proto[:, :real_samps], metadata) - else: - samples = streamer.send(waveform_proto, metadata) - send_samps += samples - - # Help the garbage collection - streamer = None - return send_samps - - -SubdevSpecPair = lib.usrp.subdev_spec_pair -SubdevSpec = lib.usrp.subdev_spec -GPIOAtrReg = lib.usrp.gpio_atr_reg -GPIOAtrMode = lib.usrp.gpio_atr_mode -Unit = lib.usrp.unit -AuxDAC = lib.usrp.aux_dac -AuxADC = lib.usrp.aux_adc -SpecialProps = lib.usrp.special_props -Sampling = lib.usrp.sampling -FEConnection = lib.usrp.fe_connection -StreamArgs = lib.usrp.stream_args -RXStreamer = lib.usrp.rx_streamer -TXStreamer = lib.usrp.tx_streamer |