我需要帮助制作 gnuradio OOT 模块。我实际上是在尝试扩展一个代码。
我正在尝试制作 2 TX 1Rx 标记流块(OOT)。对于 1Tx 1Rx,它工作正常。我正在尝试扩展它。现在的问题是,我无法配置 send() 函数。使用此代码,一个发射器发射,但另一个不工作。subdev 规范和频率等参数分配正确。我检查了。
如果我尝试进行测试,它不会显示任何问题。我检查了我的 USRP X310 的每个端口,它工作正常。
这是代码。我放了一小部分处理发送和接收缓冲区。
void
usrp_echotimer_cc_impl::send()
{
// Data to USRP
num_tx_samps = d_tx_stream->send(d_in_send1, total_num_samps,
d_metadata_tx, total_num_samps/(float)d_samp_rate+d_timeout_tx);
num_tx_samps = d_tx_stream->send(d_in_send0, total_num_samps,
d_metadata_tx, total_num_samps/(float)d_samp_rate+d_timeout_tx);
}
int
usrp_echotimer_cc_impl::work (int noutput_items,
gr_vector_int &ninput_items,
gr_vector_const_void_star &input_items,
gr_vector_void_star &output_items)
{
gr_complex *in0 = (gr_complex *) input_items[0];
gr_complex *in1 = (gr_complex *) input_items[1];
gr_complex *out = (gr_complex *) output_items[0];
// Set output items on packet length
noutput_items = ninput_items[0]=ninput_items[1];
// Resize output buffer
if(d_out_buffer.size()!=noutput_items)
d_out_buffer.resize(noutput_items);
// Send thread
d_in_send0 = in0;
d_in_send1 = in1;
d_noutput_items_send = noutput_items;
d_thread_send =
gr::thread::thread(boost::bind(&usrp_echotimer_cc_impl::send, this));
// Receive thread
d_out_recv = &d_out_buffer[0];
d_noutput_items_recv = noutput_items;
d_thread_recv =
gr::thread::thread(boost::bind(&usrp_echotimer_cc_impl::receive, this));
我的系统配置是 X310,子板 SBX-120,我使用的是 UHD-3.9。我检查了 subdev 规范、增益和频率分配。那些很好。