aboutsummaryrefslogtreecommitdiffstats
path: root/mpm
Commit message (Collapse)AuthorAgeFilesLines
* mpm: e310: Enable GPS sensorsMartin Braun2019-11-262-5/+70
| | | | The GPS sensors are pulled in via gpsd_iface.
* e310: Fix issues in MPM and UHDMartin Braun2019-11-265-175/+159
| | | | | | | | | | | - Remove superfluous INFO logging - Improve formatting in many places - Improve Pylint score in various places - Add tear_down to DB object - Simplify custom EEPROM code for E310 - Fix time source selection code - Remove references to GPS_CTRL and GPS_STATUS (are E320 only) - Move clock source control out of MboardRegs object
* mpm: Clean up code, improve Pylint scoreMartin Braun2019-11-265-101/+115
| | | | | | | | | | | | | | | | Many small cleanups: - Fix copyright headers - Fix superfluous imports - Pull some constants out of classes where appropriate - Fix formatting - Improve/fix some docstrings - Disable specific Pylint warnings where appropriate - Global catches use BaseException instead of Exception - Don't use len() for empty checks - Make sure to declare all self attributes in __init__ (note: this is particularly of interest for E310, becuase its regular init happens outside of __init__) - Compacted some E310 code that had multi-DB checks
* mpm/mpmd: Remove token requirement for device infoMartin Braun2019-11-261-1/+2
| | | | | This removes the token requirement for get_proto_ver() and get_chdr_width().
* mpm: Move common mboard regs code to common locationMartin Braun2019-11-269-736/+272
| | | | | | | | | | | | | This assumes an existence of mboard_regs_control in PeriphManagerBase and implements most TK controls there. All the *_periphs.py files can now use a common class for registers, including the TK access, but also git hash, build date, and device ID access. This also fixes two issues: - set_timekeeper_time() and set_tick_period() had a bug that would incorrectly calculate the upper 32 bits of their respective registers. - N3xx had a bug that would swap around set time now and next PPS. This got auto-fixed because the common code never had this bug.
* mpm: n3xx: Improve Pylint scoreMartin Braun2019-11-262-16/+19
| | | | | | | - Replace some `if len(seq)` with `if seq` - Replace some `lambda: f()` with `f` - Formatting - Add some pylint: disable where appropriate
* mpm: Fix calculation of link_rate for UDP xportsAaron Rossetto2019-11-261-1/+1
|
* uhd: Replace usage of boost smart pointers with C++11 counterpartsMartin Braun2019-11-262-15/+8
| | | | | | | | | | | | | | | | | | | 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: Unify endianness of transportsAlex Williams2019-11-263-3/+3
| | | | | Ethernet now uses the same serialization of the RFNoC stream as all the other transports.
* Remove proto-RFNoC filesMartin Braun2019-11-267-120/+0
| | | | | | | 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-2615-830/+957
| | | | | | | 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>
* mpm: i2cdev: Use O_LARGEFILE to open i2c devicesMartin Braun2019-11-221-1/+2
|
* mpm: i2cdev: Fix formatting and compiler warningsMartin Braun2019-11-221-11/+12
| | | | | | | | - Remove superfluous includes - Fix return value of _open() (was int, now void) => Fewer compiler warnings - Apply clang-format - Add {} to all ifs
* mpm: gpsd_iface: Sanitize return values for get_gps_info()Martin Braun2019-11-211-8/+21
| | | | | get_gps_info() can time out, or fail for other reasons. This adds some checks to see if the return value is as expected.
* mpm: rpc_server: Reenable timeouts after components have been updatedMartin Braun2019-10-281-0/+3
| | | | | | | | | | | | When updating a component like the FPGA, the timeouts for reclaiming get disabled, because the update can potentially take a long time, during which the RPC server might not be available. There was a bug that didn't re-enable the timeouts. The most common case where this causes issues was when the Ethernet connection was severed during FPGA reloading, which could lead to UHD losing connection with MPM altogether (for example because SFPs would come up with a different IP address). In that case, MPM would remain unreachable until the next reboot.
* MPM: Fix version string for loggermichael-west2019-10-151-1/+8
| | | | | | | | Added configuration of version.cpp file so @UHD_VERSION@ would be properly replaced by the version string and @UHD_COMPONENT@ would be properly replaced by the component string. Signed-off-by: michael-west <michael.west@ettus.com>
* cmake: Add UHD_COMPONENT variablemichael-west2019-10-151-0/+1
| | | | | | | | Added cmake variable to set the component (currently UHD or MPM). so the banner printed by the log_resource would reference the correct component. Added accessor function and appropriate calls in log.cpp. Signed-off-by: michael-west <michael.west@ettus.com>
* MPM: Add check for valid EEPROM addressmichael-west2019-10-151-0/+3
| | | | | | | | Provides a more useful error message if the EEPROM cannot be found at the specified address. Without this change a generic index out of range error is raised. Signed-off-by: michael-west <michael.west@ettus.com>
* N3xx: Remove close-in noise on TXMichael West2019-10-111-2/+3
| | | | | | | | | | | Some close-in noise was observed on TX when using external references. This change reduces the noise by changing U19 to select the GPSDO when references are set to external. Also included is a change to properly read and apply settings from the configuration file. This allows the user to further quiet the transmission by adding 'enable_gps=False' to the configuration file in order to power off the GPSDO. Signed-off-by: Michael West <michael.west@ettus.com>
* n3xx: Disable gpsdo reference source when enable_gps=0Martin Braun2019-10-111-12/+18
| | | | | | | | | | | | | | | When using enable_gps=0, the power to the LTE-Lite GPS chip is turned off, and neither the reference sources (time/clock) nor the location/time data (via gpsd) can be used. This commit disables the gpsdo options for the set_time_source, set_clock_source, and set_sync_source when enable_gps=0 is used, and adds logging to inform the user about this. This behaviour is consistent with X310, where `gpsdo` is only a valid reference if the GPSDO module is plugged in. The manual was also updated accordingly.
* mpm: periph manager: Fix typo in docstring (update default args)Martin Braun2019-10-111-2/+3
|
* ad937x: increase default dc offset averaging windowMark Meserve2019-10-101-0/+19
| | | | | | - Fixes an issue where RX with close in signals (<5 kHz) had large discontinuities in IQ data - For <1 kHz, an LO offset should be used
* mpm: usrp_hwd: fix for gevent 1.4.0Joerg Hofrichter2019-10-081-2/+4
| | | | | | | | | | | Openembedded release warrior includes python3-gevent 1.4.0 which leads to the following error when starting usrp-hwd.py: ImportError: cannot import name 'BlockingSwitchOutError' from 'gevent.hub' This commit fixes the issue. Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
* MPM: Increase E320 max rev to 4michael-west2019-09-241-1/+1
| | | | | | Increase to currently shipping rev. Signed-off-by: michael-west <michael.west@ettus.com>
* mpm: fixed mboard_max_revision valueMatthew Crymble2019-09-244-15/+10
| | | | | | | | This value should be 9 to correspond with the rev J motherboards. This property was renamed to mboard_last_rev_compat in a previous commit. But mboard_max_rev is actually a more accurate description, since it specifies the latest hardware revision that the software is aware of. I renamed all references back to mboard_max_rev.
* n3xx: mg: Make set_freq() call asynchronousMartin Braun2019-08-222-0/+39
| | | | | | | This does not change the MPM/UHD API, but it makes the set_freq() call asynchronous on the MPM side. The upside is that it will release the GIL if the set_freq() call takes too long, e.g., because of MPM calibrations.
* mpm: mg: Only import AD9371 API calls if not yet on MagnesiumMartin Braun2019-08-221-2/+3
| | | | | This will avoid importing API calls from the self.mykonos object onto the Magnesium class if the Magnesium class already has such a method.
* e320: fix time source clobbering ref sourceMark Meserve2019-08-151-2/+6
| | | | | | | - Fixes a case where the e320 would be unable to lock to an external 10 MHz reference - Previously, calling set_time_source would set the reference clock source to internal as a side effect
* mpm: net: Fix typo in docstringMartin Braun2019-07-201-1/+1
|
* mpm: cmake: removing unnecessary destination prefixPatrick Sisterhen2019-07-171-1/+1
| | | | | Removing unnecessary CMAKE_INSTALL_PREFIX to destination for usrp mpm python dir
* n3xx: bugfix for mpm set_db_eeprom access via networkThomas Vogel2019-06-131-4/+7
| | | | access or data as bytes instead of str was not possible due to unconditional assert check for str
* mpm: Change SW/HW compat check to use last_rev_compatTrung Tran2019-05-104-18/+33
| | | | | | | Newer revisions of the E320 and N3xx motherboards use EEPROM version 3, and store a rev_compat field. The rev_compat is the last revision that this hardware is compatible with. We now use that instead of simply the revision.
* mpm: Add MB-EEPROMv3Martin Braun2019-05-104-13/+52
| | | | | | | | | | This includes a rev_compat field, which we can use to identify the last hardware revision this hardware is compatible with. Example: Say the current hardware revision is 7, but it is compatible with version 5, then we store 7 as the current rev, and 5 as the rev_compat. Software can now check the rev_compat rather than the current rev for compatibility. This makes MPM more future-proof against minor, compatible hardware changes.
* E320: Add support for rev Emichael-west2019-05-021-1/+1
| | | | | | - No driver changes required Signed-off-by: michael-west <michael.west@ettus.com>
* e310/e320: Move E310 to MPM architecture and refactorSugandha Gupta2019-05-0124-16/+1668
| | | | | | | | | | | | - Turns the E310 into an MPM device (like N3xx, E320) - Factor out common code between E320 and E310, maximize sharing between the two devices - Remove all pre-MPM E310 code that is no longer needed - Modify MPM to remove all existing overlays before applying new ones (this is necessary to enable idle image mode for E310) Co-authored-by: Virendra Kakade <virendra.kakade@ni.com> Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* mpm: Add option for muxed data stream for liberio transportSugandha Gupta2019-05-011-3/+9
| | | | | | If the number of channels for embedded mode streaming is 4 (1 for ctrl, 1 for async messages and 2 for data ), we need to mux the data transport. This is needed for E310
* mpm: sys_utils: Remove hardcoded 'subsystem' for temp sensorSugandha Gupta2019-05-011-8/+24
| | | | | This is needed for E31x with thermal sensors on different subsystems e.g. iio, hwmon.
* mpm: Generalize unittest Test Case functionalityToni Jones2019-04-112-33/+50
| | | | | | Pull some general functionality out of a specific test case and create a TestBase class. Future test cases will inherit from TestBase and have access to this general functionality.
* mpm: python: Move from Boost.Python to PyBind11Martin Braun2019-04-0215-268/+126
|
* cmake: Add unit testing framework to MPMToni Jones2019-03-265-0/+244
| | | | | | | Add unit testing framework to MPM which can be run by calling "make test". The testing is done using the built in unittest Python module. Tests can be run on a dev machine or on the USRP itself when compiling natively.
* mpm: python: Clean out cruftMartin Braun2019-03-213-64/+0
| | | | Remove some unused files.
* mpm: cmake: Clean out top-level CMake fileMartin Braun2019-03-211-43/+30
| | | | | This file contained a whole lot of copy pasta from during its inception. Removed all the special cases for Windows, MinGW, and RedHat.
* uhd: mpm: update all license header w/ "-or-later"Brent Stapleton2019-03-0822-22/+22
| | | | Updating all SPDX license identifiers to include "-or-later"
* mpm: rpc_server: Improve error message on double-claimMartin Braun2019-02-221-2/+5
| | | | | The error message will now include the IP address of the client trying to double-claim a device.
* mpm: rhodium: Fix clock value log formattingMartin Braun2019-02-221-2/+3
| | | | | Before, the log messages would occasionally print 6 digits worth of precision for sample clock values that only require 2.
* mpm: rhodium: Fix typo in log messageMartin Braun2019-02-221-1/+1
|
* mpm: n320: Update FPGA type if QSFP board is availableMartin Braun2019-02-221-1/+9
| | | | | | The N320 has FPGA types (XQ, AQ) which cannot be derived from the mboard regs in the same way as the non-QSFP variants. We therefore bite the bullet and hardcode those.
* mpm: n320: Demote warning on absence of QSFP boardMartin Braun2019-02-221-4/+5
| | | | | The QSFP board can't be detected if support for it is not baked into the current FPGA image, so the warning on its absence may be incorrect.
* mpm: bist: DDR3 test only enumerates first blockMartin Braun2019-02-201-1/+1
|
* mpm: n3xx: bist: Auto-load the AA image for the ddr3 BISTMartin Braun2019-02-201-0/+22
| | | | | | | | | | | | | | When running $ n3xx_bist ddr3 The test will now load the AA image if the BIST fails, unless the user specifies $ n3xx_bist ddr3 -o skip_load_fpga=1 The rationale is that by default, the AA image is the only one that includes the DmaFIFO block.