| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
This is potentially a performance issue, even though it doesn't have
a big impact in this context. Clang will warn about it, and this fixes
the compiler warning.
|
|
|
|
|
|
|
| |
twinrx_gain_config_t defined an assignment operator, but not a default
copy ctor. This is not allowed in modern C++, although compilers let it
slide and provide their own defaults. Clang, however, throws a warning
so let's fix it.
|
| |
|
|
|
|
| |
This fixes a clang warning.
|
|
|
|
| |
This fixes a clang warning.
|
|
|
|
|
|
| |
These constants are useful for reference, but they're not used. We keep
them in-tree (as comments) because of their utility, but comment them
out to fix clang warnings.
|
|
|
|
| |
This fixes a clang warning.
|
|
|
|
| |
This fixes a clang compiler warning.
|
|
|
|
|
| |
The constants were either commented out, when their value is still
useful to the reader, or removed if not.
|
|
|
|
|
|
|
|
|
| |
The checks from the new clang-tidy file are applied to the source tree
using:
$ find . -name "*.cpp" | sort -u | xargs \
--max-procs 8 --max-args 1 clang-tidy --format-style=file \
--fix -p /path/to/compile_commands.json
|
|
|
|
|
|
|
|
|
|
|
| |
MPM devices were being discovered when trying to locate PCIe connected
devices. Adding filter to exclude them if the "resource" key is
specified in the device address arguments.
Replaces "lib: disable non pcie types in find with resource" to reduce
impact to older devices and remove API change.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
| |
The freq_resolution parameter to the set_frequency() method was
confusing. Changing it to the mod2 value clarifies the intention and
makes the math to reduce the FRAC2 and MOD2 values much easier to read
and maintain.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
| |
The algorithm for the sleep() function is changed to first increment the
command time if the command time is set. If the command time is not
set, it just performs a sleep on the host. The intention is to make a
best effort to create the requested delay on the device.
Signed-off-by: Michael West <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
|
| |
- Reduce FRAC2 and MOD2 values on ADF5356
- Add write to register 10 and delay during retune on ADF5356
- Make negative bleed conditional on integer or fractional N mode for
ADF5356
- Tune unused LOs out of band to remove interference
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
.lvbitx files contain the device tree and the FPGA bitstream, so this
change allows a user to download a .lvbitx to their device instead of
having to juggle separate .bin and .dts files.
If a .lvbitx file does not contain a .dts section for any reason,
download will still succeed, and a warning will be printed that no dts
file was found. This behaviour was chosen (over erroring) to mimic the
existing behaviour when a .bin file is found but there is no
corresponding .dts file.
|
| |
|
|
|
|
|
|
|
|
|
| |
Add a new image_loader argument delay_reload to provide a way to update
components but optionally delay the actual load.
Similarly add a new argument, just_reload, to enable uhd to reload
the fpga/dts components.
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
|
|
|
|
|
|
| |
These rf_control interfaces allow easier implementation of
radio controls as well as allowing easier sharing of code
for implementing e.g. gain_profile.
|
|
|
|
|
|
|
|
|
| |
This gives us type-safety, as well as allowing us to create unit tests for
RFNoC radio_controls without having to create actual RPC servers and clients
in the unit tests.
This change also fixes a bug in mpmd_mb_controller::set_sync_source, where
it was calling the wrong MPM function.
|
| |
|
|
|
|
|
|
|
|
| |
Requesting zero samples was resulting in an error and causing applications
to crash. This was a change frome previous versions of UHD. Demoted to
warning so applications continue as they did before.
Signed-off-by: Michael West <michael.west@ettus.com>
|
| |
|
|
|
|
|
|
| |
There are applications (typically for debugging purposes) which need
access to the token and the mb_args. They are thus published via the
property tree.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In certain execution environments (e.g. NI's LabVIEW), the instantiation
of multi_usrp objects may execute in parallel in two different
threads. As the RFNoC block instances are shared between the multi_usrp
instances, there is a risk that threads racing to configure the initial
state of the Tx and Rx chains may operate on inconsistent or incomplete
views of the state of the RFNoC blocks that make up the chain, leaving
them in an invalid state that leads to client-facing errors.
This commit serializes calls to make_rfnoc_device to prevent creating
multiple multi_usrp objects in parallel. It also creates a map of
existing multi_usrp devices and returns the existing multi_usrp
object if it exists.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This changes the Python version of MultiUSRP.get_tree() such that it
returns a raw pointer to the tree instead of returning the sptr.
This fixes an issue where calling get_tree() will reliably cause
a segfault during garbage collection, at least on some USRPs.
The downside of this approach is that storing the return value from
get_tree() can produce a dangling pointer when the underlying object is
destroyed. It's still better than segfaults, and the recommended way to
use get_tree() anyway is not to store the return value (unless it's in
a local scope), but tack on property tree methods to get_tree() itself.
Examples:
>>> usrp = uhd.usrp.MultiUSRP('...')
>>> usrp.get_tree().exists('/path/to/prop') # This is fine
This change has no noticable API changes.
|
|
|
|
|
|
|
|
| |
This function was incorrectly wrapped into Python and would fail with
Python saying it can't hold a reference to the radio block.
This changes the wrapping into returning a raw pointer, but also makes
the return value policy reference_internal so that garbage collection
happens in the right order.
|
|
|
|
|
|
|
| |
- Put ADF4351 at fixed integer-n mode IF freq
- Set ADF4351 in low noise mode
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
|
|
|
| |
MTU discovery is passing on sizes beyond the maximum size, which allows
packets to exceed the default MTU size of 8000 set for 10 GbE. This
can cause TX to stop when using higher sample rates.
Reducing the maximum frame size to 7972 (8000 minus 28 bytes for UDP
and IP headers) guarantees the packet size will never exceed the default
MTU for 10 GbE.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
| |
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
|
| |
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.
|