Revision 0946176f host/lib/usrp/usrp2/io_impl.cpp
| b/host/lib/usrp/usrp2/io_impl.cpp | ||
|---|---|---|
| 366 | 366 |
/*********************************************************************** |
| 367 | 367 |
* Receive streamer |
| 368 | 368 |
**********************************************************************/ |
| 369 |
rx_streamer::sptr usrp2_impl::get_rx_stream(const uhd::stream_args_t &args){
|
|
| 370 |
//map an empty channel set to chan0 |
|
| 371 |
const std::vector<size_t> channels = args.channels.empty()? std::vector<size_t>(1, 0) : args.channels; |
|
| 369 |
rx_streamer::sptr usrp2_impl::get_rx_stream(const uhd::stream_args_t &args_){
|
|
| 370 |
stream_args_t args = args_; |
|
| 371 |
|
|
| 372 |
//setup defaults for unspecified values |
|
| 373 |
args.otw_format = args.otw_format.empty()? "sc16" : args.otw_format; |
|
| 374 |
args.channels = args.channels.empty()? std::vector<size_t>(1, 0) : args.channels; |
|
| 372 | 375 |
|
| 373 | 376 |
//calculate packet size |
| 374 | 377 |
static const size_t hdr_size = 0 |
| ... | ... | |
| 383 | 386 |
boost::shared_ptr<sph::recv_packet_streamer> my_streamer = boost::make_shared<sph::recv_packet_streamer>(spp); |
| 384 | 387 |
|
| 385 | 388 |
//init some streamer stuff |
| 386 |
my_streamer->resize(channels.size()); |
|
| 389 |
my_streamer->resize(args.channels.size());
|
|
| 387 | 390 |
my_streamer->set_vrt_unpacker(&vrt::if_hdr_unpack_be); |
| 388 | 391 |
|
| 389 | 392 |
//set the converter |
| ... | ... | |
| 396 | 399 |
my_streamer->set_converter(id); |
| 397 | 400 |
|
| 398 | 401 |
//bind callbacks for the handler |
| 399 |
for (size_t chan_i = 0; chan_i < channels.size(); chan_i++){
|
|
| 400 |
const size_t chan = channels[chan_i]; |
|
| 402 |
for (size_t chan_i = 0; chan_i < args.channels.size(); chan_i++){
|
|
| 403 |
const size_t chan = args.channels[chan_i];
|
|
| 401 | 404 |
size_t num_chan_so_far = 0; |
| 402 | 405 |
BOOST_FOREACH(const std::string &mb, _mbc.keys()){
|
| 403 | 406 |
num_chan_so_far += _mbc[mb].rx_chan_occ; |
| ... | ... | |
| 427 | 430 |
/*********************************************************************** |
| 428 | 431 |
* Transmit streamer |
| 429 | 432 |
**********************************************************************/ |
| 430 |
tx_streamer::sptr usrp2_impl::get_tx_stream(const uhd::stream_args_t &args){
|
|
| 433 |
tx_streamer::sptr usrp2_impl::get_tx_stream(const uhd::stream_args_t &args_){
|
|
| 434 |
stream_args_t args = args_; |
|
| 435 |
|
|
| 436 |
//setup defaults for unspecified values |
|
| 437 |
args.otw_format = args.otw_format.empty()? "sc16" : args.otw_format; |
|
| 438 |
args.channels = args.channels.empty()? std::vector<size_t>(1, 0) : args.channels; |
|
| 439 |
|
|
| 431 | 440 |
if (args.otw_format != "sc16"){
|
| 432 | 441 |
throw uhd::value_error("USRP TX cannot handle requested wire format: " + args.otw_format);
|
| 433 | 442 |
} |
| 434 | 443 |
|
| 435 |
//map an empty channel set to chan0 |
|
| 436 |
const std::vector<size_t> channels = args.channels.empty()? std::vector<size_t>(1, 0) : args.channels; |
|
| 437 |
|
|
| 438 | 444 |
//calculate packet size |
| 439 | 445 |
static const size_t hdr_size = 0 |
| 440 | 446 |
+ vrt::max_if_hdr_words32*sizeof(boost::uint32_t) |
| ... | ... | |
| 448 | 454 |
boost::shared_ptr<sph::send_packet_streamer> my_streamer = boost::make_shared<sph::send_packet_streamer>(spp); |
| 449 | 455 |
|
| 450 | 456 |
//init some streamer stuff |
| 451 |
my_streamer->resize(channels.size()); |
|
| 457 |
my_streamer->resize(args.channels.size());
|
|
| 452 | 458 |
my_streamer->set_vrt_packer(&vrt::if_hdr_pack_be, vrt_send_header_offset_words32); |
| 453 | 459 |
|
| 454 | 460 |
//set the converter |
| ... | ... | |
| 461 | 467 |
my_streamer->set_converter(id); |
| 462 | 468 |
|
| 463 | 469 |
//bind callbacks for the handler |
| 464 |
for (size_t chan_i = 0; chan_i < channels.size(); chan_i++){
|
|
| 465 |
const size_t chan = channels[chan_i]; |
|
| 470 |
for (size_t chan_i = 0; chan_i < args.channels.size(); chan_i++){
|
|
| 471 |
const size_t chan = args.channels[chan_i];
|
|
| 466 | 472 |
size_t num_chan_so_far = 0; |
| 467 | 473 |
size_t abs = 0; |
| 468 | 474 |
BOOST_FOREACH(const std::string &mb, _mbc.keys()){
|
Also available in: Unified diff