Rx data streaming in C++ for custom firmware

Hi Everyone,

I am running custom FPGA firmware for a low latency control system on
a USRP1. Presently I am using a variant of the usrper.cc tool for
loading firmware and control of command registers in the FPGA. I need
to be able to stream data over USB into a file or other application
but this is not a straightforward addition to the usrper code since
the implementation in usrp_basic_rx relies on the low level fusb code.
I have attempted to subclass usrp_basic_rx to make use of
usrp_basic::read(). This works fine except that when my program quits
the usrp_basic destructors reset some FPGA registers intrupting
operation of the device.
What I really need is a program like usrper which can interact with
the USRP1 interactively without reinitialization/deinitialization but
with the ability to stream data over USB. Is there something like
this in the gnuradio codebase that I am missing? It seems I have
three options:

  1. Reimplement the usrp_basic::read functionality withing usrper
  2. Subclass usrp_basic rather than usrp_basic_rx and to avoid
    destructor behavior (still need to reimplement read())
  3. Try to do this with the UHD driver instead (I don’t know if this
    will help at all)

I appreciate any suggestions.