aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/usrp
Commit message (Collapse)AuthorAgeFilesLines
* rfnoc: Add DMA FIFO block controllerMartin Braun2019-11-261-354/+250
|
* Remove proto-RFNoC filesMartin Braun2019-11-2625-4889/+165
| | | | | | | This commit removes all files and parts of files that are used by proto-RFNoC only. uhd: Fix include CMakeLists.txt, add missing files
* x300/mpmd: Port all RFNoC devices to the new RFNoC frameworkMartin Braun2019-11-2685-8146/+11054
| | | | | | | 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-266-392/+2406
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* rfnoc: Add mb_controller base class and X300/MPMD implementationsMartin Braun2019-11-266-0/+228
|
* gpio_atr_3000: Formatting changesBrent Stapleton2019-11-261-142/+196
| | | | | | | | 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-33/+45
| | | | | | 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-9/+10
| | | | | | 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-18/+29
| | | | | | | | 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-49/+80
| | | | | Removes the requirement for a wb_iface, and also the requirement for regs to be 4 addresses apart.
* rfnoc: Add default block controllerMartin Braun2019-11-261-1/+1
| | | | | The default block controller should get instantiated when no other suitable block controller can be found.
* twinrx: Make gpio_iface a wb_iface (was: timed_wb_iface)Martin Braun2019-11-261-11/+2
| | | | | This completely eliminates the need for cmd_time_ctrl in the TwinRX codebase, reducing the number of dependencies on the X300 codebase.
* lib: utils: Add new signature to get_freq_and_freq_word()Martin Braun2019-11-261-0/+8
| | | | | The new signature uses tuple as the return value, instead of passing in output variables as references (C-style).
* utils: soft_register: Remove 16-bit modeMartin Braun2019-11-261-14/+0
| | | | | This mode is never used, and makes it more cumbersome to maintain this code.
* uhd: Remove deprecated objects and methodsMartin Braun2019-11-265-28/+0
| | | | | | | | | This removes the following symbols: - otw_type_t - clock_config_t - Any functions that use those symbols - Non-standard args from examples (e.g., --total-time is deprecated in favour of --duration)
* uhd: Remove support for N230Martin Braun2019-11-2629-4660/+2
| | | | Note: N230 is still supported on the 3.15 LTS branch
* x3x0: DPDK initialization fixmattprost2019-11-251-1/+1
| | | | | Pass original args into the x300_get_udp_factory() function. This exposes the fact that this is a DPDK connection.
* rfx: Fix calculation of prescaler and band selectMartin Braun2019-11-221-15/+22
| | | | | | | | | | | | | | The code was broken when converting from BOOST_FOREACH to a range-based for loop. Without this fix, the board initialization would crash with an error like this: [ERROR] [DBMGR] The daughterboard manager encountered a recoverable error in init. Loading the "unknown" daughterboard implementations to continue. The daughterboard cannot operate until this error is resolved. LookupError: KeyError: key "0" not found in dict(i, N14adf4360_regs_t17prescaler_value_tE)
* e31x: Remove spurious debug logsMartin Braun2019-11-211-7/+5
| | | | | This demotes INFO logs to TRACE that relate to the switch settings during tuning.
* python: Make multi_usrp::get_*_usrp_info() return a Python dictMartin Braun2019-11-041-2/+12
| | | | | | | | | | | By using the conversion ability to std::map<>, we can make the Python versions of get_?x_usrp_info() return a dict in Python. Sample Python session: >>> import uhd >>> U = uhd.usrp.MultiUsrp(args) >>> U.get_usrp_rx_info() {'mboard_id': 'B200', 'rx_subdev_name': 'FE-RX2', ...}
* rpc: improve exception handling for reachability checksMark Meserve2019-10-151-2/+3
| | | | | - Handle exception created during RPC client creation - Corrected a catch block for UHD exceptions
* rh: Add missing includes in rhodium_cpld_ctrl.hppMartin Braun2019-10-111-2/+4
|
* fixup! x300: Introduce conn_managerMartin Braun2019-10-111-1/+1
|
* n320: updated rhodium dboard mcr initializationnitest2019-10-101-1/+2
| | | | | db0 is used as the master for driving the radio path and must be the dboard used to set the master clock rate.
* x3xx: update maximum bitfile sizeMark Meserve2019-10-041-1/+1
|
* python: fix set_command_time default mboarderickshepherdNI2019-10-041-1/+1
| | | | | Fixup for the Python API's default mboard value in multi_usrp::set_command_time.
* Device3: Restore default buffer sizes for MPMD UDPMichael West2019-09-131-0/+2
| | | | | | | | | The latest change to fix MTU and default frame sizes inadvertantly removed the default send and recv buffer sizes in the MPMD UDP transport, which caused receive timeouts and underruns at higher sample rates. This change restores those values. Signed-off-by: Michael West <michael.west@ettus.com>
* x300: cdecode: Fix fallthrough warningMartin Braun2019-09-101-0/+9
|
* rx_fe_3000: formatting for upcoming changesBrent Stapleton2019-08-251-84/+102
|
* dboard_eeprom: Remove trace logs for EEPROM readoutMartin Braun2019-08-251-8/+0
|
* fixup! uhd: Changed mboard_eeprom_t interface, refactored MB EEPROM codeSugandha Gupta2019-08-251-0/+1
|
* mg: Allow for timeout on retuneMartin Braun2019-08-223-1/+19
| | | | set_freq() calls now have a 15 seconds timeout.
* x300: fix x300 GPIO ATR property tree access typeeklai2019-08-221-6/+49
| | | | | | | | | | | | | | In x300_radio_ctrl_impl.cpp, the GPIO attributes GPIO_SRC, GPIO_CTRL, and GPIO_DDR are initialized as with vector<string> values in the property tree. However, they are accessed in set_gpio_attr() and get_gpio_attr() as vector<uint32_t>, which will crash. This commit changes these access methods to be consistent with the attribute value types. This is not an issue for those who use the multi-usrp interface, since that interface's set_gpio_attr() and get_gpio_attr() methods are implemented with the correct typing for GPIO_SRC, GPIO_CTRL, and GPIO_DDR.
* multi_usrp: Fix typo in get_user_settings_iface()Brent Stapleton2019-08-191-1/+1
|
* x300: Introduce conn_managerMartin Braun2019-08-165-31/+64
| | | | | | | This is a superclass to eth_manager and pcie_manager, since they usually do the same thing. This saves storing and passing multiple pointers. Also, x300_impl now stores a shared_ptr of the conn_manager, because we'll need to pass it around in the future.
* uhd: Add UHD_FALLTHROUGH attributeMartin Braun2019-08-161-0/+1
| | | | | | | | | | | | | | | | | This provides a platform-independent attribute to allow fallthroughs in switch statements. Example: switch (foo) { case BAR: do_something(); UHD_FALLTHROUGH case BAZ: do_another_thing(); } The usage of UHD_FALLTHROUGH will avoid a compiler warning if indeed the fallthrough was intentional. The associated warning (-Wimplicit-fallthrough) is only available on gcc and Clang.
* mpmd: Fix corner case in MPM device reachabilitySugandha Gupta2019-08-071-1/+1
| | | | | | | | | To check if a device is fully reachable through the chdr address i.e. SFP port, an RPC request is sent to "second_addr" and "addr" of that device. This commit fixes the case where if "second_addr" is not connected to the host, the function returns earlier and does not check for "addr".
* x300: Refactor heavilyMartin Braun2019-08-0215-1352/+1607
| | | | | | | | | This pulls out a lot of code from x300_impl and puts it into its own compilation units: - EEPROM code goes to x300_mb_eeprom.* - Claim code goes to x300_claim.* - PCIe code goes to uhd::usrp::x300::pcie_manager - Ethernet code goes to uhd::usrp::x300::eth_manager
* x300: Factor out mb-type specific codeMartin Braun2019-08-025-165/+220
| | | | | This puts all functions that identify motherboards, distinguishes X310/X300/NI2974, checks MB revs etc. into its own compilation unit.
* Remove GPSd dependencyMartin Braun2019-07-243-346/+0
| | | | | GPSd was used by the E310 prior to its MPM-ification, GPSd is therefore no longer required by UHD.
* n310: add capability to control RF filter bypass and freq.band limitsThomas Vogel2019-07-246-39/+133
| | | | | | | | | | | | | | | | | | With the keywords "rx_gain_profile", "tx_gain_profile" and the new values "default_bypass_always_off" and "default_bypass_always_on" the customer can control whether the filter bypass shall be applied as defined in the gain-table or whether to switch the bypass to ON or OFF for all gains. With the keywords "rx_band_map" and "tx_band_map" the user can define custom frequency borders for the band mapping. These new keywords can be used in the uhd.con, e.g.: [type=n3xx] rx_gain_profile=default_bypass_always_off tx_gain_profile=default_bypass_always_on rx_band_map=431e6;601e6;1051e6;1601e6;2101e6;2701e6 tx_band_map=723.18e6;1623.18e6;3323.18e6
* gpsd: Fix gpsdata API: .separation -> .fix.geoid_sepMichael Dickens2019-07-231-0/+8
| | | | See: https://gitlab.com/gpsd/gpsd/commit/c711d531a6faab93df68ec625a076631569a729d
* ad9361: Improve loggingMartin Braun2019-07-181-10/+15
| | | | | - Remove some spurious \n - Remove some usage of boost::format
* Device3: Fix MTU and default frame sizesMichael West2019-07-185-158/+272
| | | | | | | | | | The latest changes to the get_*x_stream() functions to calculate the MTU for the channel caused default frame size values to be ignored. This change fixes that by changing the key from "send/recv_frame_size" to "mtu" and then changing the implementations of make_transport() constrain the frame size values based on the "mtu" value as well as any device and/or transport-specific limits. Signed-off-by: Michael West <michael.west@ettus.com>
* sbx: Only update ATRs when lock state changesMartin Braun2019-07-171-5/+7
| | | | | | | The SBX tracks the LO lock state via on-board LEDs. However, querying the LO lock status spawns an update to the entire ATR registers. To reduce the number of register reads/writes, the LO lock status LED is now only updated if it changed.
* rfnoc: Add update_graph() API callMartin Braun2019-07-151-0/+4
| | | | | | Blocks that change scaling, tick rate, or sampling rate can now notify the graph to update streamers. Before, this was handled only by mult_usrp, and only for DDC and DUC blocks.
* device3: Remove unused 'rate' argument from update_?x_streamers()Martin Braun2019-07-153-9/+12
|
* device3: rfnoc: formatting changesBrent Stapleton2019-07-152-44/+47
| | | | | | | | | | | | | Applying clang-format to files used in upcoming changes. clang-format -i --style=file host/include/uhd/rfnoc/node_ctrl_base.hpp clang-format -i --style=file host/lib/rfnoc/ddc_block_ctrl_impl.cpp \ host/lib/rfnoc/duc_block_ctrl_impl.cpp \ host/lib/rfnoc/legacy_compat.cpp \ host/lib/usrp/device3/device3_impl.cpp \ host/lib/usrp/device3/device3_impl.hpp \ host/lib/usrp/device3/device3_io_impl.cpp \ host/lib/usrp/x300/x300_impl.cpp
* x300: dac: Replace uhd::get_system_time() with steady_clockMartin Braun2019-06-121-5/+4
|
* ubx: add temperature compensation modeMark Meserve2019-06-121-0/+41
| | | | | | | - This mode defaults to "disabled" (no change from current behavior) - Enabling this mode fixes some instances where the MAX287x would fail to lock when in integer-n mode - Enabling this mode increases the maximum lock time to up to 100ms