aboutsummaryrefslogtreecommitdiffstats
path: root/host
Commit message (Collapse)AuthorAgeFilesLines
* 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.
* libusb: Remove unused context variableMartin Braun2021-09-301-2/+5
| | | | | | | | | | | The USB managed buffer implementation created a context every time one was generated. The additional load is not very high, because the global session is a singleton, and simply returns the same context again with only a few branches. Also, managed buffers persist for the entire session. However, the context is never used in the managed buffer. This code is thus confusing for the reader of this code, and we remove the extraneous, unused context variable.
* ad9361: Add comment re overclockingMartin Braun2021-09-301-3/+23
| | | | | | | | | | As GitHub user marcosino points out, we're running the AD9361 in overclocked mode. This is because the driver was written with no longer valid recommendations. We add a comment and some debug messages to clarify this. Should there be RF impairments (signal integrity or other) because of overclocking, users would be able to check DEBUG log statements to correlate with overclocked configurations.
* docs: x410: Fix info on loading SD card images with bmaptoolMartin Braun2021-09-281-1/+5
|
* python: Fix dropped-sample calculation in benchmark_rate.pyMartin Braun2021-09-281-5/+7
| | | | | | | | | | This fixes a subtle bug, where a variable to cache the timestamp of an error gets bound to the metadata instead of creating a copy thereof. Without this fix, the calculation of dropped samples would always be 0, because the difference in timestamps would incorrectly be always zero. This fix will now make a copy of the timestamp. Shoutout to GitHub user bhorsfield for finding this issue.
* 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.
* docs: Improve docs for rx_streamer::recv() on overrunsMartin Braun2021-09-281-1/+21
|
* chdr: Rename var max_size_bytes to avoid confusionMartin Anderseck2021-09-282-21/+41
| | | | | | | | | The variable max_size_bytes has a different name in the source than in the header and is not self-explanatory in both. Therefore when comparing against it in the assertion in line 142 one could assume that a number of bytes needs to be compared with a byte value. Change variable to `buff_size` in source and header file to avoid confusion and add documentation.
* ad9361: Modify set-tx-gain procedure to update gain in one goMartin Braun2021-09-171-7/+13
| | | | | | | | | | | | | | | | | | | | | | | | | The previous behaviour of UHD for setting gain was: 1. Set "Mask Clr Atten Update". This will avoid "Immediately Update TPC Atten" to be cleared. 2. Then, assert "Immediately Update TPC Atten". 3. Poke the LSBs of the attenuation value. 4. Poke the MSB of the attenuation value. This order of operations has the downside of causing large Tx power spikes when setting the attenuation, because you need both registers to properly set the attenuation, but we are updating the gain immediately, even between the two attenuation register's update. Moreover, the upstream Linux driver for AD9361 by ADI also does not do this. We therefore change the procedure to match the kernel driver behaviour, which is: 0. [During initialization: Clear "Mask Clr Atten Update" 1. Poke the attenuation registers 2. Then, assert "Immediately Update TPC Atten". This avoids Tx power spikes. It also reduces the Tx-gain procedure to 3 pokes instead of 4.
* examples: Improve txrx_loopback_to_file (late recv, Boost, timing)Martin Braun2021-09-171-18/+22
| | | | | | | | | | | | - Fixes a bug where the RX stream command set set independent of the device time. Now, we read back get_time_now() to calculate the command time. - When using multiple RX USRPs, sync their times. Before, they were left untouched, causing possible timing mismatches. - Increase the initial timeout value. The previous value had only been tested with N2x0. - Replace the boost::thread_group with a std::thread. - Remove some boost::format where it didn't add value.
* cmake: Fix rfnoc-example (CMake paths)Martin Braun2021-09-173-11/+11
| | | | | This reverts part of 09d94529e, which should not have touched these particular CMake files.
* uhd: zbx: Prevent TX antenna config from disrupting RXLane Kolbly2021-09-162-2/+28
| | | | | | | | | | | | | | 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.
* docs: sync: Update page on synchronizationMartin Braun2021-09-161-19/+24
| | | | | - Clarify features that only work on B100 and N2x0 (_external_) - De-emphasize MIMO-cable sync