aboutsummaryrefslogtreecommitdiffstats
path: root/host/include
Commit message (Collapse)AuthorAgeFilesLines
...
* rfnoc: Add Switchboard block supportJesse Zhang2020-07-303-0/+50
|
* fpga: Add Switchboard RFNoC blockJesse Zhang2020-07-301-0/+41
|
* rfnoc: Support instance overrides in set_properties()Aaron Rossetto2020-07-242-0/+24
| | | | | | | | | | | | | | | | | | | | | | | This commit adds an enhancement to node_t::set_properties() in which the instance argument provided to the function (which normally applies to all properties in the key/value list) can be overridden on a per-property basis using a special syntax. If the key consists of the property name followed by a colon (':') and then a number, the number following the colon is used to determine which instance of the property this set pertains to, and the value passed via the instance parameter is ignored for that property. For example, in the following call: node->set_properties("dog=10,cat:2=5,bird:0=0.5", 1) instance 1 of node's 'dog' property is set to 10, the 1 coming from the instance parameter, instance 2 of the node's 'cat' property is set to 5 due to the override syntax provided in the string, and instance 0 of the node's 'bird' property is set to 0.5 due to its override. If the name/instance pair is malformed, e.g. 'value:=10' or 'value:foobar=10', a runtime error is thrown.
* uhd: remove liberioRobertWalstab2020-07-201-1/+0
|
* multi_usrp: Add get_radio_control() API callMartin Braun2020-07-161-0/+20
| | | | | This is an advanced API call that allows direct underlying access to the radio_control object for RFNoC devices.
* multi_usrp: Fix some documentationMartin Braun2020-07-161-1/+3
|
* fpga: rfnoc: Add RFNoC Moving Average blockWade Fife2020-07-161-0/+55
|
* rfnoc: Add Moving Average block controllermattprost2020-07-163-11/+75
| | | | Signed-off-by: mattprost <matt.prost@ni.com>
* python: Add bindings for C++ CHDR ParserSamuel O'Brien2020-07-162-0/+40
| | | | | | | | | | | | | This commit adds pybind11 glue code for the userland chdr parsing code introduced in the uhd::utils::chdr namespace. Additionally, it moves some pybind11 adapter code to a common pybind_adaptors.hpp file which originally existed in the cal_python.hpp file. This commit also adds unit tests for the python bindings using a captured wireshark trace which is located in rfnoc_packets_*.py and some handwritten packets in hardcoded_packets.py Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* utils: Expose CHDR Parsing APISamuel O'Brien2020-07-136-11/+371
| | | | | | | | | | | | This commit introduces a new public api in uhd::utils which allows serializing and deserializing chdr packets. As far as testing, this commit adds the chdr_parse_test test. It uses a wireshark trace located in rfnoc_packets_*.cpp as well as hand coded packets from hardcoded_packets.cpp to test the serialization and deserialization process Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* utils: Expose CHDR Types in Public APIrobot-rover2020-07-134-0/+920
| | | | | | | | | | This commit exposes uhdlib/rfnoc/chdr_types.hpp in the public includes. Additionally, it takes some types from uhdlib/rfnoc/rfnoc_common.hpp and exposes them publicly in uhd/rfnoc/rfnoc_types.hpp. Finally, one constant is moved from uhdlib/rfnoc/rfnoc_common.hpp to uhd/rfnoc/constants.hpp Signed-off-by: robot-rover <sam.obrien@ni.com>
* meta-ettus: remove io_type.hppSteven Koo2020-07-082-66/+0
| | | | | | | io_type's implementation was removed when host/lib/depricated.cpp was removed. This commit also removes the hpp and installation. Signed-off-by: Steven Koo <steven.koo@ni.com>
* rfnoc: Add Log Power RFNoC block supportAaron Rossetto2020-06-293-0/+29
|
* fpga: rfnoc: Add Log-Power blockWade Fife2020-06-291-0/+56
|
* rfnoc: Add window RFNoC block controllerAaron Rossetto2020-06-293-0/+76
|
* fpga: rfnoc: Add RFNoC Window blockWade Fife2020-06-291-0/+56
|
* fixup! uhd: Add discoverable_features APILane Kolbly2020-06-251-1/+4
|
* uhd: Implement discoverable_features for radio_controlLane Kolbly2020-06-251-1/+3
| | | | | radio_control doesn't implement any discoverable_features in particular, but this gives it the API to do so.
* uhd: Create discoverable feature registry implementationLane Kolbly2020-06-251-1/+1
| | | | | | Classes which want to implement discoverable_feature can simply inherit from this registry and get access to an ergonomic map-backed registry of features.
* uhd: Add discoverable_features APILane Kolbly2020-06-254-0/+115
| | | | | | | | The "discoverable features" API handles how clients access the myriad features we offer, without simply adding a million has_FOO and do_FOO methods to radio_control and multi_usrp. discoverable_features allows clients to query the existance of, enumerate, and ultimately they get (by enum or by type) an object which implements their wanted feature.
* cal: change default extension of calibration filesLars Amsel2020-06-234-14/+28
| | | | | | | | | Flatbuffers offers an option to set the default extension for binary files. Our calibration files have the extension .cal. Set the extension in all schema files to ease conversion between binary and text representation of calibration files. Updated documentation accordingly.
* rfnoc: Update port format in block YAMLWade Fife2020-06-189-22/+22
|
* rfnoc: Add makefile_srcs to block YAMLWade Fife2020-06-185-0/+5
|
* fpga: rfnoc: Add support for 512-bit CHDR widthsAndrew Moch2020-06-181-0/+4
| | | | | | | | This fixes the rfnoc_null_src_sink, chdr_crossbar_nxn, and chdr_stream_endpoint blocks so that wider CHDR widths are properly supported. It also updates PkgChdrBfm to able to properly test these blocks. The testbenches have been updated to test both 64 and 512-bit widths.
* rfnoc: Augment FFT RFNoC block controllerAaron Rossetto2020-06-182-26/+130
| | | | | | | This commit augments the existing FFT RFNoC block controller with C++ functions through which the block can be configured, as well as adding range checking to the various properties that sit atop the FFT RFNoC block registers.
* python: Add radio RFNoC block controller bindingsAaron Rossetto2020-06-091-1/+1
|
* rfnoc: Add Add/Sub RFNoC block supportAaron Rossetto2020-05-283-1/+32
|
* fpga: rfnoc: Add RFNoC Add/Sub blockWade Fife2020-05-281-0/+62
|
* rfnoc: Add support for Split Stream RFNoC blockAaron Rossetto2020-05-283-0/+65
| | | | | | | | The split stream RFNoC block is an RFNoC block that takes in a single CHDR stream and duplicates it, creating a number of output streams for each input stream. Consult the split_stream_block_control class header file for more details on block configuration and behavior, including how property and action forwarding is handled by the block.
* rfnoc: Add USE_MAP prop/action forwarding policyAaron Rossetto2020-05-282-1/+61
| | | | | | | | | | | | This commit adds a new forwarding policy for properties and actions, USE_MAP. This forwarding policy causes the node to consult a user-provided map to determine how to forward the property or action. The map's key is the source edge of the incoming property or action, while the value is a list of destination edges to which the property should be propagated or action should be forwarded. It allows clients to construct sophisticated forwarding behaviors for specialized blocks, such as a split stream block that needs to forward properties and actions only to specific output edges based on the incoming edge.
* rfnoc: Add Split Stream RFNoC blockWade Fife2020-05-281-0/+37
|
* cal: Minor fixes in power container, add unit testMartin Braun2020-05-261-2/+2
| | | | | | | - min_power and max_power arguments were swapped. They were always called correctly, so this is more of a documentation fix. - Add a unit test for the case where power values are not regular, which is the normal case with real data.
* rfnoc: radio: Add APIs to query cal keysMartin Braun2020-05-201-0/+41
| | | | | | | | This allows asking the radio for the keys it uses to read/write its calibration data. By querying radio_control::get_{rx,tx}_power_ref_keys(), the return values can be used to access uhd::usrp::cal::database::read_cal_data().
* cal: database: Add option to register flash cal callbacksMartin Braun2020-05-201-1/+23
| | | | | | | | | | | This adds the possibility to read cal data from flash/EEPROM by adding callbacks to the database. Unlike the RC and FILESYSTEM data, this is very device-specific, but we can let devices register callbacks in the database so that reading cal data from flash can use the same APIs as from RC or filesystem. Note that this also gives a convenient way to inject call data during unit tests, if desired.
* rfnoc: Add Vector IIR RFNoC block supportAaron Rossetto2020-05-193-0/+111
|
* fpga: rfnoc: Add Vector IIR RFNoC blockWade Fife2020-05-191-0/+58
|
* DUC/DDC: Add variable time incrementMichael West2020-05-122-0/+2
| | | | | | | | | Sets time increment based on tick rate and sample rate instead of assuming one tick per sample. Defaults to legacy behavior. Minor compat number bumped on DUC and DDC blocks. Signed-off-by: Michael West <michael.west@ettus.com>
* uhd: Remove default channel input from power ref methodsCiro Nishiguchi2020-05-111-6/+6
| | | | | The radio_control methods shouldn't have a default value for the channel input, to keep them consistent with other methods in this class.
* utils: Add sideband_at_end support to Mako templateWade Fife2020-04-211-0/+2
| | | | | | | | This adds a new option to the "AXI-Stream Data" (axis_data) FPGA interface type. The new option, "sideband_at_end", can be added to the output port of a block's YAML description to control whether the sideband information should be sampled at the end (sideband_at_end: 1) or the beginning (sideband_at_end: 0) of the AXI-Stream packet.
* math: Add dB_to_lin() and lin_to_dB()Martin Braun2020-04-171-0/+11
| | | | | | | | | | | | | These are simply shorthands, but make the code a little more readable with respect to intent. It allows to replace const double power_db = 10 * std::log10(power_lin); with const double power_db = lin_to_dB(power_lin); which expresses the intent a little more clearly and concisely.
* uhd: Add reference power level API to multi_usrp and radio_controlMartin Braun2020-04-172-0/+205
| | | | | | | | | | | | | | | | | | This adds the following API calls: - multi_usrp::has_{rx,tx}_power_reference() - multi_usrp::set_{rx,tx}_power_reference() - multi_usrp::get_{rx,tx}_power_reference() - radio_control::has_{rx,tx}_power_reference() - radio_control::set_{rx,tx}_power_reference() - radio_control::get_{rx,tx}_power_reference() It also adds a manual page explaining the philosophy of the API. Note that this does not actually add this feature to any device implementation. Calling the new API calls will thus result in `uhd::not_implemented_error` exceptions being thrown. This commit is to lock down the API and ABI.
* cal: Add pwr_cal containerMartin Braun2020-04-174-1/+541
| | | | | | | This is a cal container for all types of power cal (RX or TX) that rely on a single, overall gain value. Includes Python API.
* rfnoc: Add RFNoC fosphor blockWade Fife2020-04-144-0/+442
|
* multi_usrp: Approximate legacy behaviour for recv_async_msg()Martin Braun2020-04-132-8/+5
| | | | | | | | | | | | | When using multi_usrp with an RFNoC device, the previous behaviour was to throw an exception when calling recv_async_msg() so users would know they're not supposed to call it (calling tx_stream::recv_async_msg is preferred). However, this breaks too many existing applications. Instead, we keep a weak pointer to the streamer, the same way that older devices do, and query the async message from that. This means that calling recv_async_msg() when there are multiple streamers can lead to unexpected behaviour, but that's a general issue with multi_usrp::recv_async_msg() and this way, the RFNoC devices now behave like older devices do.
* multi_usrp_rfnoc: Manually pass sample rate to ddc/ducsteviez2020-04-132-0/+14
| | | | | | | | | | | | | | This adds (and calls) methods to manually pass radio block sample rate to the input/output properties of the ddc/duc during creation of the multi_usrp_rfnoc object. The ddc/duc require this information in order to return valid, possible output/input sample rates in get_rx_rates()/get_tx_rates(). Before, the ddc/duc wouldn't have this rate until the rfnoc_graph had been connected and committed, which happens in get_rx_stream()/get_tx_stream(). Thus, this fixes an issue where a user was unable to query possible sample rates prior to specifying a sample rate and creating a stream.
* uhd: Replace include guards with pragma onceLane Kolbly2020-04-08157-626/+157
| | | | | Pragma once is the more modern version of include guards, eliminating any potential problems with mistyping include guards. Let's use those.
* rfnoc: Add FIR filter RFNoC block controllerAaron Rossetto2020-04-073-3/+74
|
* uhd: math: Add interpolation.hppMartin Braun2020-04-076-38/+25
| | | | | | | | - Moves linear_interp from cal to utils - Moves the interp_mode enum class to interpolation.hpp - Adds three interpolation methods for maps: at_interpolate_1d(), at_nearest(), at_lin_interp() - Adds unit tests
* uhd: paths: Harmonize around XDG Base Directory specificationMartin Braun2020-04-021-3/+0
| | | | | | | | | | | | | | | | | | | | | | Up until now, we completely ignore the XDG specification. This commit does the following to change that: - It uses XDG_DATA_HOME and XDG_CONFIG_HOME for cal and config data, respectively. - If config data is in ~/.uhd/uhd.conf, that is still accepted, but if it conflicts with $XDG_CONFIG_HOME/uhd.conf, it is ignored and a warning is displayed - The default location for cal data is thus ${HOME}/.local/share/uhd/cal on Unix, and %LOCALAPPDATA%\uhd\cal on Windows. This is a change in location! - The UHD_CONFIG_DIR environment variable was confusingly named and is now removed. It provided an alternative location than the home directory. The same purpose is now much better served by XDG_DATA_HOME and XDG_CONFIG_HOME. The specification can be found here: specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
* rfnoc: Add multichannel register interfacemattprost2020-04-022-5/+299
| | | | | | | | | | | This utility class implements the register access methods of reg_iface but adds built-in address translation features for consecutive instances of an RFNoC block. The register peek and poke methods accept an extra 'instance' parameter which is used to calculate the absolute address for the register access. This can be used for accessing registers for the different channels of a multi-channel block (i.e. Radio, DDC, DUC, etc). Signed-off-by: mattprost <matt.prost@ni.com>