diff options
author | Ashish Chaudhari <ashish@ettus.com> | 2014-10-10 17:24:40 -0700 |
---|---|---|
committer | Ashish Chaudhari <ashish@ettus.com> | 2014-10-10 17:24:40 -0700 |
commit | cca10287170e8ad50740791e7cbe715b642c2a87 (patch) | |
tree | c2ba1fe383b94a1f49d9a79f5301582567330dcf /host/lib/transport/nirio/nirio_resource_manager.cpp | |
parent | f30c5fee2a8d05f424ae1d733d0d99006eff930c (diff) | |
download | uhd-cca10287170e8ad50740791e7cbe715b642c2a87.tar.gz uhd-cca10287170e8ad50740791e7cbe715b642c2a87.tar.bz2 uhd-cca10287170e8ad50740791e7cbe715b642c2a87.zip |
x300,nirio: Added support for NI-RIO 14.0
- Split niriok_proxy interfaces to support NI-RIO <=13.0 and >=14.0 kernel interfaces
- Fixed multi-session race conditions by synchronizing niriok_proxy access
- Fixed bug switching from NI LV-FPGA access to UHD access by changing how devices are hashed into a reservation table
- Fixed calculation of FRAC values for CBX and SBX LO tuning by rounding instead of truncating
- Fixed bug that was not setting two MSBs for band select configuration of CBX LO
- Submitting on behalf of Patrick Sisterhen, Matthew Crymble
Diffstat (limited to 'host/lib/transport/nirio/nirio_resource_manager.cpp')
-rw-r--r-- | host/lib/transport/nirio/nirio_resource_manager.cpp | 33 |
1 files changed, 9 insertions, 24 deletions
diff --git a/host/lib/transport/nirio/nirio_resource_manager.cpp b/host/lib/transport/nirio/nirio_resource_manager.cpp index 85e789087..e56670de0 100644 --- a/host/lib/transport/nirio/nirio_resource_manager.cpp +++ b/host/lib/transport/nirio/nirio_resource_manager.cpp @@ -27,11 +27,16 @@ namespace uhd { namespace niusrprio { -nirio_resource_manager::nirio_resource_manager( - niriok_proxy& proxy) : _kernel_proxy(proxy), _fifo_info_map(), _reg_info_map() +nirio_resource_manager::nirio_resource_manager():_fifo_info_map(), _reg_info_map() { } +void nirio_resource_manager::set_proxy(niriok_proxy::sptr proxy) +{ + _kernel_proxy = proxy; +} + + nirio_resource_manager::~nirio_resource_manager() { finalize(); @@ -78,32 +83,12 @@ nirio_status nirio_resource_manager::get_register_offset( nirio_status nirio_resource_manager::_add_fifo_resource( const nirio_fifo_info_t& fifo_info) { - nirio_driver_iface::nirio_syncop_in_params_t in = {}; - nirio_driver_iface::nirio_syncop_out_params_t out = {}; - - in.function = nirio_driver_iface::NIRIO_FUNC::ADD_RESOURCE; - in.subfunction = (fifo_info.direction == OUTPUT_FIFO) ? - nirio_driver_iface::NIRIO_RESOURCE::OUTPUT_FIFO : - nirio_driver_iface::NIRIO_RESOURCE::INPUT_FIFO; - - in.params.add.fifoWithDataType.channel = fifo_info.channel; - in.params.add.fifoWithDataType.baseAddress = fifo_info.base_addr; - in.params.add.fifoWithDataType.depthInSamples = fifo_info.depth; - in.params.add.fifoWithDataType.scalarType = fifo_info.scalar_type; - in.params.add.fifoWithDataType.bitWidth = fifo_info.width; - in.params.add.fifoWithDataType.version = fifo_info.version; - - return _kernel_proxy.sync_operation(&in, sizeof(in), &out, sizeof(out)); + return _kernel_proxy->add_fifo_resource(fifo_info); } nirio_status nirio_resource_manager::_set_driver_config() { - nirio_driver_iface::nirio_syncop_in_params_t in = {}; - nirio_driver_iface::nirio_syncop_out_params_t out = {}; - in.function = nirio_driver_iface::NIRIO_FUNC::SET_DRIVER_CONFIG; - in.subfunction = 0; - - return _kernel_proxy.sync_operation(&in, sizeof(in), &out, sizeof(out)); + return _kernel_proxy->set_device_config(); } nirio_fifo_info_t* nirio_resource_manager::_lookup_fifo_info(const char* fifo_name) { |