diff options
author | Josh Blum <josh@joshknows.com> | 2010-07-16 01:54:59 +0000 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2010-07-16 01:54:59 +0000 |
commit | 076692f74e86317f337df85b222f391f541d6bbf (patch) | |
tree | 15a652def82115f59c44b2b863a0e96ede794e04 /host/lib | |
parent | a17b6c31ecefa2f8752bb30b222eb3fa8b7d88d5 (diff) | |
parent | 8171547b6cf8eaf95901f6f4fbc47c1720caf39a (diff) | |
download | uhd-076692f74e86317f337df85b222f391f541d6bbf.tar.gz uhd-076692f74e86317f337df85b222f391f541d6bbf.tar.bz2 uhd-076692f74e86317f337df85b222f391f541d6bbf.zip |
Merge branch 'master' of ettus.sourcerepo.com:ettus/uhdpriv into usrp_e
Diffstat (limited to 'host/lib')
-rwxr-xr-x | host/lib/transport/gen_vrt_if_packet.py | 6 | ||||
-rw-r--r-- | host/lib/transport/vrt_packet_handler.hpp | 3 | ||||
-rw-r--r-- | host/lib/usrp/dsp_utils.hpp | 6 |
3 files changed, 11 insertions, 4 deletions
diff --git a/host/lib/transport/gen_vrt_if_packet.py b/host/lib/transport/gen_vrt_if_packet.py index 7438f5ff4..dbe026ba3 100755 --- a/host/lib/transport/gen_vrt_if_packet.py +++ b/host/lib/transport/gen_vrt_if_packet.py @@ -141,11 +141,17 @@ void vrt::if_hdr_unpack_$(suffix)( ){ //extract vrt header boost::uint32_t vrt_hdr_word = $(XE_MACRO)(packet_buff[0]); + /* size_t packet_words32 = vrt_hdr_word & 0xffff; //failure case if (if_packet_info.num_packet_words32 < packet_words32) throw std::runtime_error("bad vrt header or packet fragment"); + */ + //Fix for short packets sent from the fpga: + // Use the num_packet_words32 passed in as input, + // and do not use the header bits which could be wrong. + size_t packet_words32 = if_packet_info.num_packet_words32; //extract fields from the header if_packet_info.packet_type = if_packet_info_t::packet_type_t(vrt_hdr_word >> 29); diff --git a/host/lib/transport/vrt_packet_handler.hpp b/host/lib/transport/vrt_packet_handler.hpp index fdcff24b8..bd76cbb8f 100644 --- a/host/lib/transport/vrt_packet_handler.hpp +++ b/host/lib/transport/vrt_packet_handler.hpp @@ -324,7 +324,8 @@ namespace vrt_packet_handler{ ); //commit the samples to the zero-copy interface - if (send_buffs[i]->commit(if_packet_info.num_packet_words32*sizeof(boost::uint32_t)) < ssize_t(num_samps)){ + size_t num_bytes_total = (vrt_header_offset_words32+if_packet_info.num_packet_words32)*sizeof(boost::uint32_t); + if (send_buffs[i]->commit(num_bytes_total) < ssize_t(num_bytes_total)){ std::cerr << "commit to send buffer returned less than commit size" << std::endl; } } diff --git a/host/lib/usrp/dsp_utils.hpp b/host/lib/usrp/dsp_utils.hpp index 3fd5f1811..13186f354 100644 --- a/host/lib/usrp/dsp_utils.hpp +++ b/host/lib/usrp/dsp_utils.hpp @@ -85,13 +85,13 @@ namespace dsp_type1{ UHD_ASSERT_THROW(std::abs(freq) < codec_rate/2.0); static const double scale_factor = std::pow(2.0, 32); - //calculate the freq register word - boost::uint32_t freq_word = boost::math::iround((freq / codec_rate) * scale_factor); + //calculate the freq register word (signed) + boost::int32_t freq_word = boost::math::iround((freq / codec_rate) * scale_factor); //update the actual frequency freq = (double(freq_word) / scale_factor) * codec_rate; - return freq_word; + return boost::uint32_t(freq_word); } /*! |