Hi all, After testing a loopback in GNU Radio with a custom block (the gain example from the Getting Started with RFNoC guide), I managed to get the samples going from the host to the "RFNoC domain" and back to the host, without involving the radio cores at all. My flowgraph was Signal Source (Host) -> RFNoC: DmaFIFO -> RFNoC: gain -> QT GUI Freq Sink (Host), and everything worked fine, so I know that what I'm trying to do is possible.
I have also made examples in UHD with C++ transmitting (Host -> TX Radio) and receiving (RX Radio -> Host) using the custom RFNoC block in the graph, by modifying the tx_waveforms and rfnoc_rx_to_file examples, and everything worked fine as well, I checked that all of the examples had a resulting signal that looked like it was expected. Now, I would like to replicate in UHD with C++ something similar to what I have in GNU Radio, a loopback using the RFNoC custom block but without involving the radio cores, basically: Host -> RFNoC -> Host. Right now my approach is to have a graph looking like Host TX -> DmaFIFO -> Gain Custom -> Host RX, I am configuring the tx and rx streamers this way: uhd::device_addr_t tx_streamer_args; uhd::stream_args_t tx_stream_args("fc32", "sc16"); tx_streamer_args["block_id"] = dmafifo_blockid; tx_streamer_args["block_port"] = "0"; tx_stream_args.args = tx_streamer_args; tx_stream_args.args["spp"] = boost::lexical_cast<std::string>(spp); //spp=364 uhd::tx_streamer::sptr tx_stream = usrp3->get_tx_stream(tx_stream_args); ---- uhd::device_addr_t rx_streamer_args; uhd::stream_args_t rx_stream_args("fc32", "sc16"); rx_streamer_args["block_id"] = gain_blockid; rx_streamer_args["block_port"] = "0"; rx_stream_args.args["spp"] = boost::lexical_cast<std::string>(spp); rx_stream_args.args = rx_streamer_args; uhd::rx_streamer::sptr rx_stream = usrp->get_rx_stream(rx_stream_args); I'm creating a thread that continuously sends (send()) samples to the DmaFIFO, and then I try to do the recv() until I get something, but I always get a timeout. It's like if the samples aren't flowing through the blocks, or like if I'm not doing the recv() right. Also, I'm getting a strange warning ([INFO] [RFNOC] No upstream blocks.) that I don't understand quite well in this context, does it have anything to do with the fact that I'm not using the radio cores? I have also tried to put a FIFO after the Gain block but I get pretty much the same result. I would appreciate any help or recommendations on how to achieve in C++ this idea of Host TX -> RFNoC -> Host RX, is there something I am missing or should consider? I am using UHD-3.15.LTS on a X310, and GNU Radio 3.7. Everything is running on Ubuntu 16.04. Thanks in advance, Jorge
_______________________________________________ USRP-users mailing list USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com