| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
| |
- 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>
|
|
|
|
|
|
|
| |
Fixes incorrect value for the DDS_GAIN that was causing the TX output
power to be 6 dB lower than it was supposed to be.
Signed-off-by: michael-west <michael.west@ettus.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>
|
|
|
|
|
|
|
|
| |
This commit expands the scope of the former _release_mutex, renaming it
_graph_mutex and ensuring that all graph modification functions are
serialized against each other. This ensures that callers to graph_t's
public functions are always operating on a coherent view of the
underlying BGL graph object.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The graph_t::disconnect(src_node, dst_node) function removes connections
(edges) from src_node to dst_node in the graph, and then removes the
nodes (vertices) if their degree is zero after removing the connections.
Because removing a vertex from the graph invalidates vertex descriptors,
the graph_t::_remove_node() function resynchronizes the node-to-vertex
descriptor map after removing the vertex.
However, in graph_t::disconnect(), the vertex descriptor corresponding
to dst_node was not being refetched after the potential removal of
src_node, which results in the incorrect removal of innocent nodes under
certain circumstances. This commit ensures that the node-to-vertex
descriptor is reconsulted for the vertex descriptor corresponding to
dst_node before removing it from the tree.
|
| |
|
| |
|
|
|
|
|
|
|
| |
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 rpclib server session closes its socket, which can fail. In our
case, we only use the server for some tests, and we close the server on
process exit, so we let the error slide. Since we close servers in
dtors, not doing so would occasionally cause SIGABRT.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
| |
This lets you declare registers like this:
REG_NAME[ARRAY_LEN] ADDRESS[BITS] DEFAULT ENUMS
The reg object will now carray REG_NAME as an array. So, you can do
regs.REG_NAME[0] = VALUE;
|
|
|
|
|
|
|
| |
Add COMMON_PY_TMPL which is identical to COMMON_TMPL in functionality
but generates Python syntax rather than C++ header syntax. Modify the
generate function which will now determine if the destination regmap
file is a Python file or not and will use the appropriate template.
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
| |
This resolves an issue with building on older compilers.
|
|
|
|
|
| |
It could be possible that we only find one SEP connected edge, which
should be invalid.
|
|
|
|
|
|
|
|
|
|
|
| |
The conditional setting of some variables lead the compiler to assume
they might be used uninitialized. Circumventing compiler warning by
initializing variables to a default value, even if that's not the right
value (they will get set later).
Also applied clang-format to the same code section.
This fixes da1aeaeccc.
|
| |
|
|
|
|
|
|
| |
To make the debug output of the database more readable
the has_cal_data lookup for RC data prints the file that
is looked up similar to the lookup for file system.
|
|
|
|
|
|
|
|
|
| |
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>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Replay block would previously fail output on low mtu links because it
was creating packets based on the default contruction mtu of 8192.
This change will update the packet size when mtu gets updated.
This also removes a warning for large packet sizes because the replay
block uses a maximum packet size property. The block should be
free to coerce down based on mtu limitations.
Signed-off-by: Steven Koo <steven.koo@ni.com>
|
|
|
|
|
|
|
|
| |
Bypass the LO1 feedback divider if it is not required. Some TwinRX units
have seen issues when tuning to frequencies between 3.5GHz and 5.1GHz
while following that data path.
Signed-off-by: mattprost <matt.prost@ni.com>
|
|
|
|
|
| |
This gives the source generator some valid initial values in the Null
Source/Sink RFNoC block.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change improves the DPDK link status detection algorithm in the
following ways:
- The status of the links are checked at an interval of 250 ms. If all
links report as being up, the driver proceeds.
- If any of the DPDK links has not reported as being up by the end of
the link status detection timeout (1000 ms by default), the algorithm
throws a runtime error rather than proceeds with one or more down
links.
- Users may override the default link status detection timeout by
passing dpdk_link_timeout=N, where N is the desired timeout in
milliseconds, either via device arguments or in the UHD configuration
file.
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
Increases the supported memory sizes in software to 2^32 and beyond.
Signed-off-by: mattprost <matt.prost@ni.com>
|
|
|
|
|
|
|
|
| |
Calling on connect with SEPs in the path is not supported. This change
enables connect_through_blocks to find SEPs in the connection chain
and link the src and dest blocks directly.
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>
|
| |
|
|
|
|
|
|
|
| |
Clear the io service map and the dpdk port map in the dpdk context
destructor to force them to destruct before the dpdk context.
Signed-off-by: ettus <matt.prost@ni.com>
|
|
|
|
| |
The .1 second timeout fails on macOS. Expand this timeout to 1 second.
|
|
|
|
|
| |
These values are already correctly set upstream and should not be
modified since params is const.
|
|
|
|
|
| |
twinrx_gain_tables takes long time to build with optimizations on
macOS / Clang. Turn them off for this platform.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The max FFT size was 4096, but we don't currently have any devices that
can do that without modification. This is because, currently, the FFT
size must be the same as the packet size, and the largest packet
size supported by most devices is about 8000 bytes, or 2000
sc16 samples. Therefore, the largest FFT size supported without
modifying other code is 1024 samples.
This change frees up about 21% of the LUTs and 36% of the BRAM used by
axi_fft and makes the software block controller and the IP agree on the
maximum FFT size.
|
|
|
|
|
|
| |
This commit resolves an issue where the disconnect call would fail
if the streamer was created, but not connected. If disconnect gets
called on a streamer that isn't on the graph, ignore it.
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Updated Register values for ADF5356:
R2) Expand Frac2 to a 28-bit value for ADF5356
R6) Use negative bleed current for improved spurious performance
R7) Set Fractional-N Lock Detect Precision to 12.0 ns because of bleed
currents
R8) Use magic number for reserved bits
R9) Fix VCO Band Division calculation for ADF5356
RD) Expand Frac2 to a 28-bit value for ADF5356
Signed-off-by: mattprost <matt.prost@ni.com>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
Add Python bindings for recently added rfnoc_graph::disconnect()
methods.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
| |
Reverting inadvertent change in num_chans argument during
tx/rx_streamer_impl construction.
Signed-off-by: michael-west <michael.west@ettus.com>
|