aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python
Commit message (Collapse)AuthorAgeFilesLines
* mpm: Create Mock classes for unit testingToni Jones2021-02-181-0/+113
| | | | | Create Mock classes which mimic the behavior of a register interface and logger to facilitate unit testing needs.
* mpm: deduplicate dboard eeprom handlingMichael Auchter2021-02-112-39/+29
| | | | | | | | | | | | The _get_dboard_eeprom_info implementations are the same with the exception of how the dboard eeprom is actually read. Break that out into a _read_dboard_eeprom method to reduce code duplication. The base class now defines a lambda expression for the eeprom reader which can be changed in subclasses. Co-authored-by: Lars Amsel <lars.amsel@ni.com> Co-authored-by: Michael Auchter <michael.auchter@ni.com>
* mpm: added DBFlash classJoerg Hofrichter2021-02-111-0/+87
| | | | Class for accessing (mounting) the daughterboard flash
* mpm: added Mount classJoerg Hofrichter2021-02-111-0/+96
| | | | Class for creating a mount point
* mpm: filesystem_status: tolerate absence of menderMichael Auchter2021-02-092-6/+10
| | | | | | If the mender utility is not installed or exits with a failure, return NULL for the artifact rather than raising an exception (and disrupting device initialization).
* mpm: Implement get_sync_source and get_sync_sources.Lane Kolbly2021-01-252-0/+21
|
* sim: Ignore mender artifact file on sim devicesAaron Rossetto2021-01-212-2/+13
|
* mpmd: Add support to delay and trigger fpga/dts load after updateVirendra Kakade2021-01-111-2/+3
| | | | | | | | | Add a new image_loader argument delay_reload to provide a way to update components but optionally delay the actual load. Similarly add a new argument, just_reload, to enable uhd to reload the fpga/dts components. Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
* mpm: rpc server: Fix unclaim sequenceMartin Braun2020-12-211-8/+19
| | | | | | | | | | | | | | | | | | | Sequence is now: 1. Get _state lock 2. Kill reclaim timeout 3. Run deinit sequence 4. Clear claim token and session ID 5. Release _state lock Before, we were not locking the mutex, and the timer was killed after the deinit sequence. If the deinit sequence stalls for whatever reason, that doesn't have to cause a claimer loss to be reported. UHD will already have stopped the reclaim loop before unclaim() is called. In the stall case, it would also have been possible the to acquire a new claim while the deinit() is still running. This is prevented with the combination of actually acquiring the mutex (like claim() and reclaim() do) and moving the token/session ID clearing to the end.
* mpm: rpc server: Remove Python2 compat codeMartin Braun2020-12-081-4/+1
| | | | | | | | MPM is Python3-only, but contains some remaining compatibility code for Python2. Because this code requires extra dependencies (like six) and could become obsolete in the future, we remove it to preempt that. No functional changes.
* mpm: rpc_server: fix get_log_buf for MPM ShellJoerg Hofrichter2020-12-041-1/+2
| | | | | Fix the issue that the method 'get_log_buf' was not accessible from MPM Shell.
* fixup! mpm: Use prefs API in logging moduleJoerg Hofrichter2020-12-041-2/+2
|
* sim: Check for unit test prereqs and disable if unsatisfiedAaron Rossetto2020-10-281-1/+45
|
* sim: Move SelectableQueue and SendWrapperSamuel O'Brien2020-10-282-45/+45
| | | | | | | | | | | | This commit moves these two classes from chdr_stream.py to chdr_endpoint.py. ChdrEndpoint needs to be aware of the specific implementation of these classes, while ChdrInputStream and ChdrOutputStream treats them like black boxes. Therefore, it makes more sense to have these classes together with ChdrEndpoint Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Support Out of Tree Sources and SinksSamuel O'Brien2020-10-282-2/+24
| | | | | | | | This commit adds the ability to specify a path to an arbitrary python file in a simulator config file, which will be imported and used to construct a SampleSink or SampleSource for use with data streaming. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Implement Sim > UHD Flow ControlSamuel O'Brien2020-10-283-34/+85
| | | | | | | This commit adds flow control support when streaming data from the Simulator to UHD. It no longer ignores STRS packets. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Move Hardware Specific to Config FileSamuel O'Brien2020-10-288-66/+149
| | | | | | | | 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: Implement UHD > Simulator Flow ControlSamuel O'Brien2020-10-281-18/+47
| | | | | | | | | When sending data to the simulator, python simply cannot process the data as fast as UHD can send it. Flow control ensures that uhd doesn't overwhelm the simulator. Simulator > UHD flow control isn't implemented yet. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Support Timed StreamsSamuel O'Brien2020-10-282-1/+10
| | | | | | | | The only difference between a standard and timed stream is that the first data packet of a timed stream contains a timestamp. This commit adds the necessary fields to StreamSpec to accomplish this. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Integrate simulator into UHDSamuel O'Brien2020-10-283-2/+75
| | | | | | | | | This commit adds a device::register_device which allows uhd to start up a simulator when uhd is called with the arguments type=sim. Creating the device object creates a subprocess using pybind and an embedded interpreter, and destroying the object cleans up those subprocesses. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Support Configuration FilesSamuel O'Brien2020-10-285-9/+68
| | | | | | | | 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-288-348/+860
| | | | | | This commit add support for both Tx and Rx streams to the simulator. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* mpm: Add dependency on pyusrp_periphs to MPMLane Kolbly2020-10-151-1/+1
| | | | | This change makes it so that changing the USRP periphs will cause a `make install` to reinstall the libpyusrp_periphs.so library.
* sim: Clarify Naming of StreamsSamuel O'Brien2020-10-084-25/+27
| | | | | | | | | 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-086-5/+1114
| | | | | | | | | 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: Embed MPM into libpyuhdSamuel O'Brien2020-10-072-1/+4
| | | | | | | When ENABLE_SIM and ENABLE_PYTHON_API are set, this commit embeds MPM (Built with -DMPM_DEVICE=sim) into the pyuhd package. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* sim: Add Daughterboard MethodsSamuel O'Brien2020-10-077-14/+130
| | | | | | | | 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-077-23/+347
| | | | | | | | | | | | | | | 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: Cleanup rpc_server.pySamuel O'Brien2020-10-071-5/+7
| | | | | | | | This commit fixes a spelling mistake, moves logic for checking if a connection is local to its own method, and calls gevent.signal.signal instead of its deprecated alias gevent.signal. 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: added check-filesystem utilityJoerg Hofrichter2020-10-061-0/+67
|
* mpm: e31x: Accept FF terminated strings in eepromSteven Koo2020-09-041-4/+11
| | | | | | | | | | Older revisions of the e31x used FF terminated strings in the EEPROM. The eeprom implementation didn't take this into account and would fail on ascii conversion. This change resolves mpm bring up on the older revisions by replacing FF with null. This didn't affect newer revisions because they used null terminated strings. Signed-off-by: Steven Koo <steven.koo@ni.com>
* mpm: Return 10 Gbs link speed on failuremattprost2020-09-011-0/+7
| | | | | | | | | | | The sysfs call used to determine link speed occasionally will fail and return -1. In order to mitigate side effects from this behavior, return 10 Gbs link speed instead of 1 Gbs. This mitigates problems that occur when this issue is seen on 10GbE ports. This approach was elected over returning -1 to be handled on the host side in order to avoid breaking mpm compatibility. Signed-off-by: ettus <matt.prost@ni.com>
* mpm: exclude internal nic for network hostsSteven Koo2020-08-191-4/+35
| | | | | | | | | | Sometimes the internal nic address is routable in network mode. This causes mpm find to incorrectly set it as the addr. This commit removes the internal interfaces from the routable list. This also sets the forwarding interface as the last resort. mpm will prefer the SFP ports since they can be higher throughput. Signed-off-by: Steven Koo <steven.koo@ni.com>
* rh: Enable inverse sinc filter for DAC37J82Martin Braun2020-08-121-1/+1
| | | | | This enables the inv_sinc_ab and inv_sinc_cd flags for the DAC, turning on the inverse sinc filter.
* 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-074-76/+2
| | | | | | 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: Reenable forward interfaces for remote hostsSteven Koo2020-08-041-2/+1
| | | | | The forward interfaces are able to forward CHDR packets with MPM iptables routing. This reenables forward interfaces as a CHDR option.
* mpm: n3xx: bist: Read mboard and dboard eeprom to determine productSteve Czabaniuk2020-07-312-5/+14
| | | | | | | | The routine to identify products currently only reads the motherboard EEPROM. The N310 and N320/N321 use the same motherboard so these devices can't be distinguished using the motherboard EEPROM alone. This change makes get_product_id() read both the motherboard and daughterboard EEPROM in order to determine which N3xx it actually is.
* mpm: Default virtual NIC CHDR IP selectionSteven Koo2020-07-304-4/+22
| | | | | This change adds detection for setting the correct internal fpga CHDR IP address when using embedded mode.
* mpm: Fix more gevent errors on SIGTERMSamuel O'Brien2020-07-281-6/+19
| | | | | | | | | | | | | Sometimes when running usrp_hwd.py in a terminal and then canceling it with Ctrl+C, it prints a really large stacktrace into the terminal resulting from an uncaught gevent BlockingSwitchOutError. This comes from trying to block on Process#join inside a gevent signal handler. This commit resolves this issue by simply triggering an event in the signal handler which prompts a different non-daemon thread to join the subprocesses and end the parent process. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* mpm: Fix documentation and minor issues in sys_utils.GPIOBankMartin Braun2020-07-281-6/+30
| | | | | | | | | | | - GPIOBank made the assumption that all bits used where contiguous. This amends the documentation to make that more clear, and adds an assert statement to check for that. - reset_all() would reset all pins, regardless of DDR value, rendering it useless for any GPIO bank that would want to have readable pins. Fixed that by checking DDR value before resetting. - Minor amendments to various docstrings; improve PyLint score by removing superfluous inheritance from object.
* mpm: Fix gevent errors on SIGTERMSamuel O'Brien2020-07-242-5/+13
| | | | | | | | | | | | | | | | | | | | | | Sometimes when running usrp_hwd.py in a terminal and then canceling it with Ctrl+C, it prints a really large stacktrace into the terminal resulting from an uncaught gevent BlockingSwitchOutError. It seems like there was an attempt to catch this in usrp_hwd.py:kill_time(). This try-except was surrounding a call to Process.join() which, to the best of my knowledge, can't ever throw this exception. Based on my troubleshooting, this error comes from the SIGTERM signal handler of the RPC process. The handler (defined in rpc_server.py:_rpc_server_process), is just a direct call to RPCServer.stop(). When the server's backed is a thread pool, this call may block when joining the thread pool, causing gevent to complain about execution attempting to block in a signal handler. This commit resolves this issue by simply triggering an event in the signal handler which prompts a different thread to clean up the server and end the process. Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
* fpga, mpm: Bump FPGA compat numberRobertWalstab2020-07-243-3/+3
|
* mpm: Don't index empty forwarding interface listAaron Rossetto2020-07-241-0/+1
| | | | | | If no internal interfaces are found to which to forward CHDR packets, return after printing the warning instead of attempting to index the empty list and generating an exception.
* mpm, mpmd: Bump MPM compat numberAaron Rossetto2020-07-241-1/+1
|
* uhd: remove liberioRobertWalstab2020-07-207-146/+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
|