Hi,
attached is a program that does:
open_b210()
while (1) {
t=rx(1ms of data)
tx(1ms of data at time t+4ms)
}
The program does more or less what openairinterface does.
Used to work properly, does not with 3.13.1.0
(version shipped in ubuntu 18.04).
We get lots of:
[...]
[ERROR] [B200] Got a ctrl packet with unknown SID 6488134
[ERROR] [B200] Got a ctrl packet with unknown SID 7012383
[ERROR] [B200] Got a ctrl packet with unknown SID 6029406
[ERROR] [B200] Got a ctrl packet with unknown SID 4284874799
[...]
Anything wrong done on our side? bad use of the library?
Or is it on your side?
Thanks.
Regards,
Cédric.
/* g++ bug-3.13.1.0.cc -luhd -lboost_system */
#include <uhd/usrp/multi_usrp.hpp>
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
std::string args = "type=b200";
uhd::device_addrs_t device_adds = uhd::device::find(args);
if (device_adds.size() == 0) { printf("no device\n"); exit(1); }
if (device_adds[0].get("type") != "b200") { printf("no b200\n"); exit(1); }
double usrp_master_clock = 30.72e6;
args += boost::str(boost::format(",master_clock_rate=%f") % usrp_master_clock);
args += ",num_send_frames=256,num_recv_frames=256, send_frame_size=15360, recv_frame_size=15360";
uhd::usrp::multi_usrp::sptr usrp = uhd::usrp::multi_usrp::make(args);
usrp->set_clock_source("internal");
usrp->set_master_clock_rate(30.72e6);
usrp->set_rx_rate(7680000, 0);
usrp->set_rx_freq(2680000000, 0);
usrp->set_rx_gain(60, 0);
usrp->set_tx_rate(7680000, 0);
usrp->set_tx_freq(2680000000, 0);
usrp->set_tx_gain(60, 0);
uhd::stream_args_t stream_args_rx("sc16", "sc16");
stream_args_rx.args["spp"] = str(boost::format("%d") % 768 );
stream_args_rx.channels.push_back(0);
uhd::rx_streamer::sptr rx_stream = usrp->get_rx_stream(stream_args_rx);
uhd::stream_args_t stream_args_tx("sc16", "sc16");
stream_args_tx.channels.push_back(0);
uhd::tx_streamer::sptr tx_stream = usrp->get_tx_stream(stream_args_tx);
usrp->set_tx_bandwidth(20e6);
usrp->set_rx_bandwidth(20e6);
uhd::stream_cmd_t cmd(uhd::stream_cmd_t::STREAM_MODE_START_CONTINUOUS);
cmd.stream_now = false; // start at constant delay
cmd.time_spec = usrp->get_time_now() + uhd::time_spec_t(0.05);
rx_stream->issue_stream_cmd(cmd);
uhd::rx_metadata_t rx_md;
uhd::tx_metadata_t tx_md;
tx_md.start_of_burst = true;
tx_md.end_of_burst = false;
while (1) {
char buf[7680*2*2];
std::vector<void *> buff_ptrs;
buff_ptrs.push_back(buf);
int recv = rx_stream->recv(buff_ptrs, 7680, rx_md);
//printf("got %d samples ret %d [%lld]\n", recv, rx_md.error_code, rx_md.time_spec.to_ticks(7680000));
unsigned long long ts = rx_md.time_spec.to_ticks(7680000) + 4 * 7680;
tx_md.time_spec = uhd::time_spec_t::from_ticks(ts, 7680000);
tx_md.has_time_spec = true;
int sendv = tx_stream->send(buf, 7680, tx_md, 1e-3);
//printf("send %d samples\n", sendv);
tx_md.start_of_burst = false;
}
return 0;
}
_______________________________________________
USRP-users mailing list
[email protected]
http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com