| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
| |
- There's a lengthy conversion of TPV/SKY dicts into GPGGA which is
removed from the class to enhance readability
- The file had some Pylint issues, including a Python2-ism
|
| |
|
|
|
|
| |
Also update this info upon server reset, such as when a new FPGA image is loaded
|
| |
|
| |
|
|
|
|
| |
Mostly cosmetic and Pylint fixes.
|
|
|
|
| |
This allows conditionally adding public API methods.
|
| |
|
|
|
|
|
| |
This will make sure the flash partition is not already mounted before
trying to re-mount.
|
| |
|
|
|
|
|
| |
This will return False on ismounted() if a Mount class is mounted, but
in the wrong spot.
|
|
|
|
|
|
|
|
| |
The class Mount defines a mount point and device path. It currently
warns if mount() is called twice, but that warning is at odds with the
contract of that API. It even returns 'True' (== success) after printing
the warning, and the outcome is the desired one. For that reason, we
demote the warning to a debug statement.
|
|
|
|
|
|
|
|
|
| |
When there are SPI nodes declared for a daughterboard, MPM will emit
a warning: "No SPI nodes for dboard". The warning is misleading, because
this only occurs when no SPI nodes where *declared*, not when they were
declared but not found. This is entirely normal for USRPs where the
daughterboards do not have SPI nodes, and thus, not even worth a debug
statement.
|
|
|
|
|
|
|
| |
Fix the issue where N310 did not correctly read the lo lock status
from the cpld.
Signed-off-by: mattprost <matt.prost@ni.com>
|
|
|
|
|
|
|
|
|
|
|
| |
rfnoc_num_blocks is a device arg that could be used in UHD 3.15 (and
below) to artificially skip enumeration of RFNoC blocks. Since the block
enumeration works very differently in UHD 4, this arg was never
supported there.
This removes references to this arg in some BIST files. It is not
harmful, but also serves no purpose, and could be construed as being
useful upon lecture of these codes.
|
|
|
|
|
|
|
|
|
|
| |
The get_mb_eeprom() RPC call is supposed to return a string -> string
map and thus converts all EEPROM entries to strings. However, for raw
strings, the existing conversion (using str()) was not correct (we need
to decode raw strings first).
This would lead to things like the serial being returned as b'ABCD123'
instead of just ABCD123.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
Add i2c_dev adapter device lookup which uses a the sys_name value
instead of OF_NAME to find the adapter. OF_NAME is not unique for some
i2c device nodes. The logic for finding the adapter from the parent
node was pulled into a helper function and is shared across both
lookup functions.
Co-authored-by: Michael Auchter <michael.auchter@ni.com>
Co-authored-by: Toni Jones <toni.jones@ni.com>
|
|
|
|
|
| |
Modify the RPC claim timeout mechanism to use a contextmanager
helper function when enabling/disabling timeouts.
|
|
|
|
|
|
|
| |
Add a helper that can lookup a device via a device tree symbol.
Co-authored-by: Lars Amsel <lars.amsel@ni.com>
Co-authored-by: Michael Auchter <michael.auchter@ni.com>
|
|
|
|
|
|
|
|
| |
Add DboardIface class which will act as an interface to bridge the gap
between MB and DB drivers in MPM. The DboardIface will be implemented
by each Motherboard with MB specific information. Dboard objects
will then instantiate the class in order to utilize the implemented
control functions.
|
|
|
|
| |
Add SPCC reg map for reference and testing.
|
|
|
|
|
|
|
|
|
|
| |
Add RegMaps build component to MPM. The PYTHON_CHECK_MODULE is
included from UHDPython in order to look up the presence of Mako.
Mako is required for generating the regmaps and RegMap will be
disabled without it. The RegMaps component creates custom commands for
generating all regmaps, creates a Python submodule "ic_reg_maps" with a
custom __init__.py file, and creates a target "ic_reg_maps" which gets
installed with usrp_mpm.
|
|
|
|
|
|
|
|
|
| |
Added an LMK03328 base chip driver which does basic register access, ID
validation, and PLL lock validation. This will act as the base class for
device specific drivers which control the chip. The code it similar to
the LMK04828 and LMK04832 base driver classes but has a different
register map structure. Register bitfield definitions were omitted and
will be added on an as needed basis.
|
|
|
|
|
|
|
|
| |
Added an LMK04832 base chip driver which does basic register access, ID
validation, and PLL lock validation. This will act as the base class for
device specific drivers which control the chip. The code is similar to
the LMK04828 base driver class, but has a different register map
structure.
|
|
|
|
|
|
|
|
|
|
|
|
| |
MPM server needs to be reclaimed in regular intervals. This is
monitored by the server using a timer. If the timer hits, the server
unclaims itself assuming the client process died for whatever
reason. In previous versions of `gevent.greenlet` the timer was
killed in a non blocking manner. This changed in version 0.13.0
(see
http://www.gevent.org/api/gevent.greenlet.html#gevent.Greenlet.kill)
which now leads to a dead lock in `timer.kill`. The kill command
is therefore now called explicitly with `block=False`.
|
|
|
|
|
|
|
| |
Provide a way to safely reset the peripheral manager from uhd and as
a result, a mechanism to reload the fpga/dts components.
Signed-off-by: Virendra Kakade <virendra.kakade@ni.com>
|
|
|
|
|
| |
Create Mock classes which mimic the behavior of a register interface
and logger to facilitate unit testing needs.
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
| |
Class for accessing (mounting) the daughterboard flash
|
|
|
|
| |
Class for creating a mount point
|
|
|
|
|
|
| |
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).
|
| |
|
| |
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 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.
|
|
|
|
|
| |
Fix the issue that the method 'get_log_buf' was not accessible from
MPM Shell.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
|
|
| |
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>
|
|
|
|
|
|
| |
This commit add support for both Tx and Rx streams to the simulator.
Signed-off-by: Samuel O'Brien <sam.obrien@ni.com>
|