diff options
Diffstat (limited to 'host')
| -rw-r--r-- | host/lib/rfnoc/nocscript/block_iface.cpp | 19 | 
1 files changed, 15 insertions, 4 deletions
| diff --git a/host/lib/rfnoc/nocscript/block_iface.cpp b/host/lib/rfnoc/nocscript/block_iface.cpp index 48adc8ab2..f029c3324 100644 --- a/host/lib/rfnoc/nocscript/block_iface.cpp +++ b/host/lib/rfnoc/nocscript/block_iface.cpp @@ -23,12 +23,18 @@ block_iface::block_iface(block_ctrl_base* block_ptr) : _block_ptr(block_ptr)      function_table::sptr ft = function_table::make();      // Add the SR_WRITE() function -    expression_function::argtype_list_type sr_write_args = +    expression_function::argtype_list_type sr_write_args_wo_port =          boost::assign::list_of(expression::TYPE_STRING)(expression::TYPE_INT); +    expression_function::argtype_list_type sr_write_args_w_port = boost::assign::list_of( +        expression::TYPE_STRING)(expression::TYPE_INT)(expression::TYPE_INT);      ft->register_function("SR_WRITE",          boost::bind(&block_iface::_nocscript__sr_write, this, _1),          expression::TYPE_BOOL, -        sr_write_args); +        sr_write_args_wo_port); +    ft->register_function("SR_WRITE", +        boost::bind(&block_iface::_nocscript__sr_write, this, _1), +        expression::TYPE_BOOL, +        sr_write_args_w_port);      // Add read access to arguments ($foo)      expression_function::argtype_list_type arg_set_args_wo_port = @@ -105,10 +111,15 @@ expression_literal block_iface::_nocscript__sr_write(  {      const std::string reg_name = args[0]->eval().get_string();      const uint32_t reg_val     = uint32_t(args[1]->eval().get_int()); -    bool result                = true; +    size_t port                = 0; +    if (args.size() == 3) { +        port = size_t(args[2]->eval().get_int()); +    } + +    bool result = true;      try {          UHD_NOCSCRIPT_LOG() << "[NocScript] Executing SR_WRITE() "; -        _block_ptr->sr_write(reg_name, reg_val); +        _block_ptr->sr_write(reg_name, reg_val, port);      } catch (const uhd::exception& e) {          UHD_LOGGER_ERROR("RFNOC")              << boost::format("[NocScript] Error while executing SR_WRITE(%s, 0x%X):\n%s") | 
