aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/include/uhdlib/usrp
Commit message (Collapse)AuthorAgeFilesLines
* uhd: Apply clang-format against all .cpp and .hpp files in host/Martin Braun2020-03-0334-1127/+1088
| | | | | Note: template_lvbitx.{cpp,hpp} need to be excluded from the list of files that clang-format gets applied against.
* ad9361: Fix formattingMartin Braun2020-02-101-6/+6
| | | | | - Apply clang-format - Remove unnecessary boost::format
* mpm/mpmd: Expose APIs to drive GPIO sourcesMartin Braun2020-01-231-0/+8
| | | | | | | | | | | | | | | | | | | The N310 has a feature that allows the front panel GPIOs to be driven by various sources: The PS, or any of the radio channels. The MPM-based APIs did not expose any way to change that. Changes: - Add MPM APIs to PeripheralManagerBase and n3xx classes - Improve comments and explanations - Add host-side hooks into these new APIs in mpmd_mb_controller - Implement these APIs for N3xx The N3xx devices will have the option to set the GPIO source to "PS", or to one of "RF0", "RF1", "RF2", "RF3" (if there are four channels; the N300 and N320 can only go up to RF1). Note: The N310 radio does not have separate FP-GPIO banks for channels 0 and 1, which needs to be fixed in a separate commit.
* uhd: fixing MSVC warningsBrent Stapleton2020-01-092-12/+21
| | | | | | | | | | | Small changes to remove various compiler warnings found in MSVC - Adding uhd::narrow_cast to verious spots - wavetable.hpp: all floats literals in the wavetable. - paths_test: unnecessary character escape - replay example: remove unreferenced noc_id - adfXXXX: Fixing qualifiers to match between parent and derived classes - rpc, block_id: Removing unused name in try...catch
* usrp: Add I/O service manager for DPDKCiro Nishiguchi2019-12-201-0/+69
|
* rfnoc: Rename thread affinity argsCiro Nishiguchi2019-11-261-24/+21
| | | | | | Rename thread affinity args such that they do not end with an integer. Arg names ending with an integer are interpreted as being targeted at a specific motherboard index in device_addr methods.
* rfnoc: Merge I/O service device args with stream argsCiro Nishiguchi2019-11-262-3/+18
| | | | | This makes it possible for users to put I/O service-related args in either the device args or stream args.
* uhd: Introduce I/O service managerAaron Rossetto2019-11-262-0/+197
| | | | | | | | | | | | | | | | | | | | | | | | | | - Implement I/O service detach link methods - The I/O service manager instantiates new I/O services or connects links to existing I/O services based on options provided by the user in stream_args. - Add a streamer ID parameter to methods to create transports so that the I/O service manager can group transports appropriately when using offload threads. - Change X300 and MPMD to use I/O service manager to connect links to I/O services. - There is now a single I/O service manager per rfnoc_graph (and it is also stored in the graph) - The I/O service manager now also knows the device args for the rfnoc_graph it was created with, and can make decisions based upon those (e.g, use a specific I/O service for DPDK, share cores between streamers, etc.) - The I/O Service Manager does not get any decision logic with this commit, though - The MB ifaces for mpmd and x300 now access this global I/O service manager - Add configuration of link parameters with overrides Co-Authored-By: Martin Braun <martin.braun@ettus.com> Co-Authored-By: Aaron Rossetto <aaron.rossetto@ni.com>
* uhd: Replace boost::function with std::functionMartin Braun2019-11-264-6/+6
| | | | | | | This is mostly a search-and-replace operation, with few exceptions: - boost::function has a clear() method. In C++11, this is achieved by assigning nullptr to the std::function object. - The empty() method is replaced by std::function's bool() operator
* uhd: Replace usage of boost smart pointers with C++11 counterpartsMartin Braun2019-11-2626-52/+52
| | | | | | | | | | | | | | | | | | | This removes the following Boost constructs: - boost::shared_ptr, boost::weak_ptr - boost::enable_shared_from_this - boost::static_pointer_cast, boost::dynamic_pointer_cast The appropriate includes were also removed. All C++11 versions of these require #include <memory>. Note that the stdlib and Boost versions have the exact same syntax, they only differ in the namespace (boost vs. std). The modifications were all done using sed, with the exception of boost::scoped_ptr, which was replaced by std::unique_ptr. References to boost::smart_ptr were also removed. boost::intrusive_ptr is not removed in this commit, since it does not have a 1:1 mapping to a C++11 construct.
* rfnoc: Add DMA FIFO block controllerMartin Braun2019-11-261-46/+27
|
* x300/mpmd: Port all RFNoC devices to the new RFNoC frameworkMartin Braun2019-11-262-22/+119
| | | | | | | Co-Authored-By: Alex Williams <alex.williams@ni.com> Co-Authored-By: Sugandha Gupta <sugandha.gupta@ettus.com> Co-Authored-By: Brent Stapleton <brent.stapleton@ettus.com> Co-Authored-By: Ciro Nishiguchi <ciro.nishiguchi@ni.com>
* rfnoc: Add multi_usrp_rfnoc, modify multi_usrpBrent Stapleton2019-11-261-0/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds a separate version of multi_usrp for RFNoC devices. It is compatible with RFNoC devices only, and prefers C++ APIs over property tree usage. The factory of multi_usrp is modified such that it picks the correct version, users of multi_usrp don't care about this change. This also introduces some API changes: - Removing redundant GPIO functions. Now all GPIO control, setting, and readback is done with uint32_t's. - Adding getter/setter for GPIO source. This was done to simplify the other GPIO settings, as the source for each pin is not always a binary. The CTRL mode, for example, can either be ATR or GPIO. However, the source can be controlled by various radios or "PS" or some other source. - Removing the mask from the RFNoC radio controllers' set_gpio_attr(). - Adding state caching to gpio_atr_3000, and a getter for it. Whenever an attribute is set, that value is cached, and can now be retreieved. - Remove low-level register API. Since UHD 3.10, there is no USRP that implements that API. Modifying the filter API in the following ways: - Splitting filter API getter/setter/list into separate RX and TX functions - Adding channel numbers as an argument - The filter name will no longer be a property tree path, but rather a filter name. For RFNoC devices, this will take the form `BLOCK_ID:FILTER_NAME`. For non-RFNoC devices, this will just be the filter name (e.g. `HB_1`) - Removing search mask from listing function. Users can do their own searching Co-Authored-By: Martin Braun <martin.braun@ettus.com>
* gpio_atr_3000: Formatting changesBrent Stapleton2019-11-261-14/+25
| | | | | | | | Applying clang format for upcoming changes. clang-format -i --style=file host/lib/usrp/cores/gpio_atr_3000.cpp clang-format -i --style=file \ host/lib/include/uhdlib/usrp/cores/gpio_atr_3000.hpp
* cores: gpio_atr_3000: Add capability to configure register offsetMartin Braun2019-11-261-10/+14
| | | | | | The existing implementation assumes registers are spaced 4 bytes apart. In the current radio block design, all backward compatible registers are spaced 8 bytes apart. This adds a feature to configure that offset.
* tx_fe_200: make register offset controllableBrent Stapleton2019-11-261-1/+1
| | | | | | Following the changes in RX frontend controls, TX frontend register offsets are now arguments to the factory function. They default to 4, which is what the register offset was in the file before these changes.
* rx_fe_3000: Changing register address calcBrent Stapleton2019-11-261-1/+2
| | | | | | | | Changing how we calculate RX frontend register addresses to allow for different register offsets. The register addresses are now calculated in a manor similar to how gpio_atr_300_impl does register address calculations, which is to allow a reg_offset to be passes in at construction. The current default is reg_offset=4.
* lib: cores: Adapt spi_core_3000 for use with register_ifaceMartin Braun2019-11-261-1/+12
| | | | | Removes the requirement for a wb_iface, and also the requirement for regs to be 4 addresses apart.
* lib: adf535x: Add trace logs for synth configurationMartin Braun2019-11-261-0/+18
|
* lib: Replace uhd::get_system_time() with steady_clockMartin Braun2019-11-261-6/+10
| | | | | | 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.
* lib: utils: Add new signature to get_freq_and_freq_word()Martin Braun2019-11-261-1/+7
| | | | | The new signature uses tuple as the return value, instead of passing in output variables as references (C-style).
* rx_fe_3000: formatting for upcoming changesBrent Stapleton2019-08-251-5/+5
|
* max287x: improve loggingMark Meserve2019-06-121-7/+12
| | | | | - Split tuning log into 3 lines - Remove duplicated MAX287X
* cores: Apply clang-format to ?x_dsp_core_3000.*Martin Braun2019-05-222-13/+12
|
* adf435x: run clang-formatMark Meserve2019-05-071-146/+251
|
* adf435x: add low spur tuning modeMark Meserve2019-05-071-5/+56
| | | | | - adds a new mode to the adf435x driver which provides general spur performance improvements
* adf535x: add charge pump controlMark Meserve2019-05-021-3/+55
|
* adf435x: add charge pump with double parameterMark Meserve2019-05-021-0/+34
|
* adf435x: enhance logging messagesMark Meserve2019-05-021-10/+13
|
* include: Remove BOOST_VERSION hacks for 1.58Martin Braun2019-04-241-5/+0
| | | | | This removes all version hacks that were required for Boost versions 1.53 through 1.58 (since we now require 1.58).
* lib: Allow "0" and "1" as false/true values for constrained device argsMartin Braun2019-03-201-2/+6
| | | | | | | | | | Example: $ uhd_usrp_probe --args type=x300,ignore_cal_file=0 is equivalent to (the currently supported): $ uhd_usrp_probe --args type=x300,ignore_cal_file=false
* uhd: mpm: update all license header w/ "-or-later"Brent Stapleton2019-03-081-1/+1
| | | | Updating all SPDX license identifiers to include "-or-later"
* include: max287x: Fix conversion warningMartin Braun2019-02-281-1/+1
|
* uhd: Replace all usage of boost::noncopyable with uhd::noncopyableMartin Braun2019-02-1520-42/+45
| | | | | | This fixes the build errors that occur due to switching locations of noncopyable.hpp within Boost, and also allows us to remove boost::noncopyable in one fell swoop.
* lib: fix includes for boost::noncopyableMichael Dickens2019-02-111-0/+5
| | | | | | | - expert_nodes.hpp: fix to work with BOOST_VERSION < 105600, since UHD still supports Boost 1.53.00. - gpio_atr_3000.hpp: requires boost::noncopyable header, so replicate that (now) in export_nodes.hpp.
* math: Replace boost::*::{lcm,gcd}() with portable versionsMartin Braun2019-01-182-6/+4
| | | | | | Boost changed the lcm() and gcd() functions in Boost 1.67. This creates portable UHD versions to be used instead. They use various Boost versions under the hood conditionally.
* formatting: preparing for uhd::math cleanupBrent Stapleton2019-01-182-370/+450
| | | | Formatting files that will be touched in upcoming changes to uhd::math
* uhd: skip formatting misc arrays, maps, etc.Brent Stapleton2019-01-161-0/+2
| | | | | | Various data structures are nicely formatted to be human-readable. clang-format makes these structures harder to read, so we can skip formatting these sections.
* TwinRX: Fix tuningMichael West2019-01-021-7/+4
| | | | | - Set SPI clock back to 3 MHz - Fix returned frequency for ADF5355 (rev A and B boards)
* TwinRX: Enable phase resync on ADF535xmichael-west2018-12-101-17/+9
|
* TwinRX: Tuning improvementsmichael-west2018-12-101-10/+8
| | | | | | - Added delay for VTUNE calibration as per ADF5355 and ADF5356 data sheets - Increased SPI clock to 10 MHz - Removed write to register 10 during tuning of ADF5356 to match ADF5355 code and reduce tune time
* twinrx: revise adf5356 frac2 register calculationMark Meserve2018-10-171-1/+1
| | | | | - If FRAC2 isn't exactly FRAC1 at certain frequencies, drifting spurs can be seen in the spectrum
* lmx2592: add spur dodgingMark Meserve2018-10-171-1/+4
|
* lib: Improve constrained_device_args_tMartin Braun2018-08-101-2/+14
| | | | | - Add default parser helper - Allow _enforce_discrete() for str_arg
* rfnoc: dma_fifo: Added a more robust flush mechanismAshish Chaudhari2018-08-031-1/+1
| | | | | | | | | - The flushing mechanism now looks similar to that in noc_shell - Make use of new flush bit in FIFO control register - Restrict using the clear bit only after flushing to ensure no partial packets are introduced in the stream. (clear immediately empties out FIFOs) - Changes are backwards compatible with older FPGAs
* b100: Move fifo_ctrl_excelsior to b100 subdirMartin Braun2018-07-311-51/+0
| | | | | This device is the only one using it, and no one will ever use it going forward.
* mpm: initial commit of E320 codeBrent Stapleton2018-07-181-0/+6
| | | | Co-authored-by: Sugandha Gupta <sugandha.gupta@ettus.com>
* fixup! e300: merge files from rfnoc-develMartin Braun2018-07-061-0/+3
|
* e300: merge files from rfnoc-develTrung N Tran2018-06-291-7/+0
| | | | This disables the ability to do "network mode" on the E310.
* *_dsp_core: Update frequency when updating ratesVidush2018-06-212-0/+4
| | | | | Since the frequency shifter is set to a relative rate, it needs to be updated when changing the sampling rate.