aboutsummaryrefslogtreecommitdiffstats
path: root/mpm/python
Commit message (Collapse)AuthorAgeFilesLines
* mpm: n310: Compile .dts files to .dtbo on updateMartin Braun2017-12-221-7/+31
| | | | Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
* mpm: mg: Refactor init(), limit object scopesMartin Braun2017-12-221-39/+53
| | | | | | - ClockSynchronizer object has no more permanent lifetime - DboardClockControl object lives within `with' statement - dboard_ctrl_regs are limited to init()
* mpm: Add temporary failure for FPGA reloadMartin Braun2017-12-221-0/+9
| | | | | Note: This is subject to removal, but makes the FPGA reloading code available to all until we fix the reload bug.
* mpm: Reset periph manager on updateBrent Stapleton2017-12-224-15/+105
| | | | | | | | | | Upon updating certain components (the FPGA, for example), the Peripheral Manager is restarted, and the overlay is reapplied. In order to facilitate this, the RPC server intercepts and handles the update_component function. Tested on the RJ45 ethernet connection. It probably won't work as well if the SFP connection goes down when the overlay is removed.
* mpm: adding destructor for UIOBrent Stapleton2017-12-221-0/+11
| | | | UIO object now has an explicit destructor to properly tear down.
* mpm: PeriphManager decides and applies overlayBrent Stapleton2017-12-225-57/+14
| | | | | | | Previously, the daughterboard requested an overlay file based on SFP preference using magic values. This commit moves the decision making to the peripheral manager, which uses our singular name (ie 'n3xx' for the N310).
* fpga load: Components file paths in component dictBrent Stapleton2017-12-221-9/+12
| | | | | | Paths to the component files is now stored in the updateable_components dictionary. This makes them accessible in the base class, and generally cleans up the member variables.
* fpga load: Atomic updating of multiple componentsBrent Stapleton2017-12-222-40/+46
| | | | | | | - The MPM function update_component now accepts multiple components to be updated in one RPC call. - Updated the property tree and image loader to match this change. - Also added DTS loading to the image loader.
* mpm: mg: Add ref lock sensorMartin Braun2017-12-221-0/+15
| | | | | Note: The sensor API for this lives in n310, but it queries the dboards for a ref lock status, which is now no longer a stub.
* mpm: lmk04828: Fix docstringMartin Braun2017-12-221-2/+2
| | | | Says check_plls_locked() would throw an exception. That's not true.
* mpm: mg: Add flag to see if master clock rate is being changedMartin Braun2017-12-221-10/+26
| | | | Note: On the first run, this flag will always assert.
* mpm: mg: Fix linter errors, compacted SPI factoriesMartin Braun2017-12-221-27/+16
|
* mpm: mg: Move some class attributes to local scopesMartin Braun2017-12-222-32/+38
| | | | | | The clock_synchronizer, jesdcore, and dboard_clk_control objects don't need to exist for the full lifetime of the Magnesium class. Having them around complicates management of UIO file descriptors.
* mpm: n310: Remove unused imports (linter warnings)Martin Braun2017-12-221-2/+1
|
* mpm: mg: Remove unused spi_factories keyTrung N Tran2017-12-221-5/+3
|
* mpm: mg: Set default master_clock_rate to 125 MHz at every initTrung Tran2017-12-221-0/+2
|
* mpm: mykonos: Add API to change master clock rateTrung N Tran2017-12-221-1/+5
|
* jesd: add reset routine and make portions more generic for various linksdjepson12017-12-221-33/+101
|
* n3xx: add support for 122.88 and 153.6 MHz sample clock ratesMartin Braun2017-12-225-91/+207
| | | | | | - re-wrote portions of the LMK driver for flexible rates and configuration - tweaked TDC driver for compatibility and ease of debugging - updated comments and log statements throughout for uniformity
* mg: Enable variable master clock ratesMartin Braun2017-12-221-2/+6
| | | | | | | | | | The master_clock_rate argument is passed to init() during initialization; this change allows to query the correct MCR at initialization time. It does not allow changing the MCR while a session is active. The MCR also affects the LO settings; it is the reference clock for the lowband LOs.
* mpm: mg: Add dboard sensors for low- and highband LO lock statusMartin Braun2017-12-222-14/+26
| | | | | | | | | - Add LO locked APIs to Magnesium - Add LO locked sensor APIs for RX/TX and highband/lowband LOs - Poll all those sensors from magnesium_radio_ctrl_impl Reviewed-By: Steven Bingler <steven.bingler@ni.com> Reviewed-By: Trung Tran <trung.tran@ettus.com>
* mpm: Let usrp_hwd.py --init-only show init status and durationMartin Braun2017-12-221-1/+10
| | | | Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
* mpm: mg: Optionally parallelize init calls to dboardMartin Braun2017-12-221-3/+19
| | | | | | Default is to run in parallel. serialize_init=1 will run them serially. Reviewed-By: Brent Stapleton <brent.stapleton@ettus.com>
* mpm: n310: Made n310.__init__() more exception-safeMartin Braun2017-12-221-1/+15
|
* mpm: Made PeriphManagerBase.__init__ more exception-safeMartin Braun2017-12-221-4/+13
|
* mpm: discovery returns 'product' informationBrent Stapleton2017-12-222-2/+5
| | | | | - Added 'product' information to N310 - MPM discovery checks for 'product' field
* n3xx_bist: remove unused python packageTrung N Tran2017-12-221-1/+0
| | | | | This tqdm is not using anywhere and causing trouble for the sdimage; so I remove it.
* mpm: mg: Make Magnesium __init__ exception-safeMartin Braun2017-12-221-5/+33
|
* mpm: Make dboard manager __init__ exception-safeMartin Braun2017-12-221-12/+17
|
* mpm: net: Add ip_addr_to_iface() functionMartin Braun2017-12-221-0/+17
| | | | Reviewed-By: Trung Tran <trung.tran@ettus.com>
* mpm: n310: Allow Ethernet connections to both SFPsMartin Braun2017-12-221-16/+30
| | | | Reviewed-By: Trung Tran <trung.tran@ettus.com>
* mpm: enable RX external LO set through argsTrung N Tran2017-12-221-0/+11
| | | | | | | | | This change allow user to set RX LO of ad9371 to external or internal from args constructor of usrp device. new args is rx_lo_source value can be either internal or external: If there's no rx_lo_source specified or invalid value, default rx_lo is used; which is internal LO. Usage example: usrp_application --args "rx_lo_source=external"
* mg: enable init and track calibration APITrung Tran2017-12-221-2/+21
| | | | | | | | | | | | | | | | | | | Currently, AD9371 turned on most of the calibration and hard coding the turning on process during bringup time. This change enables users to pass in a mask field for init ARM calibration and tracking arm calibration at the time creating USRP device reference. This mask field can be passed through device arguments of: 1/ init_cals : for init ARM calibration masks. This is defined in AD9371 UG-992 table 65. Default to 0x4DFF 2/ tracking_cals : for tracking calibration masks. This is defined in AD9371 UG-992 table 66. Default to 0xC3 Example of pasing in init calibration and tracking calibration mask usrp_application --args "init_cals=0x4f, tracking_cals=0xC3" NOTE: UHD currently expect user to input the correct init_cals and tracking_cals. There's no mechanism to check if init mask and tracking mask are valid. For example if the init mask field not mask 0x4f, the AD9371 will failed to setup.
* mpm: Run C++ logger through central loggingMartin Braun2017-12-221-0/+16
| | | | Reviewed-By: Mark Meserve <mark.meserve@ni.com>
* mpm: mg: Add lowband LO lock and AD9371 lock sensorsMartin Braun2017-12-222-3/+55
| | | | Note: The AD9371 lock sensors are only stubbed out for now.
* mpm/mpmd: Move to request_xport()/commit_xport() architectureMartin Braun2017-12-225-166/+386
| | | | | This commit combines code from various branches to finally enable both UDP and Liberio transports.
* mpm: Lower logging level for PeriphManagerBase.deinit()Martin Braun2017-12-221-2/+2
|
* mpm: n310: Load Liberio dispatcherMartin Braun2017-12-221-9/+39
| | | | | Note: The dispatcher is not yet used at this point. However, it will check the existence of certain devices.
* mpm: mg: Refactor some periph inits into __init__Martin Braun2017-12-221-40/+18
| | | | | | | SPI interfaces and -lock, user EEPROM, radio regs, CPLD, dboard clock control and GPIO expander can be initialized in Magnesium.__init__(). This shaves a little time off of the actual init() call and allows for earlier failures.
* mpm: mg: Fix linting issues and warningsMartin Braun2017-12-221-51/+47
| | | | | | - Removed superfluous code - Fixed most PyLint warnings - Reordered methods to match call order
* mpm: Fix minor logging issues with LMK04828 codeMartin Braun2017-12-223-7/+5
| | | | Log prefixes weren't properly being set.
* mpm: mg: Move CPLD controls to dedicated classMartin Braun2017-12-221-91/+163
|
* mpm: Add configurable log levelsMartin Braun2017-12-222-4/+30
|
* mpm: Cache connection type in PeriphManagerBaseMartin Braun2017-12-222-1/+19
| | | | | | Now, when claiming a device, the connection type will be stored as a string in PeriphManagerBase. This way we can read out the current connection type even when not currently inside an RPC call.
* mpm: Add LiberioDispatcherTableTrung Tran2017-12-222-0/+74
|
* mpm: Remove leading _ from _get_device_info()Martin Braun2017-12-223-4/+5
| | | | Use @norpc instead. This fixes some linting issues.
* mpm: Make list_updateable_components return somethingMartin Braun2017-12-221-2/+1
|
* mpm: Improve exception/error handlingMartin Braun2017-12-221-19/+75
| | | | | | | | - 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
* fpga load: add N310 update FPGA functionBrent Stapleton2017-12-221-0/+14
| | | | | -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
* fpga load: add update_component function to MPMBrent Stapleton2017-12-222-0/+95
| | | | | | | | -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')