aboutsummaryrefslogtreecommitdiffstats
path: root/host
Commit message (Collapse)AuthorAgeFilesLines
* tests: add automated streaming testsMatthew Crymble2021-11-303-0/+382
|
* tests: add streaming setup script for performance enhancementsMatthew Crymble2021-11-301-0/+288
| | | | | | | | | This script is intended to be run before streaming. - Manages network interfaces, memory buffers, and other aspects of the system configuration to give the host machine ideal performance during streaming. - Installs/updates dpdk/util dependencies for the script - Generates and writes uhd config files for dpdk
* rfnoc: radio: Fix async message handling channel checksMartin Braun2021-11-301-8/+8
| | | | | | | | | | | | | | | | | | | | | The async message handler and the async message validator would erroneously compare channel numbers for RX async messages with the number of valid TX channels. On TwinRX, where there are zero TX channels, this would always fail. Elsewhere in the code, the comparisons for TX and RX channels mixed up input and output ports. The second issue is that the comparison made was a "greater than" rather than "greater or equal". The effect of these two bugs was that potentially, we could have accepted async messages for an invalid port N, where N is the number of valid ports of this block, and that for TwinRX/X300 users, async messages on channel 1 would not get accepted (they would, however, get accepted for channel 0 because of the second issue). This includes overrun handling, which was broken for channel 1 and 3 on an X300. Another effect of the bug was that EPIDs for async messages weren't always programmed correctly.
* multi_usrp_rfnoc: Reduce latency of get_time_now()michael-west2021-11-172-10/+10
| | | | | | | Getting the time from the mb_controller is slow, so try to get the time from the Radio on the fast path first. Signed-off-by: michael-west <michael.west@ettus.com>
* host: Add ability to get time from Radio blockmichael-west2021-11-173-1/+43
| | | | | | Add API calls to Radio control to get ticks and time. Signed-off-by: michael-west <michael.west@ettus.com>
* tests: Remove skip_dram from streaming performance test scriptMartin Braun2021-11-161-2/+2
|
* docs: Several minor manual improvementsMartin Braun2021-11-166-10/+49
| | | | | | | - Remove documentation of skip_dram, skip_ddc, skip_duc, which are all obsolete since UHD 4 - Properly document serialize_init - Add a table of valid args for X310 as with other devices
* examples: Use cmul for gain block in-tree IP exampleWade Fife2021-11-151-21/+18
|
* rfnoc: mgmt_portal: Fix order of validity checksMartin Braun2021-11-151-2/+6
| | | | | | | | | | | The order must: - Check transaction has the right number of hops, then read hop - Check hop has the right number of operations (at least 2), then read those ops - Check the ops have the correct opcodes The code was doing checks in the wrong order. Thanks to Github user johnwstanford for pointing this out.
* rfnoc: Add CHDR width to make argsMartin Braun2021-11-126-1/+15
| | | | | | | This provides every block controller with a copy of its CHDR width. Note: mock blocks always get configured with a 64-bit CHDR width, to retain API compatibility.
* rfnoc: Make chdr_w_to_bits() C++11-compatibleMartin Braun2021-11-121-0/+15
| | | | | | | This allows consumers of UHD compiling with C++11 to include this file (which is now included via noc_block_base) by turning a switch statement into a functionally equivalent (albeit less readable) nested ternary statement.
* tests: Fix rfnoc_graph mock nodes stop-stream commandMartin Braun2021-11-121-1/+1
| | | | Thanks to Github user johnwstanford for pointing this out.
* B200: Re-sync timesmichael-west2021-11-102-10/+31
| | | | | | | | | | The times on the device can glitch if either the tick rate changes or the number of active chains changes. This throws off the time if the user gets streamers, changes the sample rate, or changes the tick rate after synchronizing the time. This change re-synchronizes the times automatically in those cases. Signed-off-by: michael-west <michael.west@ettus.com>
* python: multi_usrp: Add set_rx_spp()Wade Fife2021-11-091-0/+1
|
* doc: x4xx: Document configuring eth0 static IPLane Kolbly2021-11-091-1/+28
|
* mpmd: Increase UHD-side MTU cap for 10 GbE and 1 GbEMartin Braun2021-11-081-4/+14
| | | | | | | | | This gets closer to what our hardware can actually support. See the comments for further explanations. This has the side-effect of patching an issue on X410 (using 200 MHz images) where garbage samples would get injected (one per packet). It is not, however, the final fix for that problem.
* docs: x410: Document GPIO API and capabilitiesLane Kolbly2021-11-054-0/+251
|
* docs: Collect all RFNoC block controllers in a module in the manualMartin Braun2021-11-0519-2/+51
| | | | | | This lets Doxygen create a page in the UHD manual that lists all RFNoC block controllers. It will be accessible under Manual -> Modules -> RFNoC -> RFNoC Blocks shipped with UHD.
* rfnoc: blocks: Minor cleanup (whitespace, typos)Martin Braun2021-11-056-13/+5
|
* host: python: Add gpio_voltage python APILane Kolbly2021-11-051-1/+11
|
* host: Add gpio_voltage discoverable featureLane Kolbly2021-11-054-0/+147
|
* host: Add RPC calls for GPIO voltageLane Kolbly2021-11-052-1/+30
|
* examples: Test all variants in gain testbenchWade Fife2021-11-043-15/+61
|
* examples: Make IQ order clear in gain RFNoC blockWade Fife2021-11-041-16/+25
|
* host: python: Return mb_controller with reference_internalLane Kolbly2021-11-041-1/+1
|
* fixup! host: x4xx: Implement GPIO APILane Kolbly2021-11-031-2/+14
|
* example: gpio: Separate bank and port argumentsLane Kolbly2021-11-031-10/+18
| | | | | | | "bank" refers to what the radio control sees, and "port" refers to what the user looking at the physical device sees. For example, on X410 each radio control only has a single (24-bit) output, which can be routed to either of two ports.
* host: x4xx: Implement GPIO APILane Kolbly2021-11-036-0/+257
| | | | | | | | | | | | 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-032-0/+20
|
* rfnoc: Remove cruft from UHD 3 (constants)Martin Braun2021-11-024-101/+6
| | | | | | | | | | | | | This removes some constants from UHD that were left over from RFNoC/UHD 3.x. They are unused. rfnoc_rx_to_file had a commented-out section that was also UHD-3 only. Note that rfnoc/constants.hpp is pretty bare now, and could be removed. However, it is in the public header section, so we shall leave the used constants where they are. This requires fixing includes in mgmt_portal.cpp.
* docs: Align dependencies and bump deb package versionsMartin Anderseck2021-11-022-4/+7
| | | | | | Aligning dependencies between KB entries and documentation for Ubuntu 20.04 and bumping version numbers in the installation documentation to latest available versions in Ubuntu and PPA.
* uhd: update num_recv_frames calculation for ctrl linksAndrew Lynch2021-11-021-1/+4
|
* host: gpio: Create gpio_atr_offsets to store GPIO registersLane Kolbly2021-10-277-94/+136
| | | | | | | Refactors register addresses into a gpio_atr_offsets structure which contains the various register addresses. This allows creating other devices with different GPIO register layouts with greater ease, and eliminates the use of macros (yay!)
* siggen: Fix direction of rotationWade Fife2021-10-271-9/+9
| | | | | | | | | The I and Q were swapped in sine_tone, which caused confusion and made the rotation of REG_CARTESIAN clockwise by default. This effectively made the resulting frequency negative. This PR makes the I and Q order consistent with RFNoC and fixes the direction of rotation so that a positive value for REG_PHASE_INC (phase increment) results in a counter-clockwise rotation, which yields a positive frequency.
* tests: Use reference type to prevent copyA. Maitland Bottoms2021-10-221-1/+1
| | | | Thanks to mait for the fix!
* responder: Fix printw function argumentsA. Maitland Bottoms2021-10-221-1/+1
| | | | | | | This is necessary when compiling with -Werror=format-security as Debian package builds do. Thanks to mait for the fix!
* uhd: Remove spurious template from property dtorA. Maitland Bottoms2021-10-222-2/+2
| | | | | | | C++ syntax cleanup. g++ 11 is now more picky about syntax, and flags errors rather than ignores use of template-id for a destructor. Thanks to mait for these fixes!
* uhd: Fix spelling errorsA. Maitland Bottoms2021-10-223-3/+3
| | | | Thanks to Mait for pointing these out!
* docs: Clarify set/get_gpio_attr() and GPIO banksMartin Braun2021-10-221-10/+48
| | | | | | This adds a section on GPIO bank names to multi_usrp.hpp, and clarifies the difference between the multi_usrp and RFNoC APIs regarding GPIO control.
* docs: Fix GPIO documentation exampleLane Kolbly2021-10-201-5/+5
|
* uhd: math: Replace wrap-frequency math with a single functionMartin Braun2021-10-195-21/+41
| | | | | | | | | 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-192-0/+22
| | | | | We've been having issues with moving locations of Boost headers for this function, and it's simple enough to implement ourselves.
* lib: Remove all remaining usage of boost::numeric::bounds<>Martin Braun2021-10-191-2/+3
| | | | Replaced by std::numeric_limits<>.
* uhd: Replace Boost mutexes and locks with standard optionsMartin Braun2021-10-1940-297/+292
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a very mechanical task that could almost have been done with sed. Boost versions of mutexes and locks were removed, and replaced with std:: versions. The replacement tables are as follows: == Mutexes == - boost::mutex -> std::mutex - boost::recursive_mutex -> std::recursive_mutex Mutexes behave identically between Boost and std:: and have the same API. == Locks == C++11 has only two types of lock that we use/need in UHD: - std::lock_guard: Identical to boost::lock_guard - std::unique_lock: Identical to boost::unique_lock Boost also has boost::mutex::scoped_lock, which is a typedef for boost::unique_lock<>. However, we often have used scoped_lock where we meant to use lock_guard<>. The name is a bit misleading, "scoped lock" sounding a bit like an RAII mechanism. Therefore, some previous boost::mutex::scoped_lock are now std::lock_guard<>. std::unique_lock is required when doing more than RAII locking (i.e., unlocking, relocking, usage with condition variables, etc.). == Condition Variables == Condition variables were out of the scope of this lock/mutex change, but in UHD, we inconsistently use boost::condition vs. boost::condition_variable. The former is a templated version of the latter, and thus works fine with std::mutex'es. Therefore, some boost::condition_variable where changed to boost::condition. All locks and mutexes use `#include <mutex>`. The corresponding Boost includes were removed. In some cases, this exposed issues with implicit Boost includes elsewhere. The missing explicit includes were added.
* cmake: use LooseVersion to ensure correct version comparisonsLars Amsel2021-10-141-3/+3
| | | | | | current implementation uses version strings for comparisons. This led version 3.10 to be smaller than 3.6 which is obviously wrong. Use LooseVersion to have correct version comparison.
* rfnoc: mgmt_portal: Remove two unused variablesMartin Braun2021-10-111-4/+6
| | | | Thanks for github user johnwstanford for pointing those out.
* bug: fix channel indexing when reading USRP powerLars Amsel2021-10-111-1/+1
| | | | | | | the USRP power meter will only receive from a single channel which is configured by the argument parameter. The streamer receive data will therefor alwalys have a single channel. So do not index with chan when passing the streamer to uhd.dsp.signals.get_usrp_power.
* devtest: Clarify data type in multi_usrp_test::send_waveform()Martin Braun2021-10-061-1/+1
|
* python: multi_usrp: Fix issues in send_waveform()Martin Braun2021-10-062-19/+36
| | | | | | | - Like with RX, this now allows passing in stream time and existing streamer - There was no EOB being sent at the end (now there is) - Fixed some linter issues
* python: multi_usrp: Fix issues with recv_num_samps()Martin Braun2021-10-061-24/+63
| | | | | | | | | - This function didn't set the time properly for multi-chan rx - There was no way to set a start time manually - It relied on garbage collection and correct destruction of streamers when being called multiple times. Addressed this by adding an option to pass in an existing streamer object. - Linter wasn't too happy with this function.