Le 05/04/2018 à 16:29, Marcus D. Leech via USRP-users a écrit :
> On 04/05/2018 04:55 AM, Matis Alun via USRP-users wrote:
>>
>> 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
>>
> This should be possible, but it seems awkward and unusual to do what you're
> doing, in
> the way that you're doing it.
>
>
> You should:
>
> STREAM_MODE_START_CONTINUOUS
>
> read as much data as you want
>
> STREAM_MODE_STOP_CONTINUOUS
>
> That is, there's no reason to keep doing the start/stop on every iteration,
> since you
> aren't pausing, you're basically just continuous streaming in an
> awkward and unusual way.
>
> Now, this shouldn't raise that exception, but the workaround is to structure
> your code
> without tightly looping on START/STOP.
yes, you're right, but this was here a small example to show you the traceback.
My
application is more complicated and acts like a data
server which answer to any acquisition request. So each request could be at
another
frequency. So I thought we have to STOP, change the frequency
and START.
However, the problem is not that the START/STOP is inside the loop. Which is
causing the
traceback is the instanciation of the rx_stream inside
the loop. Of course, I can organize my code to avoid this but I thought that it
was
probably an UHD bug. This is the reason why I send this message
(and also to help people who had the same kind of problem...).
Regards,
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
>
>
>
> _______________________________________________
> USRP-users mailing list
> [email protected]
> http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com