aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
Commit message (Collapse)AuthorAgeFilesLines
* b200: Move the B200 radio control core into usrp/b200/Martin Braun2021-07-207-25/+24
| | | | | | | | | | | | This serves two purposes: - This file no longer goes into the compiled DLL if B200 is disabled - Discourage use of this file for new devices, making it clear that this architecture is no longer used The file itself is left untouched, only the class is renamed from radio_ctrl_core_3000 to b200_radio_ctrl_core. Note: In UHD 3, this file was also used by N230.
* dbsrx: Fix issue with loop variableMartin Braun2021-07-201-3/+4
| | | | | | In 26cc208, we accidentally added an `auto` into a loop, making the loop variable's scope local. However, this variable lives outside this for loop.
* rfnoc: allow find_blocks to search by device number or block count.Lars Amsel2021-07-201-3/+3
| | | | | | | | | | | | | 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).
* host: Add static_assert to prevent meta_range_t(0,0)Lane Kolbly2021-07-144-8/+8
| | | | | | | meta_range_t(0,0) actually calls the iterator-based constructor for meta_range_t, which is almost certainly not the intended constructor for that call syntax. Therefore, we add a static_assert to prevent such usage, and fix all failing instances.
* lib: Add various missing includesMartin Braun2021-07-142-0/+3
|
* uhd: Replace boost::thread::id with std::thread::idMartin Braun2021-07-143-4/+5
| | | | | | | | The Boost version is identical to the std:: version (which is available since C++11) and thus is no longer needed. Because of implicit includes, this breaks compilation in other parts. Appropriate includes were added there also.
* core: remove boost::math in favor of std cmathMichael Dickens2021-07-062-13/+16
| | | | | | | | | | | | | | | | | | | | | | YA Boost removal!!! Justification --- const int if_freq_sign = boost::math::sign(fe_conn.get_if_freq()); _dsp_freq_offset = if_freq * (-if_freq_sign); // boost::math::sign : 1 if x > 0, -1 if x < 0, and 0 if x is zero. // ==> if if_freq_sign > 0 then * by -1 else +1 (effectively) // std::signbit : true if arg is negative, false otherwise // ==> need 'not' of input argument to invert for same result as prior algorithm double fe_if_freq = fe_conn.get_if_freq(); if (!std::signbit(fe_if_freq)) { if_freq *= -1.0; } --- The above should result in the same algorithm except possibly if fe_if_freq is exactly 0.0 in which case the results might be off by the sign (+0.0 versus -0.0).
* cmake: remove redundant includeMichael Dickens2021-07-061-1/+0
|
* cmake: correctly set and unset any CMAKE_REQUIRED variablesMichael Dickens2021-07-062-7/+7
|
* x3xx: Fix x3xx fpga image namemattprost2021-06-251-1/+1
|
* mpm: Bump MPM compat version to 4.0Lane Kolbly2021-06-241-1/+1
|
* uhd: Remove includes of list_of.hpp where appropriateMartin Braun2021-06-249-9/+0
| | | | This Boost header is included in some places, despite not being used.
* uhd: Remove all occurences of boost::math::*round()Martin Braun2021-06-2432-101/+104
| | | | | | | 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.
* b200: flush receive buffer after getting an overflowMatthew Crymble2021-06-241-1/+3
|
* b200: temporary change to remove stream restart after overflowMatthew Crymble2021-06-241-3/+8
|
* uhd: Use chain's block channel to get power ref keysGrant Meyerhoff2021-06-231-2/+2
|
* fixup! zbx: Fix clang compiler warningsMartin Braun2021-06-231-4/+0
| | | | | The TRACE message is repeated in the zbx_lo_ctrl object and is thus not worth carrying the _chan and _trx attributes.
* lib: deps: Upgrade vendor version of Pybind11 to 2.6.1Martin Braun2021-06-2326-751/+1743
| | | | | | | | | | | | | | | | | | | | | | - Copied include/pybind11 directory over from source repo - Also re-ran remove_comments.py as before This fixes this warning on newer Python libraries: .../internals.h: 200:9: warning: 'PyEval_InitThreads' is deprecated [-Wdeprecated-declarations] PyEval_InitThreads(); ^ /usr/include/python3.9/ceval.h:130:1: note: 'PyEval_InitThreads' has been explicitly marked deprecated here Py_DEPRECATED(3.9) PyAPI_FUNC(void) PyEval_InitThreads(void); ^ /usr/include/python3.9/pyport.h:508:54: note: expanded from macro 'Py_DEPRECATED' #define Py_DEPRECATED(VERSION_UNUSED) __attribute__((__deprecated__)) It also obviates the need for patches to Pybind11 to silence clang warnings.
* transport: Fix compiler warning in nirio_linkMartin Braun2021-06-221-2/+0
| | | | | | Remove unused variables. These variables were doubly problematic: They referenced the boost:: namespace, but this file had no more boost includes.
* lmx2572: Fix compiler warningMartin Braun2021-06-221-3/+2
| | | | Unused private field _mux_state.
* debug_dboard: Fix compiler warningMartin Braun2021-06-221-1/+1
| | | | Superfluous 'this' capture.
* zbx: Fix clang compiler warningsMartin Braun2021-06-226-44/+19
| | | | | | | | - 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
* zbx: Fix compilation on clang-10Martin Braun2021-06-223-8/+5
| | | | | | The ostream<< overloads where in the wrong namespace to be found by the expert framework. Other compilers are more forgiving; not so clang 10. This enables compilation on that compiler.
* x3xx: Improve image loaderMartin Braun2021-06-221-27/+44
| | | | | | | - When specifying a file path, no longer infer the FPGA type for the logging from the image that is currently loaded. - Use sanitize product names for ni-2974 everywhere were appropriate - Remove some usages of boost::format that weren't doing anything useful
* usrp2: Use explicit template type for std::min<T>StefanBruens2021-06-221-1/+1
| | | | Signed-off-by: Aaron Rossetto <aaron.rossetto@ni.com>
* usrp2: Replace boost::math::iround/math::sign with std::lroundStefanBruens2021-06-221-5/+5
| | | | | | | | | Instead of multiplying zone with the sign repeatedly just make the zone a signed value. See #437, #438 Signed-off-by: Aaron Rossetto <aaron.rossetto@ni.com>
* usrp2: Apply minor cleanups to Boost usage in usrp2Martin Braun2021-06-181-9/+8
| | | | | | | - Inconsistent usage of asio:: or boost::asio:: (now uses the latter consistently) - Removed some usage of boost::format() where it really didn't add any value
* uhd: Add missing channel parameter when reading power ref keysLars Amsel2021-06-181-2/+2
|
* uhd: Add callback for setting sync_sourcesGrant Meyerhoff2021-06-173-0/+35
|
* usrp2: Fix Boost headersMartin Braun2021-06-171-2/+2
| | | | | | | | | On Boost 1.76, this would otherwise fail with an error: [...] .../usrp2_impl.cpp:920:37: error: ‘boost::math’ has not been declared 920 | const int sign = boost::math::sign(new_freq); [...]
* uhd: x400: Honor ENABLE_X400 component flagAaron Rossetto2021-06-151-9/+14
| | | | Don't add X400-related sources to libuhd if they are not requested.
* uhd: Add support for the USRP X410Lars Amsel2021-06-1056-18/+12966
| | | | | | | | | | | | | | | | 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>
* multi_usrp: Factor out make_overall_tune_range() and fix limitsMartin Braun2021-06-093-42/+39
| | | | | | | | | This function had an issue where it might return negative frequency values. A quick fix was to limit it to positive frequencies. Since this function was duplicated between multi_usrp and multi_usrp_rfnoc, this patch also moves it to a common location to not have to fix it twice.
* mpmd: support four linksAndrew Lynch2021-06-082-0/+10
|
* dboard_iface: Fix sleep()michael-west2021-06-031-1/+1
| | | | | | Sleep was incorrectly in nanosecond counts instead of microsecond counts. Signed-off-by: michael-west <michael.west@ettus.com>
* rfnoc: Fix post action behavior of nodesLars Amsel2021-06-031-0/+4
| | | | | | | | | | | When a node has an action callback assigned this must be cleared along with the block removal. Otherwise a post action callback might try to modify node that are already removed which results in an undefined behavior. In particular this one fixes the Unexpected error [ERROR] [CTRLEP] Caught exception during async message handling: map::at when running the multi_usrp_test.py
* rfnoc: Fix MTU prop resolver refactoringAaron Rossetto2021-06-011-8/+70
| | | | | | | | | | | | | | | | | | | | | | | | In 073574e24, the MTU property resolver in `noc_block_base` was refactored to make the resolver's output sensitivity list less broad. The broadness was intentional as a consequence of allowing the MTU forwarding policy to be changed at will, but had the unintended side effect of being incompatible with certain RFNoC graph use cases. The refactoring solved the issues, but added a new restriction that the MTU forwarding policy could only be called once per instance of a NoC block. Unfortunately, that refactoring introduced a bug. By moving the registration of MTU resolvers to `set_mtu_forwarding_policy()`, no resolvers would be added if the MTU forwarding policy was never changed from the default of `DROP` (which is the case for the vast majority of NoC blocks). However, the resolver had code that would run in the `DROP` case to coerce the incoming MTU edge property to be the smaller of the new value or the existing MTU value on that edge. With the resolvers only getting added when the MTU forwarding policy is changed, this coercion behavior would never execute, thus breaking a number of devtests. This commit ensures that the default coercion behavior is always present regardless of whether the MTU forwarding policy is changed or not.
* ic_reg_maps: Remove SPCC core reg mapLars Amsel2021-05-271-116/+0
| | | | These registers aren't used anywhere in UHD.
* multi_usrp, x300: Relax LO set API strictnessAaron Rossetto2021-05-192-12/+24
| | | | | | | | | | | This PR relaxes the set_{rx|tx}_lo_{source|sources|export_enabled}() functions to allow them to be called with 'internal'/ALL_LOS or false/ALL_LOS on devices which do not support changing their LO source or exporting. This makes the get and set functions for those LOs settings more symmetrical in that the values returned from the get function can be successfully passed to the set function. Prior to this change, calling the set functions would throw an error indicating that the device does not support manual configuration of the LO.
* rfnoc: noc_block_base: Throw if set_mtu_forwarding_policy() called multiplyAaron Rossetto2021-05-181-0/+9
|
* rfnoc: noc_block_base: Refactor MTU prop resolverAaron Rossetto2021-05-181-46/+58
| | | | | | | | | | | | | | | | | | | | | | Prior to this commit, the MTU property resolver in noc_block_base had an issue: for every MTU edge property (both input and output on each port) on the block, the property resolver listed every other MTU edge property in its output sensitivity list, regardless of whether or not the output edge properties would ever be affected by the current MTU forwarding policy. This breaks an inherent (and up until now, unwritten) contract between a property resolver and UHD that only properties that can be affected by the resolver should be included in the output sensitivity list. The result of breaking the contract leads to errors being thrown when committing an RFNoC graph in certain multi-channel use cases. This commit refactors the MTU property resolver to use the MTU forwarding policy to determine the correct set of edge properties to include in the output sensitivity list. The change also introduces a new restriction--the MTU forwarding policy may only be set once per instance of a noc_block_base. Typically, a subclass implementing an RFNoC block will call `set_mtu_forwarding_policy()` in its constructor to set a custom MTU forwarding policy (if desired) and leave it untouched for the lifetime of the block.
* RFNoc: Fix graph connect timeout errorMichael West2021-05-101-2/+3
| | | | | | | | | A loop in mgmt_portal::_validate_stream_setup() was missing a sleep, which was causing it to return long before the timeout with a timeout error. This change adds that sleep and reduces the duration of the sleep so it responds faster. Signed-off-by: Michael West <michael.west@ettus.com>
* n320: Add correction APIs to radio_control objectMartin Braun2021-05-062-0/+63
| | | | | | | | | | The N320, like the X310, has some frontend corrections (IQ balance, DC offset) which can be controlled from software. The property tree entries exist for these, but the radio_control APIs do not (which also disables the multi_usrp APIs). This makes it harder to disable DC offset or IQ balance corrections from software, and disables our calibration utilities.
* multi_usrp_rfnoc: Fix get_device()->get_tree()michael-west2021-05-051-6/+3
| | | | | | | | | | | | | | | Property tree access via the device tree was resulting in a segmentation fault because the device::_tree member was not properly initialized for the redirector_device class. The redirector_device also had a get_tree() method that was not actually called because the get_tree() method in the parent class was not declared virtual and all calls to get_tree() were done on the parent class (i.e. get_device()->get_tree(). - Added initializer for device::_tree member in redirector_device class constructor - Removed redirector_device::get_tree() method Signed-off-by: michael-west <michael.west@ettus.com>
* experts: Change coercion policy for regular prop nodesMartin Braun2021-05-041-2/+12
| | | | | | | | | | | | | | | | 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).
* lib: Fix misssing include in e3xx_radio_control_implMartin Braun2021-05-041-0/+3
| | | | Adds a missing <thread>, <algorithm>, and <chrono>.
* dboard: magnesium: Update Rx IF Frequency Valuemattprost2021-04-301-1/+1
| | | | | | | Add extra precision to if frequency in the low band rx path in order to avoid hitting the edges of a filter. Signed-off-by: mattprost <matt.prost@ni.com>
* Revert "N310: Low band IF adjustments"mattprost2021-04-301-17/+21
| | | | | | | | This reverts commit 969e426f2ef57f8d6fd3099870955ba2083abf9c. Revert "fixup! N310: Low band IF adjustments" This reverts commit 71137999430afaca18bfff179e6a3c4b0276d54c.
* rfnoc: Add option to disable flow control on rx streamingmattprost2021-04-299-60/+146
| | | | | | | | | | | Disabling this feature will allow the USRP to send a continuous stream of Rx data to a host machine without throttling due to lack of flow control credits. This is unnecessary overhead on lossless transports such as pcie or aurora. Usage: add 'enable_fc=false' to stream_args.args Signed-off-by: mattprost <matt.prost@ni.com>
* N320: Fix IQ mapping and frontend correctionsmichael-west2021-04-221-2/+4
| | | | | | | | Changed register offset from 4 bytes to 8 bytes. The registers in the frontend were not being properly addressed, so calibration, IQ mapping, and frontend corrections were not working properly. Signed-off-by: michael-west <michael.west@ettus.com>