aboutsummaryrefslogtreecommitdiffstats
path: root/host/lib/transport/nirio/nirio_resource_manager.cpp
diff options
context:
space:
mode:
authorAshish Chaudhari <ashish@ettus.com>2014-10-10 17:24:40 -0700
committerAshish Chaudhari <ashish@ettus.com>2014-10-10 17:24:40 -0700
commitcca10287170e8ad50740791e7cbe715b642c2a87 (patch)
treec2ba1fe383b94a1f49d9a79f5301582567330dcf /host/lib/transport/nirio/nirio_resource_manager.cpp
parentf30c5fee2a8d05f424ae1d733d0d99006eff930c (diff)
downloaduhd-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.cpp33
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) {