| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Benchmarks show that using C++ chrono features beats
uhd::get_system_time(), and the latter is simply not appropriate unless
a uhd::time_spec_t is required.
|
| |
|
| |
|
| |
|
|
|
|
| |
Applying formatting in anticipation of upcoming changes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add convenience factory for making a gain group that has a single
zero-valued element. This factory requires a name, which should
probably be ALL_GAINS, or something similar (these constants are
device-specific).
Using this new make_zero factory in the X300 radio control when we
don't find any gain elements so that our gain groups aren't empty. This
simplifies our later setters/getters because we know that we'll always
have _something_ cached.
Note that we only register this zero value gain group for TX, as our
ADC is registered as a gain element, so our RX gain groups are never
empty.
|
|
|
|
|
| |
These differ from the item32 converters in that they don't IQ swap, and
also don't have a BE/LE version.
|
| |
|
|
|
|
|
|
|
|
| |
The difference between the _chdr converters and the _item32_ converters
is that the former do not require item32 boundaries, they do not require
endianness swapping, and they don't use IQ swapping either.
This is possible because the FPGA will do byte-swapping.
|
| |
|
| |
|
|
|
|
|
| |
The new signature uses tuple as the return value, instead of passing in
output variables as references (C-style).
|
|
|
|
|
| |
This is the inverse to std::to_string(), and we can overload it with
UHD-internal types.
|
|
|
|
| |
This is the only occurrence of boost::unordered_map in UHD.
|
|
|
|
|
| |
This mode is never used, and makes it more cumbersome to maintain this
code.
|
|
|
|
|
|
|
| |
The custom copy ctor for dirty_tracked was using the = operator, which
wouldn't necessarily copy the dirty flag. By removing it (and thus using
the default copy ctor), the copied dirty_tracked object now has the same
value *and* dirty flag as the original.
|
| |
|
|
|
|
| |
This is the only occurrence of boost::atomic in UHD.
|
|
|
|
| |
Newer devices may be able to provide more then 32 bits worth of samples.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Add the following exception types:
- rfnoc_error
- op_failed
- op_seqerr
- op_timeout
- op_timeerr
- access_error
- It is meant to be used when access violations have taken place,
i.e., when a resource is being accessed without appropriate
permissions.
- resolve_error
- This is a derivative of rfnoc_error, and will be used when a
property resolution fails unexpectedly.
- routing_error
- For use when the framework has path setup issues or general
routing-related errors
|
|
|
|
|
|
|
|
|
| |
This removes the following symbols:
- otw_type_t
- clock_config_t
- Any functions that use those symbols
- Non-standard args from examples (e.g., --total-time is deprecated in
favour of --duration)
|
|
|
|
| |
Note: N230 is still supported on the 3.15 LTS branch
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Boost >= 1.58
- CMake >= 3.5.1
- gcc >= 5.4.0
- Clang >= 3.8, AppleClang >= 600
- Python >= 3.5 (Py2k no longer supported)
- Numpy >= 1.11
- C++14 for lib, include may now use C++11 constructs.
- Because there is no more code requiring C++03 syntax, we remove the
include-specific clang-format file
|
|
|
|
|
| |
Pass original args into the x300_get_udp_factory() function. This
exposes the fact that this is a DPDK connection.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The code was broken when converting from BOOST_FOREACH to a range-based
for loop.
Without this fix, the board initialization would crash with an error
like this:
[ERROR] [DBMGR] The daughterboard manager encountered a recoverable
error in init.
Loading the "unknown" daughterboard implementations to continue.
The daughterboard cannot operate until this error is resolved.
LookupError: KeyError: key "0" not found in dict(i,
N14adf4360_regs_t17prescaler_value_tE)
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
|
|
|
|
|
|
| |
The old loop didn't have any output, and had an inaccurate timeout. We
now use a timer for a 30 second timeout, and print a . every time we
poll the sensor.
|
|
|
|
|
| |
This demotes INFO logs to TRACE that relate to the switch settings
during tuning.
|
|
|
|
|
|
|
|
|
| |
The E31x will always have a valid PPS, because it is generated
internally. The external PPS however is used to drive the ppsloop, which
means the ref_locked sensor can be a substitute for the PPS, but only on
in this case.
This commit also removes some superfluous includes from this example.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The send_waveform() function takes the waveform_proto array and if it
has only 1 channel, explicitly reshapes it to be
(1, waveform_proto.size), or uses np.tile to replicate the
waveform_proto array over X channels. It then proceeds to loop over the
waveform_proto array, but attempts to do so over the channel dimension
instead of looping over the actual samples. This results in sending the
entire waveform_proto array regardless of the duration specified.
The fix is to specify the dimension in which it crops, and not crop in
dimension of the channels.
|
|
|
|
|
|
|
|
|
|
|
| |
Usually, devtest is run via make (or ninja), and will use the correct
Python interpreter. When running directly on the command line, it is
important to pick the right Python interpreter so it will work with the
Python API.
Here, we change the default interpreter from Python 2 to 3, because
that's the more common version, and will be the only option for upcoming
UHD 4.0 anyway.
|
|
|
|
|
| |
Added appropriate references to N321 in the R&D testing doc for the
FPGA Functional Verification section.
|
|
|
|
| |
This explains what the various FPGA flavours (XG, HG, 1G) are.
|
|
|
|
|
|
|
|
|
|
|
| |
By using the conversion ability to std::map<>, we can make the Python
versions of get_?x_usrp_info() return a dict in Python.
Sample Python session:
>>> import uhd
>>> U = uhd.usrp.MultiUsrp(args)
>>> U.get_usrp_rx_info()
{'mboard_id': 'B200', 'rx_subdev_name': 'FE-RX2', ...}
|
|
|
|
|
|
|
| |
This will now allow calls like this:
uhd::dict<k, v> d = /* ... */;
auto m = static_cast<std::map<k, v>>(d);
|
| |
|
| |
|
|
|
|
|
|
|
| |
Remove UHD call to elevate thread priority to realtime. Setting all
threads to the same realtime priority can cause the threads to not share
access to the network interface fairly, which adversely affects
operation of the worker threads in UHD.
|
|
|
|
|
| |
- It was possible for two threads to generate a global session, which would
cause one of them to become invalid.
|
|
|
|
|
|
|
| |
- Reduce long tests from 3600 seconds to 600 seconds.
- Remove 2xRX@153.6e6 test for N310 10 GbE (not practical).
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
| |
Add -DMPM_DEVICE=e320 to the command so the E320 version is built
and not the N3xx version.
Signed-off-by: michael-west <michael.west@ettus.com>
|
|
|
|
|
|
|
|
| |
Added cmake variable to set the component (currently UHD or MPM).
so the banner printed by the log_resource would reference the correct
component. Added accessor function and appropriate calls in log.cpp.
Signed-off-by: michael-west <michael.west@ettus.com>
|
| |
|
| |
|
|
|
|
|
|
|
| |
Modifies the CMake for the following utilities:
- init_usrp (example)
- kitchen_sink
- nirio_programmer
|
|
|
|
|
|
|
|
|
| |
Also install UHDBoost.cmake along with the CMake UHD find scripts, so
that it can be used by external modules. Tweak the UHDConfig.cmake
script so that, once installed, the new UHDBoost.cmake script is found.
Note that the project using UHD must first find UHD before trying to find
Boost. Also note that if the C++ standard is not set before UHDBoost is
loaded, it will be set to that currently used by UHD: C++14.
|