This fixes many documentation issues where in the Doxygen output
sentences were incomplete and information was missing that is there in
the source files actually.
This can be completely replaced with uhd::cast::to_str() and from_str().
In some cases, the UHD typecast functions are better, because they
support more UHD-specific types (e.g., device_addr_t, subdev_spec_t, and
so on).
This adds support for the new USRP X420. It is the latest addition to
our X4xx series and comes with two HBX daughterboards. The HBX is
a one-channel direct conversion transceiver that covers 5G NR FR3 and
X-/KU-Band needs for Research and Prototyping in a frequency range of 10
MHz up to 20 GHz. It supports analog bandwidths of up to 1 GHz.
This commit is the UHD/host portion of the X420 support.
Co-authored-by: Martin Anderseck <martin.anderseck@emerson.com>
Co-authored-by: Ahmed Salman <ahmed.salman@emerson.com>
Co-authored-by: Max Köhler <max.koehler@emerson.com>
Co-authored-by: Markus Schill <markus.schill@emerson.com>
In 031e9e1, we removed all usage of boost::assign in the UHD codebase.
However, some (now redundant) includes of boost/assign.hpp remained,
which are now cleaned up.
- In most cases, the replacements are straightforward:
boost::filesystem::* can be often simply replaced by
std::filesystem::*, and the include path is changed from
<boost/filesystem.hpp> to <filesystem>
- boost::filesystem::system_complete() is replaced with
std::filesystem::absolute().
- Note: For users including uhd/utils/paths.hpp, this is an API change
because the return value of get_module_paths() is now a vector of
std::filesystem::path.
- In rx_samples_to_file and fx2_init_eeprom, we keep Boost.Filesystem
for now because there is no direct equivalent to
boost::filesystem::unique_path(), but the main goal is to remove
libboost_filesystem as a link dependency from libuhd.
- Instead of blindly linking against all ${Boost_LIBRARIES}, we
selectively specify the various Boost::* targets.
- Replace include_directories() or link_directories() with target_*()
CMake functions to avoid cluttering global scope.
- Specify PRIVATE vs. PUBLIC on all link targets.
This adds support for the OBX daughterboard, a new daughterboard
compatible with the USRP X3x0 series.
- Includes both UHD and CPLD codebases
- Includes CI hooks
Co-authored-by: Javier Valenzuela <javier.valenzuela@emerson.com>
If the HDL sources for RFNoC get installed during installation (i.e., by
providing -DENABLE_RFNOC_DEV), then rfnoc_image_builder will default to
using the installed HDL sources when building bitfiles, unless the CWD
is in a UHD repository or the --fpga-path argument is provided (same
behaviour as before).
- Allows for frontends to specify a default cal rather than use max
gain.
- Allows for users to specify a specific tx_gain with which to run
the cal utils.
- Added B206MINI_PRODUCT_ID and extend various defines
to enable B206 support in driver code
- Extend B200 devtest definition to include B206mini
- Extend B200Calibrator class to support B206mini
Co-authored-by: Lars Amsel <lars.amsel@emerson.com>
Co-authored-by: Abhishek Verma <abhishek.verma@emerson.com>
Co-authored-by: Marian Koop <marian.koop@emerson.com>
The UHD CMake code re-implemented some of the features of GNUInstallDirs,
which is not necessary (this feature has been available in CMake for
longer than version 3.12). Here, we replace all hand-defined CMake
variables with their equivalents from GNUInstallDirs.
Short table of replacements:
INCLUDE_DIR -> CMAKE_INSTALL_INCLUDEDIR
RUNTIME_DIR -> CMAKE_INSTALL_BINDIR
LIBRARY_DIR -> CMAKE_INSTALL_LIBDIR
UHD_LIB_DIR -> CMAKE_INSTALL_LIBDIR
LIB_SUFFIX -> n/a (no longer necessary)
This removes a CMake-generated value for the package data path from the
image builder, and instead uses the get_pkg_data_path() API call which
is now always available.
This fixes the issue where if the package was built on a different
system than where it is run, the image builder can't find the RFNoC
input files.
Extend private init-device function to require parameter additional
write-serial parameter to ensure device can return a serial number
to Window 10+ after device enumeration.
Add private functions to erase eeprom map content, and to dump full
eeprom content into a file.
Created local function to check eeprom revision to remove code
duplications.
Instead of hard-coding the value of CONFIG_PATH into the rfnoc_modtool
executable, we instead use get_pkg_data_path(), which is now available
even if a Python-module-only version of the `uhd` module was installed.
This has several advantages:
- It improves reproducible builds
- It allows runtime-config of rfnoc_modtool by setting environment
variables like UHD_PKG_DATA_PATH
... in case the configuration ENABLE_PYMOD_UTILS was not set.
This corrects the default images directory for
uhd_images_downloader on the embedded filesystem.
This moves the calibration Python utilities into the
uhd Python module (because they have dependencies to
uhd). Also the poetry script adds them as scripts to
the uhd module.
The install Python module is not executed on Windows
systems.
usrpctl, rfnoc image builder and rfnoc modtool are
not affected.
Introduce a new parameter --base-dir BASE_DIR.
If the parameters --build-dir BUILD_DIR / --build-ip-dir BUILD_IP_DIR
/ --build-ouput-dir BUILD_OUTPUT_DIR are not set explicitly, they will
be set to these values per default:
- BUILD_DIR=<BASE_DIR>/build-<IMAGE_CORE_NAME>
- BUILD_IP_DIR=<BASE_DIR>/build-ip
- BUILD_OUTPUT_DIR=<BASE_DIR>/build
BASE_DIR defaults to the current directory if the parameter --base-dir
is not set. This means that per default, the build(...) directories
are generated in the current directory.
- Add a new public API call get_pkg_data_path() which returns the
location of the "share" data. On a Unix system, this will typically
return "/usr/share/uhd" when doing a regular system install.
- Purge all references to this path in UHD, and use the new API call
instead.
- Add --pkg-data-path as an option to uhd_config_info.
When using the following command syntax:
rfnoc_image_builder --fpga-dir=~/path/to/uhd/fpga \
--yaml-config=~/path/to/image_core.yml
The shell won't expand the ~ (shorthand for $HOME) and the image builder
needs to expand the path itself, which is fixed in this commit (for
--fpga-dir, --yaml-config, and --grc-config).
Note that this is not a problem when skipping the "=", i.e., the
following work without this fix, assuming a shell that auto-expands the
tilde symbol (e.g., bash, zsh):
rfnoc_image_builder --fpga-dir ~/path/to/uhd/fpga \
--yaml-config ~/path/to/image_core.yml
or
rfnoc_image_builder -F ~/path/to/uhd/fpga \
-y ~/path/to/image_core.yml
This adds support for generating RFNoC bitfiles from GNU Radio Companion
(.grc) files. Note that this requires changes to GNU Radio as well
(updated block definition files for the GRC bindings).
There is a new mini-feature in the image builder itself: The option to
dump the YAML file into the build directory. For the GRC import, this
makes sense, because it allows reading the UHD YAML represenation of a GRC
image core.
There were a bunch of warnings about unused variables in UHD which were
handled in different manners:
- usrprio_rpc_common.hpp: Here a superfluous if statement was used to
avoid the "unused" warning. However, recent compilers can also detect
the superfluous if statement, so unused variable is now simply left
undeclared.
- radio_control_impl.cpp had an unused constant which is now removed,
and a conditionally used capture value which is now made "used" even
when TRACE-level logging is disabled.
- Responder.cpp had an unused variable which was required to be
specified as an output argument for a C-style function, so we declare
it unused to silence the warnings.
The --image_core_name option already existed, but to be consistent with
the documentation and the other arguments, we allow the version with
hyphens as well.
This focuses the installation of utilities: Now, when ENABLE_UTILS is
true, but ENABLE_PYMOD_UTILS is false, all utilities that depend on Mako
and ruamel.yaml are no longer installed.
This avoids the case where either dependency is not available, which
disables ENABLE_PYMOD_UTILS, but because of an 'OR' statement, enabling
ENABLE_UTILS was sufficient to attempt to install rfnoc_modtool and
rfnoc_image_builder.
This replaces rfnoc_modtool that was previously shipped with gr-ettus.
It is fully RFNoC/UHD4.x compatible. There is no shared code between
this version and the old one; this is a clean rewrite.
As of now, it lacks many of the features that were available with the
previous version, most importantly, the ability to generate GNU Radio
bindings.
- The main installation path is now always an include path and can be
used as such (e.g., /usr/share/uhd/rfnoc)
- fpga_includes and dts_includes have been streamlined. They now work
identically on all blocks/modules/_device_, and can use resolve() the
same way as other arguments do.
- Error messages for missing include files are improved.
The fancy output generated by the image builder can cause issues with
scripts that use the output of the image builder. In any case, the
standard behaviour for command line tools is to not color output when on
non-TTYs, so we adopt the same behaviour here by default.
For full control, the new --color option can be used to force color on
and off. It follows the same scheme as `ls --color` (can be always,
auto, or never).
Out of precaution, we also use different markers for warnings and
errors when not using color (i.e., no UTF8 symbols).
This commit also removes a `staticmethod` decorator which causes issues
with Python 3.8 and 3.9.
- The regular color was set to black, which would not read well on dark
terminals. It now uses the default
- Some other colors were adapted. Some effort was made to make 'debug'
not stand out, but that always depends on the terminal color theme
that is chosen.
- If there are any warnings during the image core parsing, the build is
now skipped unless --no-warnings (-W) is also given.
- Exceptions in the ImageBuilderConfig are now caught in
rfnoc_image_builder and an error message is logged, instead of
printing the Python exception backtrace.
- All RFNoC capable targets now require rfnoc_image_builder to be built
- `make help` is updated for all targets to provide more useful and
up-to-date information
- The FPGA manual is also updated
- All checked-in build artifacts are now removed from git
- axi_ram_fifo.yml is updated to provide include path information
(required for building N3xx BIST images, which use this)