| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
Use @norpc instead. This fixes some linting issues.
|
| |
|
|
|
|
|
| |
The RPC client will now query the MPM server for details when an error
occured.
|
|
|
|
|
|
|
|
| |
- Any RPC call with uncaught exceptions will result in additional
logging on MPM side
- Adds get_last_error() API call
- get_last_error() is populated by various methods within rpc_server.py,
but also from every uncaught exception
|
|
|
|
|
|
| |
It can be helpful to go back to the RPC server for clarification on what
just happened. This adds an optional argument to the RPC client for how
to retrieve that info.
|
|
|
|
| |
uhd_image_loader now supports type=n310, and loads the FPGA provided in the arguments.
|
|
|
|
| |
The FPGA image, and other components, can now be set from the property tree. The registered function expects a component_file_t, which combines the data file and metadata dictionary.
|
|
|
|
|
|
|
|
|
| |
- Adds two new compilation units (magnesium_gain_table.* and
magnesium_radio_ctrl_gain.cpp)
- Static gain tables are hard-coded in that file, includes method to
look up gain table entries for a given frequency and gain
- DSA code moved back to accept attenuation
- TX/RX switch code needed update to enable bypass for certain gains
|
|
|
|
|
|
|
|
|
| |
All ATR settings were on one big API call for each TX and RX,
respectively. This splits up the ATR settings into related components,
such as:
- Antenna input for RX side
- Frequency-related (RX LNAs)
- TRX switch
|
| |
|
|
|
|
|
|
| |
- Spin out AD9371 control into its own class
- Split file into multiple compilation units
- Fixed many minor code formatting issues
|
|
|
|
|
| |
This will set you call setters on the CPLD control object without
immediately triggering a SPI transaction.
|
| |
|
| |
|
|
|
|
| |
Adding skip_init to the device args makes it so rfnoc blocks, etc. are not initialized.
|
|
|
|
|
| |
-update_fpga loads the FPGA image from the base class's update_component function
-checks if FPGA image is a bit or bin file, and converts to Zynq-compatible binfile if necessary
|
|
|
|
|
|
|
|
| |
-update_component takes a byte array containing the data to be written,
and a dictionary containing the metadata of the component to be
updated
-The metadata must contain 'id' and 'filename'
-The metadata may contain an md5 hash ('md5')
|
|
|
|
|
|
|
| |
- Adds gains to gain group: dsa, ad9371
- Defaults to splitting gains evenly across group members
- Adds gain_mode which allows automatic gain setting, or manually
setting DSA vs. AD9371
|
|
|
|
|
| |
This enables the various bands for the Magnesium dboard. Note: Tx
support is not part of this commit.
|
| |
|
|
|
|
|
|
|
|
| |
- FP-GPIOs are currently unconnected, we just create the object (pending
FPGA changes)
- One ATR/GPIO controller per radio
- Internal GPIOs (controlling DSA and AD9371 gain bits) are set to
MODE_GPIO, they don't toggle on ATR state change
|
| |
|
|
|
|
|
|
|
| |
- Reordered methods
- Renamed AD9371-specfic functions with _myk prefix
- Renamed _slot_prefix to _rpc_prefix
- Moved to 4-radio model (one RFNoC block per channel)
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
| |
- Number of samples for TDC measurement bumped back up to 512 (was
previously reduced because of slow sampling speed)
- Non-functional changes: Modified formatting to pacify PyLint
|
|
|
|
| |
This increases init speed by replacing worst-case sleeps with polls.
|
|
|
|
| |
This is a convenience function for polling with sleeps and timeouts.
|
|
|
|
|
|
|
| |
On the N310, there's a penalty for calling time.sleep(). This means the
polling loop was extremely slow for polling TDC updates. Now, it simply
polls as fast as possible. Note: This could hog the bus if run outside
of an initialization sequence, where no one else is using the bus.
|
|
|
|
|
| |
- Register 0x150 bit [1] to '0'
- Change lock detect to poll operation
|
|
|
|
|
| |
- Moved AD9371 API generation around
- Fixed some PyLint warnings
|
| |
|
|
|
|
|
|
| |
This exposes two new API calls to read and write arbitrary data to the
device's EEPROM.
Please keep in mind that EEPROMs have limited write cycles!
|
|
|
|
|
|
|
|
|
|
| |
BufferFS is a serialization format with CRC checking and optional
byte-alignment for records. It allows storing arbitrary blobs, together
with a 8-character identifier, in a contiguous buffer that supports
random access. This is suitable for storing arbitrary blobs in EEPROM,
but could also support other things.
Signed-off-by: Martin Braun <martin.braun@ettus.com>
|
|
|
|
| |
Signed-off-by: Martin Braun <martin.braun@ettus.com>
|
| |
|
|
|
|
|
|
| |
The Magnesium daughterboards have GPIO port expanders, but both have the
same udev label. In order to specify which port expander to use, we pass
in the parent udev I2c device.
|
| |
|
| |
|
|
|
|
|
| |
The setter will throw an exception though. It is supposed to be
overriden by device-specific classes.
|
|
|
|
|
|
|
|
|
|
|
| |
Prior to this commit, device_info was always an empty dictionary on all
dboard classes. The device_info dict is now auto-populated from the
EEPROM contents, if any were provided.
Dboard classes can still opt to amend that dictionary in specific class
implementations.
Signed-off-by: Martin Braun <martin.braun@ettus.com>
|
|
|
|
|
|
| |
There are cases where we need to specify a parent device in order to
disambiguate GPIO devices with the same label. This lets you passing in
a parent udev device to clarify.
|
|
|
|
| |
We're not using C++14 yet, so named captures are not yet available.
|
| |
|
|
|
|
|
| |
This is a specific override for the N310. It returns all the default
device info as a dict.
|