aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python/usrp_mpm/periph_manager
Commit message (Collapse)AuthorAgeFilesLines
* sim: Move Hardware Specific to Config FileSamuel O'Brien2020-10-281-22/+25
| | | | | | | | This commit moves various magic numbers and hardware specific settings into the configuration file. It also provides default presets for said configuration files which can be inherited from. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Support Configuration FilesSamuel O'Brien2020-10-281-1/+10
| | | | | | | | This commit adds support for configuration files to the simulator. As of now, these files only change the source and sink of data samples, but they are easily extensible to add more configuration to the simulator. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Support StreamingSamuel O'Brien2020-10-281-2/+1
| | | | | | This commit add support for both Tx and Rx streams to the simulator. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Clarify Naming of StreamsSamuel O'Brien2020-10-081-2/+2
| | | | | | | | | ChdrSniffer is renamed to ChdrEndpoint to clarify its function as the actual destination of chdr packets, rather than just an observer. TxWorker has been renamed to OutputStream and RxWorker has been renamed to InputStream to avoid ambiguities regarding Tx and Rx terminology. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Simulator CHDR Parsing and RFNoC GraphSamuel O'Brien2020-10-081-5/+8
| | | | | | | | | This commit adds a simulated RFNoC Graph to the simulator. It is also able to process management and control packets which can traverse the graph and read from simulated registers. Stub callbacks for creating streams have been provided but are not implemented yet. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Add Daughterboard MethodsSamuel O'Brien2020-10-071-7/+10
| | | | | | | | This commit adds daughterboard simulation to the simulator. There is a sim_dboard class which registers it's methods with the rpc server. These methods are visible over mpm as well as the mpm_shell. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Lay Groundwork for SimulatorSamuel O'Brien2020-10-072-0/+303
| | | | | | | | | | | | | | | At this point, only about half of the mpm methods work on the simulator over the mpm shell, and it hasn't been tested with uhd at all. If you want to give it a try, first install all of the python dependencies of mpm (The simulator doesn't require libusrp or any of the C++ deps). In addition, running mpm on a desktop machine requires the python lib netifaces. Next, make an /mpm/build directory and open it. Run `cmake .. -DMPM_DEVICE=sim`, then `make`. Finally, run `python3 python/usrp_hwd.py`. You should be able to open another terminal and run `mpm/tools/mpm_shell.py localhost` to connect to the mpm server. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* mpm: use filesystem_status from sys_utilsJoerg Hofrichter2020-10-061-13/+4
| | | | | | Use the utility functions for getting the filesystem version string and for getting the Mender artifact which are now available in usrp_mpm.sys_utils.
* mpm: n3xx: Remove eth1, eth2 from interface listMartin Braun2020-08-071-8/+0
| | | | | | | | | These interfaces are renamed to sfp0 and sfp1 and thus don't exist. They were kept in MPM for a while after the rename, but that was many versions of UHD ago, and the current filesystem (which does the rename) is not compatible with older versions of UHD anyway (and vice versa). These aliases are thus dead code and can be removed.
* mpm: Remove SID classMartin Braun2020-08-073-3/+0
| | | | | | This class is a remnant of UHD 3, and is no longer used anywhere. SID is no longer used at all in UHD, in fact, which means the class did not represent a valid data structure.
* mpm: Default virtual NIC CHDR IP selectionSteven Koo2020-07-303-3/+15
| | | | | This change adds detection for setting the correct internal fpga CHDR IP address when using embedded mode.
* fpga, mpm: Bump FPGA compat numberRobertWalstab2020-07-243-3/+3
|
* uhd: remove liberioRobertWalstab2020-07-202-9/+1
|
* mpm: remove class N3xxXportMgrLiberioRobertWalstab2020-07-161-15/+4
|
* mpm: Fix a logging messageRobertWalstab2020-07-161-1/+1
|
* mpm: Enable internal NIC on the N3xxRobertWalstab2020-07-161-3/+12
|
* mpm: remove class E310XportMgrLiberioRobertWalstab2020-07-161-11/+4
|
* mpm: Enable internal NIC on the E310RobertWalstab2020-07-161-6/+28
|
* mpm: remove class E320XportMgrLiberioRobertWalstab2020-07-161-12/+5
|
* mpm: support forwarding CHDR packetsRobertWalstab2020-07-161-0/+4
|
* mpm: Enable internal NIC on the E320Alex Williams2020-07-161-0/+4
| | | | Add an entry for the internal NIC to E320.
* mpm: Add support for internal Ethernet interfaceAndrew Lynch2020-07-162-0/+6
|
* mpm: Detect number of liberio channelsAlex Williams2020-07-161-4/+5
| | | | | Instead of using hard-coded values, detect the number of liberio channels, and only offer liberio links if they exist.
* mpm: Fix various Pylint issuesMartin Braun2020-07-092-6/+2
| | | | | | | | 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-111-1/+1
| | | | | | | | | | 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.
* 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.
* 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-234-78/+145
| | | | This enables the *gpio_src* APIs for the E320 and the E31x.
* mpm/mpmd: Expose APIs to drive GPIO sourcesMartin Braun2020-01-233-30/+110
| | | | | | | | | | | | | | | | | | | 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: 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-261-0/+39
| | | | The GPS sensors are pulled in via gpsd_iface.
* e310: Fix issues in MPM and UHDMartin Braun2019-11-262-149/+106
| | | | | | | | | | | - 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-263-68/+84
| | | | | | | | | | | | | | | | 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
* 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.
* x300/mpmd: Port all RFNoC devices to the new RFNoC frameworkMartin Braun2019-11-267-398/+804
| | | | | | | 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: 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
|
* 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-243-14/+9
| | | | | | | | 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.
* 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
* 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