aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib
Commit message (Collapse)AuthorAgeFilesLines
* uhd: mpm: apply clang-format to all filesBrent Stapleton2019-01-1661-7418/+6799
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Applying formatting changes to all .cpp and .hpp files in the following directories: ``` find host/examples/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file find host/tests/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file find host/lib/usrp/dboard/neon/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file find host/lib/usrp/dboard/magnesium/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file find host/lib/usrp/device3/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file find host/lib/usrp/mpmd/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file find host/lib/usrp/x300/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file find host/utils/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file find mpm/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file ``` Also formatted host/include/, except Cpp03 was used as a the language standard instead of Cpp11. ``` sed -i 's/ Cpp11/ Cpp03/g' .clang-format find host/include/ -iname *.hpp -o -iname *.cpp | \ xargs clang-format -i -style=file ``` Formatting style was designated by the .clang-format file.
* formatting: remove vim hints in headersBrent Stapleton2019-01-1622-22/+0
| | | | | Remove trailing vim hints in header files. This functionality will be replaced by clang-format.
* uhd: skip formatting misc arrays, maps, etc.Brent Stapleton2019-01-167-1/+18
| | | | | | Various data structures are nicely formatted to be human-readable. clang-format makes these structures harder to read, so we can skip formatting these sections.
* transport: Move uhd-dpdk header to uhdlibAlex Williams2019-01-154-3/+3
|
* transport: Add dpdk_zero_copy transportAlex Williams2019-01-153-0/+527
| | | | | This transport is based on uhd-dpdk, and it includes a global context that must be initialized prior to creating any dpdk_zero_copy objects.
* transport: Add blocking recv calls to uhd-dpdkAlex Williams2019-01-1511-220/+704
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds an internal wait queue API to uhd-dpdk. Socket configuration requests had their blocking calls re-implemented on top of this API, and it is also used to service requests to wait on RX packets (w/ timeout). The wait API involves a multi-producer, single-consumer queue per I/O thread (waiter_ring), with a condition variable used for sleeping. The data structure is shared between user thread and I/O thread, and because timeouts make resource release time non-deterministic, we use reference counting on the shared resource. One reference is generated by the user thread and passed to the I/O thread to consume. A user thread that still needs the data after waking must get() another reference, to postpone the destruction of the resource until it is done. Timeouts are based on CLOCK_MONOTONIC. For recv, a timeout of 0 indicates blocking indefinitely, and a negative timeout indicates no timeout is desired. Also drop timeout for closing sockets in uhd-dpdk. The timeout would allow a user thread to pre-empt the I/O thread's cleanup process. The user thread would free data structures the I/O thread still needed to function. Since this timeout is superfluous anyway, let's just get rid of it. Also add some more input checking and error reporting.
* uhd-dpdk: Add ARP responder, set MTU, and clean up APIAlex Williams2019-01-155-7/+75
| | | | | | | | | | | | Set MTU of Ethernet ports: Some NICs (like the Mellanox ones) require this to work. Add ARP responder to uhd-dpdk. Clean up pending ARP request list when done: Threads waiting for an ARP request to complete would be woken up when the request completed, but they wouldn't get removed from the list of pending requests. This fixes the issue.
* mpmd: increase claim_rpc call timeout.Trung Tran2019-01-142-3/+6
| | | | | | | | | | | During certain RPC calls (e.g. update_component), the MPM RPC server is slow to respond to reclaim requests, which can causes RPC timeouts. These changes fix those timeouts. By setting the reclaiming timeout to twice the timeout of an RPC call, we have some margin for error on the host side, while not affecting the underlying claiming logic in MPM. The loop should still operate on a 5 second period, but now has more leeway during stressful conditions.
* rpc,mpmd: replace all set_timeout() to new apiTrung Tran2019-01-144-58/+11
| | | | | Using new rpc client new API that ensure atomic setting of timeout on each rpc call.
* mpmd_impl: move timeout constants to headerTrung Tran2019-01-142-9/+13
|
* utils:rpc: set rpc timeout during rpc callTrung Tran2019-01-141-3/+120
| | | | | | | | | | | | | The current implementation of the UHD RPC client has a timeout that is being accessed non-atomically. Many calls follow the pattern: 1. set_timeout(value) 2. request_rpc() 3. set_timeout(default) which is not atomic. Other concurrent calls on the same rpc client may change the timeout value; leads to unexpected behavior These new set of function will, instead, handle setting and re-setting the timeout atomically in the RPC request.
* tests: Add benchmark of streaming code pathsCiro Nishiguchi2019-01-101-0/+4
| | | | | Add a benchmark of packet handlers and device3 flow control. Benchmarks use mock transport objects.
* uhd: Move device3 flow control functions to header for benchmarkCiro Nishiguchi2019-01-102-291/+306
| | | | | Moving device3 flow control functions to a header file so they can be included in benchmark utility.
* rh: add support for identify argMark Meserve2019-01-102-12/+40
|
* rh: implement set_rateMark Meserve2019-01-103-9/+40
|
* rh: general code cleanupMark Meserve2019-01-101-4/+5
| | | | | | | | - Add default bandwidth range - Add default mash order constant - Delete MPM todos - Cleanup whitespace in MPM python code - Add docstring for is_lo_dist_present
* lib: experts: fixup for including Boost headerMartin Braun2019-01-091-0/+2
| | | | | | Header wasn't included until Boost 1.56. Fixes 5c012cad7858 ("lib: experts: Add potentially missing but...")
* udp_wsa_zero_copy: add default xport paramsThomas Vogel2019-01-091-1/+25
|
* rh: add support for iq and dc correction filesMark Meserve2019-01-094-18/+88
| | | | | | | - Update corrections on frequency or LO source change - Add legacy EEPROM properties - Move DSP control initialization earlier - Fix TX antenna list property
* lib: experts: Add potentially missing but sometimes inferred includeMartin Braun2019-01-091-0/+1
| | | | | This adds an include for boost/core/noncopyable.hpp. Without it, builds would potentially fail on Boost 1.69++.
* rh: adjust frequencies for lo filter bankMark Meserve2019-01-081-1/+1
| | | | | - Moves the cutover frequency for the 900 MHz LO filter from 900 to 975 MHz. This fixes an image issue in TX when transmitting near 325 MHz or 900 MHz.
* b200: Fix compiler warnings related to type conversionsMartin Braun2019-01-072-8/+8
| | | | | | | These compiler warnings mostly pop up on MSVC. Most of them are due to inconsistent usage of size_t, uint{8,16,32}_t, and even int. This commit changes types mostly such that variables have the correct type to begin with, although it also contains a few explicit type-casts.
* x300: Fix compiler warnings related to type conversionsMartin Braun2019-01-074-15/+15
| | | | | | | These compiler warnings mostly pop up on MSVC. Most of them are due to inconsistent usage of size_t, uint{8,16,32}_t, and even int. This commit changes types mostly such that variables have the correct type to begin with, although it also contains a few explicit type-casts.
* transport: Fix MSVC warning by replacing size_t with uint32_tMartin Braun2019-01-031-1/+1
| | | | This fixes a C4267 which pops up a lot when compiling UHD with MSVC.
* TwinRX: Fix tuningMichael West2019-01-022-8/+5
| | | | | - Set SPI clock back to 3 MHz - Fix returned frequency for ADF5355 (rev A and B boards)
* x300: Remove usage of boost::bindMartin Braun2019-01-021-12/+16
|
* x300: Factor our PID -> MB type and MB type -> product name mappingMartin Braun2019-01-021-137/+117
|
* x300: Remove some trailing spacesMartin Braun2019-01-021-6/+4
|
* E300: Re-enable "gpsdo" time sourcemichael-west2018-12-201-1/+1
| | | | Fixed typo in CMakeLists.txt file
* gpsd: GPGGA string formatting fixesBen Kempke2018-12-201-4/+4
| | | | | - Add missing commas for empty fields - Zeroize longitude and latitude
* RFNoC: Fix stream command propagationmichael-west2018-12-201-1/+1
| | | | | | - Corrects parameter from output port to input port of node - Fixes issue on nodes with different number of input and output connections
* RFNoC: Fix graph traversalmichael-west2018-12-193-14/+16
| | | | | | - Allows different TX sample rates on separate channels - Prevents stream commands from being issued on wrong ports - Prevents some receive timeout errors
* N310 E320: Add initialization of TX bandwidthmichael-west2018-12-192-2/+2
| | | | - Fixes "Error: map::at" errors (during calls to get_tx_bandwidth())
* uhd/mpm: eiscat: Various changesRyan Marlow2018-12-192-28/+219
| | | | | | | | | | | | | | - correct lmk initialization parameters - adding missing parameters and consts wrt clock synchronization. - fixed default master clock rate - eiscat, ddc: update xml. - remove references to CORDIC_FREQ in ddc_eiscat - update readback reg addr in radio_eiscat - set default spp from 3992 to 3968. - updated jesd mode sequence initialization - updating eiscat_radio_ctrl_impl - add rx_codecs to property tree to display correct ADC chip. - updated issue_stream_cmd
* radio_ctrl_impl: move continuous_streaming to protected.Ryan Marlow2018-12-191-1/+1
|
* Device3: Fix block control flushingBrent Stapleton2018-12-171-18/+25
| | | | | | | | | | | | | | | | | | | - Factor out the _start_drain helper function, which starts flushing data out of the block. We should always be disabling flow control after we write to the flushing registers. - Always attempt to flush when calling the _flush function. Previously, we would check if data appeared to be moving when _flush was called, and only write to the flush registers if data was moving. However, if data is stuck for some reason (for example, the block ran out of flow control credits), this check will give us a false positive, and we won't flush. Instead, we need to always begin the flushing process, then check those counters, and return once the counters stop changing. Note: we need to start flushing before disabling flow control so that the flushed data isn't flooded onto the crossbar. Co-authored-by: michael-west <michael.west@ettus.com> Co-authored-by: Sugandha Gupta <sugandha.gupta@ettus.com>
* Device3: Set default block control response SIDsBrent Stapleton2018-12-171-0/+4
| | | | | | | | | | | In the block controllers, set the default response SIDs for input and output ports. If we don't do this, the blocks may send their responses to other blocks' responses ports. For example, without this change, the DDC may send an error packet to port 0x0000, which is assigned to the DmaFIFO. With this change, the DDC would send that packet to 0xFFFF, which isn't assigned to any other block.
* E310: Fix initialization of antenna and frequency valuesmichael-west2018-12-172-8/+36
|
* C API: Add support for Tx LO controlMartin Braun2018-12-141-0/+89
| | | | | The Rx LO control was always there, but the Tx LO control was not exposed into the C API.
* x300: Add support for USRP-2974Thomas Vogel2018-12-143-2/+19
| | | | | This will enable a USRP 2974 to be registered as an X300 device. Its product ID is 'NI-2974'.
* various: use "std::abs" instead of "std::fabs"Michael Dickens2018-12-122-6/+6
| | | | | | + better compiler compatibility + let the compiler figure out the actual function IO signature that makes sense, instead of forcing float.
* lmx2592: Better "abs()" compiler compatibilityMichael Dickens2018-12-121-3/+3
| | | | Use "std::abs" instead of "abs" for better compiler compatibility
* rh: add highband spur reduction optionMark Meserve2018-12-124-4/+83
| | | | | | | | | - When highband_spur_reduction is enabled, the lowband LO will be disabled during highband operation. This improves spur performance, but also renders timed tune commands unusable due to the MPM call. - A warning is logged if the user uses a timed tune command that would change the state of the lowband LO, as the MPM call will occur immediately instead of at the given command time.
* TwinRX: Make routing to LO1 and LO2 mutually exclusivemichael-west2018-12-102-25/+15
|
* TwinRX: Enable phase resync on ADF535xmichael-west2018-12-101-17/+9
|
* TwinRX: Tuning improvementsmichael-west2018-12-103-17/+20
| | | | | | - Added delay for VTUNE calibration as per ADF5355 and ADF5356 data sheets - Increased SPI clock to 10 MHz - Removed write to register 10 during tuning of ADF5356 to match ADF5355 code and reduce tune time
* TwinRX: Fix initializationmichael-west2018-12-101-62/+60
| | | | | | | - Reordered initialization - Fixed issue where LO2 initialization data was being written to LO1 - Moved SPI config to be a member variable so it is not constantly re-created - Changed SPI clock divider from hard-coded value to a calculation based on CODEC rate
* rh: fixed lowband tuningMark Meserve2018-12-071-1/+2
| | | | - Sometimes, SW1 was not updated when a switch to lowband occurred.
* uhd: Fix log statement for Port number on RFNOC blockSugandha Gupta2018-12-051-1/+1
| | | | | CE is display in decimal format and Port number will be displayed in Hex, as it represents Block Port on the crossbar
* rh: add handling for "all" loMark Meserve2018-12-042-9/+104
| | | | | | | - Adds "all" LO properties. - Adds handling of "all" value in all LO functions. - Re-adds value_error exceptions for illegal settings of LO2, which previously caused issues when the "all" LO was used from multi_usrp.