On 08/11/2021 09:18 AM, Rob Kossler wrote:
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

Agreed, that would be a good implementation. Probably wouldn't be that hard to do (he says, displaying an optimism fueled by only superficial knowledge
  of the FPGA codebase).


On Tue, Aug 10, 2021 at 6:00 PM Marcus D. Leech <patchvonbr...@gmail.com <mailto: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
    <http://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
    <mailto:usrp-users@lists.ettus.com>
    To unsubscribe send an email to usrp-users-le...@lists.ettus.com
    <mailto: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