aboutsummaryrefslogtreecommitdiffstats
path: root/mpm
Commit message (Collapse)AuthorAgeFilesLines
* mpm: utils: print error on minor compat number mismatch conditionallyJoerg Hofrichter2020-07-131-1/+2
| | | | | | If the minor compat number does not match (older than expected), then generate an error message only if argument fail_on_old_minor is True; generate a warning otherwise.
* docs: Add comments on mpm.confMartin Braun2020-07-091-0/+1
| | | | | This adds some more details on mpm.conf, what it does, how it works, and which keys it accepts.
* mpm: Fix various Pylint issuesMartin Braun2020-07-095-13/+9
| | | | | | | | No functional changes. Fixes for things that PyLint complains about, but are safe to change anyway, as well as a minor improvement to a docstring that referenced non-existant args. This touches files that are mpm.conf-related.
* mpm: Look for pca953x based devices by device/nameSteven Koo2020-06-113-4/+4
| | | | | | | | | | The pca953x driver introduced a change for how the "label" property populates. Instead of using the device model, it gives a device specific name. As a replacement, use device/name. This affects the tca6424 and tca6408. For the kernel change that causes this see: https://github.com/torvalds/linux/commit/5128f8d4450159f59565d247437d3bedda3994cb
* mpm: Return filesystem info from get_device_infoLane Kolbly2020-06-051-0/+14
| | | | | This commit returns information on the filesystem and mender artifact versions to clients of the MPM RPC connection.
* mpm: Return dboard_info in get_device_infoLane Kolbly2020-06-051-0/+5
| | | | | | | | | Though this information is also returned via usrp_probe, it can be useful to provide this information to trackers which scrape the get_device_info RPC call. The dboard information is split up and cast to string just to simplify parsing on the receiving end.
* mpm: Return build info in mpm_sw_versionLane Kolbly2020-05-271-1/+1
| | | | | The mpm_version key was being overridden by the MPM_COMPAT field in rpc_server::get_device_info.
* mpm: systemd: added sysconf file for setting network buffer sizesJoerg Hofrichter2020-05-012-0/+10
| | | | | | | | | udp_zero_copy requires the network send buffer size (net.core.wmem_max) and the network receive buffer size (net.core.rmem_max) to be set to 2500000 bytes (UDP_DEFAULT_BUFF_SIZE in udp_common.hpp). Add a sysconf file (usrp-hwd.conf) to automatically set the recommended values.
* mpm: rpc_server: set correct default unpacker params for msgpack 0.6.1Joerg Hofrichter2020-03-051-2/+2
| | | | | | | | | | | | | | | | | | | | | | msgpack 0.6.1 suggests new default parameters which ensures compatibility with the upcoming msgpack 1.0 release which will have breaking changes. The parameter changes are described in https://github.com/msgpack/msgpack-python/blob/v0.6.1/README.rst The default parameters for msgpack 1.0 will be: - packer: use_bin_type=True - unpacker: raw=False The packer use_bin_type=True option is already set in the client (mpm_shell.py) but the unpacker option raw=False needs to be set in the server (rpc_server.py) This change allows the usage of a patched version of python3-mprpc 0.1.17 which removes passing the encoding option to the Packer and Unpacker Signed-off-by: Joerg Hofrichter <joerg.hofrichter@ni.com>
* mpm: explicitly set max buffer size for msgpack unpackerAndrew Lynch2020-03-051-0/+2
| | | | | | Msgpack version 0.6 reduced the default max buffer size to 1MB which is smaller than the bitfiles. This change sets the max buffer size to 50MB which is larger than the bitfiles.
* mpm: Make contextmanagers exception-safeLane Kolbly2020-03-034-5/+68
| | | | When making context managers in Python, the yield statement has to be wrapped in a try/finally clause in order to properly clean up after exceptions happen.
* mpm: rpc: Use contextmanager for claim timeoutsToni Jones2020-03-031-33/+38
| | | | | Modify the RPC claim timeout mechanism to use a contextmanager helper function when enabling/disabling timeouts.
* mpm: Apply clang-format against all .cpp and .hpp filesMartin Braun2020-03-038-83/+81
|
* e320/e310: Fix get_gpio_srcs() MPM API callMartin Braun2020-02-262-2/+2
| | | | | The Python code contained a typo which would cause a call to get_gpio_srcs() to throw an exception.
* mpm: cmake: added date_time as required boost componentJoerg Hofrichter2020-02-101-0/+1
| | | | | | | this fixes the error of a missing symbol _ZNK5boost9gregorian10greg_month15as_short_stringEv in /usr/lib/libusrp-periphs.so.4 when building with Boost 1.71
* mpm: catalina: Add thread.cpp from UHD to included filesMartin Braun2020-02-101-0/+13
| | | | | This avoids a linker error where set_thread_name and set_thread_priority cannot be found.
* MPM: add ability to run scripts to MPM shellLars Amsel2020-02-071-34/+83
| | | | | | | | | | | | | | | MPM shell now supports script execution. It utilizes the cmdqueue of Pythons cmd.Cmd class for this. The script to execute is a text file containing the commands one per line. The output decoration of MPM shell changed. Commands are decorated with ">" whereas responses use "<" at line start. Multiline responses are decorated in each line. Cleanup overwritten methods of cmd.Cmd to allow proper shutdow in interactive as well as in scripted mode. Improved pylint score.
* fixup! mpm: e320/e310: Expose APIs to drive GPIO source via UHDMartin Braun2020-01-283-2/+3
|
* mpm: e320/e310: Expose APIs to drive GPIO source via UHDMartin Braun2020-01-235-80/+147
| | | | This enables the *gpio_src* APIs for the E320 and the E31x.
* mpm/mpmd: Expose APIs to drive GPIO sourcesMartin Braun2020-01-235-37/+120
| | | | | | | | | | | | | | | | | | | 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.
* mpm: fixed cmake macro for enabling modulesJoerg Hofrichter2020-01-221-7/+12
| | | | | | | | | | | | | | | | | | | | | | | | | | The macro MPM_REGISTER_COMPONENT did not work as described: in case the default enable was set to ON and all dependencies were met, the module was still not enabled. Also made the status prints more helpful: - print the default value, - print the user override (if one was provided) - print the resulting VAR = VALUE - print the override hint only if the user did not already specify an override Example of old incorrect behavior: -- Configuring Mykonos support... -- Dependency ENABLE_LIBMPM = ON -- Disabling Mykonos support. -- Override with -DENABLE_MYKONOS=ON/OFF Example of new correct behavior (also with changed prints): -- Configuring Mykonos support... -- Default value ENABLE_MYKONOS = ON -- Dependency ENABLE_LIBMPM = ON -- Enabling Mykonos support (ENABLE_MYKONOS = ON) -- Override with -DENABLE_MYKONOS=ON/OFF
* mpm: cmake: adopt default enable values of modulesJoerg Hofrichter2020-01-221-4/+4
| | | | | | | | | | | | The cmake script (macro MPM_REGISTER_COMPONENT) has an issue that the default value is ignored which will be fixed in the following commit. As a result of this issue, the modules Mykonos, Magnesium, E320 and E300 never got enabled per default. It was always necessary to use an override like ENABLE_MYKONOS=ON. Therefore, change the default enable values so that a fix to MPM_REGISTER_COMPONENT does not change the current behavior.
* mpm: optionally generate XML report when running unittestsJoerg Hofrichter2020-01-221-7/+22
| | | | | If the unittests are invoked with an extra argument -x, an XML report is generated if the xmlrunner module is installed
* mpm: Add compile flag to fix missing definitionCiro Nishiguchi2020-01-161-0/+4
| | | | | In some environments _GNU_SOURCE must be defined to use O_LARGEFILE.
* mpm: include the failed mpm_shell commandbidavis2020-01-061-1/+1
| | | | This commit changes an mpm_shell error message to include the command that failed when the mpm_shell does not have the claim token.
* mpm: mg: Make set_master_clock_rate() an async callMartin Braun2019-11-262-2/+17
| | | | | | The ad9371 call set_master_clock_rate() can take a while depending on the rate change, so make it asynchronous in order not to lock out the reclaimer loop.
* mpm: e31x: Remove superfluous code from e31x_periphsMartin Braun2019-11-262-14/+2
| | | | | | | | | - ref_locked failure would throw a warning, even though this can happen in normal operations, and the return value of the get_ref_locked() function is all the info needed - get_fpga_type() doesn't need to be called from e31x_periphs, because it is not read from the motherboard registers (is read from the EEPROM)
* mpm: e31x: Fix setting of clock sourceMartin Braun2019-11-261-4/+1
| | | | | | | The clock source on E310 is always internal. This patch removes the variables regarding the clock source (since they are superfluous). This fixes a bug where self._clock_source on the e31x class would never get initialized.
* 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