aboutsummaryrefslogtreecommitdiffstats
path: root/host/tests
Commit message (Collapse)AuthorAgeFilesLines
* host: Add RPC calls for GPIO voltageLane Kolbly2021-11-051-1/+21
|
* host: x4xx: Implement GPIO APILane Kolbly2021-11-031-0/+2
| | | | | | | | | | | | This implements the GPIO API for X410 through get_gpio_attr and set_gpio_attr. In ATR mode, which channel's ATR state is chosen by the set_gpio_src call, setting e.g. DB0_RF0 for channel 0 or DB0_RF1 for channel 1. In manual mode, all 24 bits (for both ports) are set in a single register write. Although the front panel of the device has two ports, labelled GPIO0 and GPIO1, this API exposes them as though they were a single 24-bit GPIO port.
* host: Add GPIO functions to MPM RPC shimLane Kolbly2021-11-031-0/+15
|
* tests: Use reference type to prevent copyA. Maitland Bottoms2021-10-221-1/+1
| | | | Thanks to mait for the fix!
* uhd: math: Replace wrap-frequency math with a single functionMartin Braun2021-10-191-0/+8
| | | | | | | | | In multiple places in the UHD code, we were doing the same calculation for a wrapped frequency (wrap it into the first Nyquist zone). This math was using boost::math, too. Instead of editing every instance, we create a new function, uhd::math::wrap_frequency(), and replace all of its separate implementations with this function. The new function also no longer relies on boost::math::sign.
* uhd: math: Add a sign() functionMartin Braun2021-10-191-0/+7
| | | | | We've been having issues with moving locations of Boost headers for this function, and it's simple enough to implement ourselves.
* devtest: Clarify data type in multi_usrp_test::send_waveform()Martin Braun2021-10-061-1/+1
|
* devtest: Add receive stability test to B2xx devtestMartin Braun2021-09-282-0/+52
|
* devtest: Add receive stability testMartin Braun2021-09-281-0/+174
| | | | | | | At this point, this test chokes an RX streamer to force an overrun. It then confirms that the overrun message is returned to the call site, and that the streamer returns to continuous streaming after the overrun handling.
* uhd: zbx: Prevent TX antenna config from disrupting RXLane Kolbly2021-09-161-0/+20
| | | | | | | | | | | | | | So, both the set_tx_antenna_switches and set_rx_antenna_switches functions configure the TX0_ANT_11 register (which controls the final switch before the TX/RX port, switching it between the three TX paths and the RX path). The RX antenna configuration code will, if the RX antenna is set to TX/RX, configure that switch to the TX/RX->RX path when the ATR is set to RX. However, the TX antenna config code will always configure that switch to the "bypass" path, for both the 0X and RX ATR modes, regardless of whether the RX side actually needs that path. Ergo, this change makes set_tx_antenna_switches only configure that switch when it is configuring the XX or TX modes.
* cmake: Replace CMAKE_{SOURCE,BINARY}_DIR with UHD_*_DIRMartin Braun2021-09-103-72/+72
| | | | | | | | | | | | | | | | | | | | | | | | | | See the CMake 3.8 documentation on these two variables: https://cmake.org/cmake/help/v3.8/variable/PROJECT-NAME_SOURCE_DIR.html https://cmake.org/cmake/help/v3.8/variable/CMAKE_SOURCE_DIR.html Under normal circumstances, these two are identical. For sub-projects (i.e., when building UHD as part of something else that is also a CMake project), only the former is useful. There is no discernible downside of using UHD_SOURCE_DIR over CMAKE_SOURCE_DIR. This was changed using sed: $ sed -i "s/CMAKE_SOURCE_DIR/UHD_SOURCE_DIR/g" \ `ag -l CMAKE_SOURCE_DIR **/{CMakeLists.txt,*.cmake}` $ sed -i "s/CMAKE_BINARY_DIR/UHD_BINARY_DIR/g" \ `ag -l CMAKE_BINARY_DIR **/{CMakeLists.txt,*.cmake}` At the same time, we also replace the CMake variable UHD_HOST_ROOT (used in MPM) with UHD_SOURCE_DIR. There's no reason to have two variables with the same meaning and different names, but more importantly, this means that UHD_SOURCE_DIR is defined even in those cases where MPM calls into CMake files from UHD without any additional patches. Shoutout to GitHub user marcobergamin for bringing this up.
* tests: Fix check in link_testMartin Braun2021-08-311-2/+2
| | | | | | | | The test_recv_get_release test should be checking received packets had the same content as they did on send(), but was instead assigning to the received buffer. Shoutouts to GitHub user johnwstanford for pointing out the issue.
* rfnoc: ddc: Improve unit tests and documentationMartin Braun2021-08-301-5/+19
| | | | | | | The previous commit fixed a bug in the DUC, where get_frequency_range() reported incorrect values. The DDC did not have this bug, but we port the updates to the unit tests and the documentation from the DUC to the DDC for consistency's sake.
* rfnoc: duc: Fix frequency range for DUC blockMartin Braun2021-08-301-7/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The tuning range of the DUC depends on the output sample rate (which is larger), but it was using the input sample rate. This was causing a bug where for Tx, the DSP tuning range was limited when using multi_usrp API, and thus would not allow to DSP-tune beyond the current sampling rate. In this patch, we also re-use the existing calculation of the sampling rate, and harmonize that code between duc_block_control and ddc_block_control. Consider the following Python REPL code: >>> import uhd >>> U = uhd.usrp.MultiUSRP('type=x300') >>> U.set_rx_rate(10e6) >>> U.set_tx_rate(10e6) >>> # Creating a streaming is required, or the input rate will not be >>> # set: >>> S = U.get_tx_stream(uhd.usrp.StreamArgs("fc32", "sc16")) >>> treq = uhd.types.TuneRequest(1e9) >>> treq.rf_freq = 1e9 >>> treq.dsp_freq = 50e6 >>> treq.dsp_freq_policy = uhd.types.TuneRequestPolicy.manual >>> treq.rf_freq_policy = uhd.types.TuneRequestPolicy.manual >>> tres = U.set_rx_freq(treq, 0) >>> print(str(tres)) Tune Result: Target RF Freq: 1000.000000 (MHz) Actual RF Freq: 1000.000000 (MHz) Target DSP Freq: 50.000000 (MHz) Actual DSP Freq: 5.000000 (MHz) >>> # Note the last two lines: The *target* DSP freq was already clipped >>> # to 5 MHz. These lines show 50.0 MHz when this patch is applied. This bugfix is accompanied some related changes: - The unit test is amended to verify the behaviour - The API documentation is amended with details on its behaviour
* tests: Add recv(0) case to rx_streamer_testAaron Rossetto2021-08-201-0/+39
|
* test: Fix potential resource leakMartin Anderseck2021-08-041-5/+4
| | | | | | | Fixed issue where variable tmp_file going out of scope could have leaked the storage it points to. Replaced the declaration of tmp_file by using a unique pointer with custom deleter that takes care of closing the tmpfile when it is not needed anymore.
* uhd: Fix usage of std::abs with template parametersMartin Braun2021-07-231-3/+3
| | | | | | | | | `std::abs` is only a templated function, when dealing with complex numbers. For real values, it is an overload. There is no documented standard way to use `std::abs<double>()` for real-valued arguments. We therefore remove all usages of `std::abs<>()` and replace them with `std::abs()` where they were taking a real-valued argument.
* rfnoc: allow find_blocks to search by device number or block count.Lars Amsel2021-07-201-0/+1
| | | | | | | | | | | | | In current implementation it is not possible to find all blocks of a device by calling find_blocks("0/"). The same is true for the block count. This is caused by the valid block id regex which requires a block name. This regex is used to validate the block name as well as to match block ids in search. This fix looses the requirement for the block name to allow searches by device number and block count and also extends the is_valid_block_id method to require the block name match to be non empty (which restores the previous behaviour at this point).
* rfnoc: fix block id check to allow underscoreLars Amsel2021-07-141-0/+7
| | | | | | | We allow underscore in RFNoC's block names but the regular expressions only allowed the underscore in the block name RE. This fix adds the underscore to the block id RE as well as adapts the unit tests accordingly.
* tests: add missing header, required by some compilersMichael Dickens2021-07-021-0/+1
| | | | Ref: https://github.com/EttusResearch/uhd/issues/451
* uhd: Remove includes of list_of.hpp where appropriateMartin Braun2021-06-243-4/+0
| | | | This Boost header is included in some places, despite not being used.
* uhd: Remove all occurences of boost::math::*round()Martin Braun2021-06-241-5/+3
| | | | | | | Its behaviour is almost identical to std::lround, which we use instead. The only downside of std::lround is that it always returns a long, which we don't always need. We thus add some casts for those cases to make the compiler happy.
* zbx: Fix clang compiler warningsMartin Braun2021-06-221-2/+2
| | | | | | | | - Missing override - Superfluous 'this' lambda capture - Register state in zbx_cpld_ctrl was being initialized too late (this is actually a bug depending on compiler version) - Remove lots of unused fields from experts
* test: add DPDK option for max streaming rate testsMatthew Crymble2021-06-183-82/+230
|
* uhd: Add support for the USRP X410Lars Amsel2021-06-1012-3/+2336
| | | | | | | | | | | | | | | | Co-authored-by: Lars Amsel <lars.amsel@ni.com> Co-authored-by: Michael Auchter <michael.auchter@ni.com> Co-authored-by: Martin Braun <martin.braun@ettus.com> Co-authored-by: Paul Butler <paul.butler@ni.com> Co-authored-by: Cristina Fuentes <cristina.fuentes-curiel@ni.com> Co-authored-by: Humberto Jimenez <humberto.jimenez@ni.com> Co-authored-by: Virendra Kakade <virendra.kakade@ni.com> Co-authored-by: Lane Kolbly <lane.kolbly@ni.com> Co-authored-by: Max Köhler <max.koehler@ni.com> Co-authored-by: Andrew Lynch <andrew.lynch@ni.com> Co-authored-by: Grant Meyerhoff <grant.meyerhoff@ni.com> Co-authored-by: Ciro Nishiguchi <ciro.nishiguchi@ni.com> Co-authored-by: Thomas Vogel <thomas.vogel@ni.com>
* devtest: benchmark_rate: Add support for rx and tx only testsmattprost2021-06-101-19/+27
| | | | | | | Fixes some minor reporting issues that occurred in devtest streaming tests with only rx or only tx. Signed-off-by: mattprost <matt.prost@ni.com>
* tests: Make python_api_test.py always explicitly call PythonMartin Braun2021-06-022-9/+5
| | | | | | | | | This change makes it such that python_api_test.py will spawn a subprocess for multi_usrp_test.py by explicitly calling the Python interpreter, and making the path to multi_usrp_test.py the first argument. This fixes running this devtest after installing Python tests via ipks on embedded devices.
* tests: Add MTU forwarding policy restriction unit testAaron Rossetto2021-05-181-0/+58
|
* tests: Update multi_usrp_test.pyMartin Braun2021-05-101-115/+259
| | | | | | | | | | Many updates to this test. Most tests weren't even working properly. Highlights: - Add device-specific configuration. Includes defaults, but also the option to specify a YAML file. - Improved output for better readability - Made a whole bunch of tests work
* devtest: Make Python tests their own type of devtestMartin Braun2021-05-103-41/+68
| | | | | | | | | | | Like the example test, the Python-based test is now codified. The "special sauce" for Python tests revolves around the fact that they require the Python API, so we have to gracefully fail if the Python API was never enabled, but hard-fail when the Python API is enabled, but not working. This creates a new type of devtest (UHDPythonTestCase) and moves uhd_python_api_test over to the new type.
* experts: Change coercion policy for regular prop nodesMartin Braun2021-05-041-4/+7
| | | | | | | | | | | | | | | | The experts framework has two ways of integrating expert nodes into the property tree: add_prop_node() and add_dual_prop_node(). In the latter case, the experts should take care of coercion, and thus, we subscribe to the desired value. In the former case, this is not necessary, and precludes us from using set_coercer() with prop nodes on the prop tree. This change lets us use regular nodes in the expert framework that also use property tree coercers. As of now, there is not a single property node in UHD that uses add_prop_node() and also does any kind of coercion, so this change has no effect on current code (this is only used in TwinRX as of now).
* host: Update code base using clang-tidyMartin Braun2021-03-171-6/+5
| | | | | | | | | | | | 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 Note: This is the same procedure as 107a49c0, but applied to all the new code since then.
* tests: Fix warnings for rf_control_gain_profile_testMartin Braun2021-03-111-4/+1
| | | | | - Remove unused const - Fix includes to IWYU and clang-format order
* lib: Fix warnings related to unnecessary lambda capturesMartin Braun2021-03-041-4/+1
|
* tests: Remove unused constantsMartin Braun2021-03-048-23/+0
| | | | This fixes some clang warnings.
* host: Update code base using clang-tidyMartin Braun2021-03-0422-111/+114
| | | | | | | | | 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
* devtest: reapply allow extra device arguments when running devtestsSteven Koo2021-02-122-2/+5
| | | | | | | | | | | | | | | | | | This change is substantially the same as 7b86a47, but implemented in a ninja supported way. ninja doesn't allow for arguments, so this uses an environment variable. This is compatible with both make and ninja. The only change from the calling point of view is you must set the environment variable before calling "make test_[devicetype]" instead of after as an arg. This allows running devtests for a single device instead of all connected devices or selecting a specific network interface. Set the additional device arguments with the EXTRA_DEV_ARGS variable. This can be set as an environment variable or on the command line. For example: EXTRA_DEV_ARGS=addr=192.168.30.2 make test_x3x0 Also-by: Matthew Crymble <matthew.crymble@ni.com> Signed-off-by: Steven Koo <steven.koo@ni.com>
* Revert "devtest: allow extra device arguments when running devtests"Matthew Crymble2021-02-082-5/+2
| | | | | This reverts commit 7b86a47bf7143df1cac252602e3c9ddbdd871d90. This was causing issues when building UHD with ninja
* devtest: lower rate for rx_all_chans_fast testMatthew Crymble2021-02-011-4/+4
| | | | Using 12.5 MS/s exceeded the maximum throughput when using 4 channels over 1 GbE
* devtest: allow extra device arguments when running devtestsMatthew Crymble2021-01-212-2/+5
| | | | | | | | | This allows running devtests for a single device instead of all connected devices or selecting a specific network interface. Set the additional device arguments with the EXTRA_DEV_ARGS variable. This can be set as an environment variable or on the command line. For example: make test_x3x0 EXTRA_DEV_ARGS=addr=192.168.30.2
* uhd: Split radio_control into rf_control interfacesLane Kolbly2021-01-112-0/+46
| | | | | | These rf_control interfaces allow easier implementation of radio controls as well as allowing easier sharing of code for implementing e.g. gain_profile.
* Create C++ wrappers for MPM RPC callsLane Kolbly2021-01-111-0/+1
| | | | | | | | | 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.
* uhd: revert "Check property type at access..."Steven Koo2021-01-081-18/+0
| | | | | | | | | | This change reverts cb9329a681552e6ac6277d16e1627afcbb23e637. The type checking is causing some conversion issues on clang/macos. The type_index checking doesn't work correctly across shared libraries and should not be relied on to verify type, since it can vary from compiler to compiler. Signed-off-by: Steven Koo <steven.koo@ni.com>
* devtest: optionally generate XML report when running devtestsJoerg Hofrichter2021-01-081-1/+13
| | | | | | | If the unittests are invoked with an extra argument -x, an XML report is generated. This depends on the python module unittest-xml-reporting (aka. xmlrunner).
* tests: Add UT for node removal prop resol'n restorationAaron Rossetto2020-11-201-0/+53
|
* uhd_images_downloader: Add environment variable for http authLane Kolbly2020-10-152-0/+46
| | | | | | | | | This allows the image downloader to download files from restricted sources using HTTP basic auth, specifying the credentials in the UHD_IMAGES_USER and UHD_IMAGES_PASSWORD environment variables: ``` UHD_IMAGES_USER=lane UHD_IMAGES_PASSWORD=MyS3cretPassword uhd_images_downloader.py ```
* multi_usrp: Add get_mb_controller() API callCristina Fuentes2020-09-241-0/+1
|
* tests: Fix build issue with Boost 1.67Martin Braun2020-09-111-0/+3
| | | | | Boost 1.67 will fail to build some tests that include mock_transport.hpp if an additional include is missing.
* rfnoc: replay: Add support for 32-bit memory address widthsettus2020-09-031-2/+2
| | | | | | Increases the supported memory sizes in software to 2^32 and beyond. Signed-off-by: mattprost <matt.prost@ni.com>
* tests: fbs test: Fix issues around missing gitMartin Braun2020-08-251-1/+2
| | | | | | | | | - update_fbs.py would use git directly, instead of the requested git executable - There are other corner cases for the git executable detection, which are now all captured under a more general exception type Credit to Christopher Friedt for pointing out the original issue.