| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
This commit adds a device::register_device which allows uhd to start up
a simulator when uhd is called with the arguments type=sim. Creating the
device object creates a subprocess using pybind and an embedded
interpreter, and destroying the object cleans up those subprocesses.
Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The streamers were keeping a reference to the multi_usrp object, so the
object would not destruct when the user deleted or reset the shared
pointer to the object. An error would occur if the user attempted to
make the same device and get streamers on it without explicitly deleting
the streamers first.
This change refactors the code such that the streamer destructor only
depends on the existence of a weak_ptr to the underlying rfnoc_graph
and a vector of edges returned by the connect function. It checks to
see if the graph has been deleted before calling the functions to
disconnect the edges. This allows the multi_usrp object and streamer
objects to be destructed in any order.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
| |
Example:
>>> usrp = uhd.usrp.multi_usrp("")
>>> tree = usrp.get_tree()
>>> print(tree.access_int("/name").get())
|
|
|
|
|
| |
This helps with recompilation times of UHD.
No functional changes.
|
|
|
|
|
|
|
|
|
|
|
|
| |
The N310 had a different behaviour from other devices, where setting
a gain out of range would cause an assertion error. This is problematic
for two reasons:
1) Assertion errors should not be triggered by public APIs (if we throw
public APIs, we should give a clear error message), and
2) Setting gain and frequency has a coercing behaviour on all other
devices.
This changeset clips the gain before calling into the gain table lookup.
|
|
|
|
|
|
|
| |
This allows the b200 devices to recover from overruns that occur during
continuous streaming.
Signed-off-by: mattprost <matt.prost@ni.com>
|
|
|
|
|
|
|
| |
mpmd find doesn't respect the "resource" arg hint and can be detected
when "resource" is set. This results in incorrect device selection when
using PCIe. This change adds detection for "resource" as a prefix
in the device hints for mpmd and the other devices.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
The loopback test sometimes fails. It was found that it would pass on a
retry. The root cause of the failure is unknown at this time, but the
retry allows the test to pass. This is intended as a temporary patch
until the root cause of the failure can be identified.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
| |
There were locks in the apply_tx/rx_fe_corrections() methods that were
acquired before calling methods that re-acquired the locks. The mutexes
were not recursive, so it caused applications to lock up. The locks
are unnecessary in the top level methods, so they are being removed.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
| |
With the default 32 frames, high rate DPDK streaming would overrun or
drop samples. This defaults num_recv_frames to 512 for DPDK, which has
shown to resolve these issues.
Signed-off-by: Steven Koo <steven.koo@ni.com>
|
|
|
|
|
|
|
|
|
| |
The previously added APIs for getting/setting power reference levels was
missing an option to read back the currently available power levels
(minimum and maximum power levels).
This adds getters for TX and RX power ranges to multi_usrp and
radio_control. The power API is thus now more similar to the gain API,
which always had getters for gain ranges.
|
|
|
|
|
|
|
| |
Lowering X300 10GbE default frame sizes to max size supported by
hardware.
Signed-off-by: michael-west <michael.west@ettus.com>
|
| |
|
|
|
|
|
| |
twinrx_gain_tables takes long time to build with optimizations on
macOS / Clang. Turn them off for this platform.
|
|
|
|
|
|
|
|
|
| |
This commit resolves a segfault that occurs during teardown. Since
teardown isn't detereministic in python, there were cases where the
graph would destruct before the streamers or links got chance to
cleanup. This would result in a segfault. This change gives the lambda
a shared pointer to the object the callback method is calling on, so
that it won't destruct before being called.
|
|
|
|
|
|
|
|
|
| |
Setting default frame sizes for 10 GbE to match an Ethernet MTU of
9000, which is recommended in the UHD manual for the X300. The MTU
detection code is left untouched, so it will automatically adjust
if the MTU is lower than 9000.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
| |
The link_if_mgr used to be a factory for Liberio, UDP, and DPDK. Now,
Liberio is gone and DPDK is handled by UDP. This makes the class
superfluous.
Instead of removing the class, we comment on this, and remove any DPDK
references from the file.
|
|
|
|
|
|
|
|
|
| |
The e31x devices don't advertise CHDR interface availability when the
low power FPGA is loaded. Since the e3xx and n3xx all route CHDR
packets with Virtual NIC forwarding, it's safe to assume that if we can
communicate with the mgmt_addr, we can communicate via CHDR too.
We can then correctly set the reachability for the e31x from this
assumption.
|
|
|
|
| |
added extra args to get PCIe buffer sizes from factory method
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This sets the reference clock for X300 daughterboards (other than UBX)
to 100 MHz by default to improve RF performance.
Note: The UBX daughterboard requires a clock rate of no more than the
max pfd frequency (50 or 25 MHz depending on the hardware rev) in
order to maintain phase synchronization. If a UBX daughterboard is
present on the X300, the clock rate for all daughterboards will be set
to the pfd frequency by default. This is because of the limitation on
X300 that requires the daughterboards to use the same clock rate.
Signed-off-by: mattprost <matt.prost@ni.com>
|
|
|
|
|
|
|
| |
Fix typo in warning message when DPDK is specified at run time but not
enabled at compile time.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
| |
- Added helper methods to connect and disconnect TX and RX chains.
- Directly create streamer objects and register local disconnect
methods to make sure chains are disconnected and the streamer is
removed from the graph when streamers are destroyed.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
Transports were not disconnecting their links from the I/O service upon
destruction, leaving behind inaccessible send and recv links used by
nothing. This led to I/O errors after creating several transports.
Added callbacks to transports to automatically disconnect their links
from the I/O service when the transport is destroyed. Updated all
callers to supply a disconnect callback.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
| |
This change adds detection for setting the correct internal
fpga CHDR IP address when using embedded mode.
|
|
|
|
|
|
| |
Add 2 bytes to account for Vivado update number, in addition to major,
minor, and AR. For example the current Vivado version string might be
2019.1.1_AR73068 whereas the previous string was 2018.3_AR71898.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Adding the fix to use fs_path instead of tx_rf_fe_root. This was done
to the rx methods and should have been done for the tx ones as well.
|
|
|
|
|
| |
This is an advanced API call that allows direct underlying
access to the radio_control object for RFNoC devices.
|
|
|
|
|
|
| |
This changes MTU handling for the "internal" UDP type. Because MPM
echo packets will not be returned for internal NICs, use the iface's
programmed MTU instead.
|
|
|
|
|
|
|
|
|
|
| |
This commit exposes uhdlib/rfnoc/chdr_types.hpp in the public includes.
Additionally, it takes some types from uhdlib/rfnoc/rfnoc_common.hpp and
exposes them publicly in uhd/rfnoc/rfnoc_types.hpp.
Finally, one constant is moved from uhdlib/rfnoc/rfnoc_common.hpp to
uhd/rfnoc/constants.hpp
Signed-off-by: robot-rover <sam.obrien@ni.com>
|
|
|
|
|
|
|
|
|
| |
It would be confusing to have two classes named chdr_packet. As it makes
more sense to name the new public chdr parser class chdr_packet, the
internal uhd::rfnoc::chdr::chdr_packet class is being renamed to
chdr_packet_writer to better represent its functionality.
Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
|
|
|
|
|
|
|
|
| |
The product ID check should be masked with 0xF8 and checked to be 0x08.
With a device off and weak pull-ups, the readback would always read
0xFF, passing the ID check when it obviously wasn't there. Extending
the mask to be 0xF8 shows that both 0's and 1's are read back from the
device.
|
|
|
|
|
|
|
|
| |
This effectively reverts 0433e74. The set_shutdown() and get_shutdown()
API calls do not have a counterpart in simple_spi_core.v, which is
typically the HDL endpoint for this core driver, and thus could write to
a non-existent register. They are also never used in UHD, nor are they
part of the spi_iface interface.
|
|
|
|
| |
This removes some comment that include code that still gets executed.
|
|
|
|
|
| |
Support management payloads on busses over 64 bits
Automatically set CHDR width for mpmd_link_if_ctrl_udp
|
|
|
|
|
| |
Note: timeouts were occurring on n310 due to an increase in
daughterboard re-initialization time.
|
|
|
|
|
| |
The edge_list for a given rx/tx chain should never be empty so this
explicitly performs that check, which prevents a potential bad access.
|
|
|
|
|
|
|
|
|
|
|
| |
This fixes the following issues:
- The Python bindings did not declare parents for the various filter
object classes properly. This meant that set_?x_filter wouldn't work,
because the user would pass a specific type (e.g., analog_filter_lp),
but the class would not recognize it as a filter_info_base.
- In multi_usrp.cpp, filter names are also property tree paths to make
them unique. However, the setters and getters for filters would then
prepend the FE path again, thus breaking those calls.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Fix serial and PID info in get_usrp_xx_info methods
- Make defaults match multi_usrp base class
- Make support of ALL_MBOARDS and ALL_CHANS consistent across all set
methods
- Make set/clear_time_commands honor the mboard argument
- Fix get_rx_lo_sources() to use rx_chain.block_chan
- Fix typos in get_tx_freq_range that were calling rx functions instead
of tx
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
| |
Store time source in set_time_source() call.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
| |
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
| |
This enables the power calbration API for X300 and X310. The
uhd_power_cal.py script will be able to create calibration files for
X300 series USRPs.
The multi_usrp calls *_power_reference will be functional, assuming
there is calibration data available for the given system.
|
|
|
|
|
|
| |
This lets the B200 transmit and/or receive at given reference power
levels. Requirement is that the devices have been separately calibrated
with an external calibration device.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
get_tx_freq(), unlike get_rx_freq(), would not factor in the DSP
frequency. Before, this would happen:
>>> U = uhd.usrp.MultiUSRP("type=x300")
>>> tr = uhd.types.TuneRequest(1e9, 10e6)
>>> res = U.set_tx_freq(tr)
>>> res.clipped_rf_freq
1000000000.0
>>> U.get_tx_freq()
1010000000.0
In other words, the TuneResult object was correct, but the return value
of get_tx_freq() was not. This fixes the issue.
|
|
|
|
|
|
| |
This adds two more keys to the dictionary return from
get_usrp_{rx,tx}_info() which can be used to query the calibration key
and serial.
|
|
|
|
|
|
| |
- The tracking mode was not set to power when calling set_power()
- The data consistency check had an inverted logic, thus always printing
a warning
|