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 USRP-users@lists.ettus.com http://lists.ettus.com/mailman/listinfo/usrp-users_lists.ettus.com