It's too bad that Ettus did not implement the STOP_CONTINUOUS as a timed
command.  Had they done so, it would have been possible to send a
START_CONTINUOUS followed immediately by a STOP_CONTINUOUS (with time
stamp) such that the radio would automatically stop on the correct sample.
That being the case, the long captures require the user to stop the radio
after receiving the desired number of samples and then flush / discard the
rest.
Rob

On Tue, Aug 10, 2021 at 6:00 PM Marcus D. Leech <patchvonbr...@gmail.com>
wrote:

> On 08/10/2021 05:07 PM, Jonathan Tobin wrote:
>
> To follow up,
>
> This seems to be the limit now that I have updated to UHD 4.1.0.1:
>
> [ERROR] [0/Radio#0] Requesting too many samples in a single burst!
> Requested 18446744028430598144, maximum is 281474976710655.
>
> This occurs with the key arguments: --rx-rate 4.8e6 --rx-subdev "A:0 A:1
> B:0 B:1" --rx-channels "0,1,2,3" --nsamps 2880000000
>
> The nsamps value is for 10 minutes of recording (sample rate * 60 seconds
> * 10 minutes).
>
> Thanks,
> Jonathan
>
> Right.  Because that *example* program uses the NUM_SAMPS_AND_DONE
> streamer type, which requires that the *RADIO* keep track of the
>  number of samples you're interested in.  That was extended from 32-bits
> to 48 bits.
>
> You'll note that txrx_loopback_to_file will simply run continuously if you
> *dont* specify --nsamps, because it uses two different streaming modes:
>
>  // setup streaming
>     uhd::stream_cmd_t stream_cmd((num_requested_samples == 0)
>                                      ?
> uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS
>                                      :
> uhd::stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
>
> You can then just interrupt it when you're done or add some code to see if
> you have enough samples, even when you're running continuously
>   or see if enough time has elapsed, etc, etc.
>
> Contrast with rx_multi_samples:
>
>   // setup streaming
>     std::cout << std::endl;
>     std::cout << boost::format("Begin streaming %u samples, %f seconds in
> the future...")
>                      % total_num_samps % seconds_in_future
>               << std::endl;
>     uhd::stream_cmd_t
> stream_cmd(uhd::stream_cmd_t::STREAM_MODE_NUM_SAMPS_AND_DONE);
>
> Same comment as above.  You can modify this to run continuously, and then
> have the sample-gather loop exit when it is satisfied that it has
>   enough samples--either because enough time has elapsed or a sample
> counter has reached a certain value.
>
>
> The UHD API is diverse.  There's no possible way that the handful of
> *example* programs can possibly satisfy every use case, and that's simply
>   not design intent.   Some programming may be required.
>
>
> _______________________________________________
> USRP-users mailing list -- usrp-users@lists.ettus.com
> To unsubscribe send an email to usrp-users-le...@lists.ettus.com
>
_______________________________________________
USRP-users mailing list -- usrp-users@lists.ettus.com
To unsubscribe send an email to usrp-users-le...@lists.ettus.com

Reply via email to