Hi usrp users,

I experienced some problem using my X300 + TwinRx over 1 Gb/s link.

The following code example shows that after the iteration number 253, the 
program stops
with the following traceback:

terminate called after throwing an instance of 'uhd::io_error'
  what():  EnvironmentError: IOError: [0/Radio_0] sr_write() failed: 
EnvironmentError:
IOError: Block ctrl (CE_01_Port_40) no response packet - AssertionError: 
bool(buff)
  in uint64_t ctrl_iface_impl::wait_for_ack(bool)
  at /uhd_3.10.3.0-release/lib/rfnoc/ctrl_iface.cpp:204

I have good news: If I move the part of the code which construct the rx_stream, 
there is
no errors.

Is someone can explain me ? Is this an uhd bug or not ?

Matis

bool test2() {
    std::string args="addr=192.168.10.2";
    uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(args);

    std::string subdev_spec="A:0";
    usrp->set_rx_subdev_spec(subdev_spec);
    usrp->set_rx_rate(25e6, 0);
    usrp->set_rx_freq(1240e6, 0);
    usrp->set_rx_gain(50.0, 0);
    usrp->set_rx_antenna("RX1", 0);

    while (true) {
        uhd::sensor_value_t lo_locked = usrp->get_rx_sensor("lo_locked",0);
        if (lo_locked.to_bool()) {
            break;
        }
        usleep(10000);
    }


    for (int iteration=0; iteration<1000; iteration++) {
        // try this block outside the loop and every thing is ok
        uhd::stream_args_t stream_args("sc16", "sc16");
        stream_args.channels.push_back(0);
        uhd::rx_streamer::sptr rx_stream = usrp->get_rx_stream(stream_args);
        // end of block

        cout << "iteration: "<< iteration << endl;
        uhd::stream_cmd_t 
stream_cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
        stream_cmd.num_samps = 0;
        stream_cmd.stream_now = true;
        stream_cmd.time_spec = uhd::time_spec_t();
        rx_stream->issue_stream_cmd(stream_cmd);

        std::vector<std::complex<int16_t>> buff_sc16(524288);
        uhd::rx_metadata_t md;
        int num_rx_samps;


        for (int i=0; i<10; i++) {
            num_rx_samps = rx_stream->recv(&buff_sc16.front(), 
buff_sc16.size(), md, 1.0);
            cout << "recv:"<< num_rx_samps<<endl;
        }

        stream_cmd.stream_mode = uhd::stream_cmd_t::STREAM_MODE_STOP_CONTINUOUS;
        rx_stream->issue_stream_cmd(stream_cmd);
    }
    return true;
}

_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com

Reply via email to