diff options
author | Josh Blum <josh@joshknows.com> | 2011-01-04 19:29:39 -0800 |
---|---|---|
committer | Josh Blum <josh@joshknows.com> | 2011-01-04 19:29:39 -0800 |
commit | 466bb0a7c25a2a4d252582f812edc83ba6facbfe (patch) | |
tree | 9caf30fe76b0d394284f031ea25ba6941c6102f2 /host | |
parent | 91790751b614b86393dd7963f1a4476d0e60ed4a (diff) | |
download | uhd-466bb0a7c25a2a4d252582f812edc83ba6facbfe.tar.gz uhd-466bb0a7c25a2a4d252582f812edc83ba6facbfe.tar.bz2 uhd-466bb0a7c25a2a4d252582f812edc83ba6facbfe.zip |
uhd: switched the unit test to the new convert API, implemented in vrt pkt handler
Diffstat (limited to 'host')
-rw-r--r-- | host/docs/CMakeLists.txt | 2 | ||||
-rw-r--r-- | host/lib/transport/CMakeLists.txt | 2 | ||||
-rw-r--r-- | host/lib/transport/vrt_packet_handler.hpp | 12 | ||||
-rw-r--r-- | host/test/CMakeLists.txt | 2 | ||||
-rw-r--r-- | host/test/convert_test.cpp (renamed from host/test/convert_types_test.cpp) | 85 |
5 files changed, 47 insertions, 56 deletions
diff --git a/host/docs/CMakeLists.txt b/host/docs/CMakeLists.txt index 592d66526..cd17b648a 100644 --- a/host/docs/CMakeLists.txt +++ b/host/docs/CMakeLists.txt @@ -36,7 +36,7 @@ SET(manual_sources # Setup Manual ######################################################################## MESSAGE(STATUS "") -FIND_PACKAGE(Docutils REQUIRED) +FIND_PACKAGE(Docutils) LIBUHD_REGISTER_COMPONENT("Manual" ENABLE_MANUAL ON "DOCUTILS_FOUND" OFF) diff --git a/host/lib/transport/CMakeLists.txt b/host/lib/transport/CMakeLists.txt index 0d6226e4c..a929897dc 100644 --- a/host/lib/transport/CMakeLists.txt +++ b/host/lib/transport/CMakeLists.txt @@ -23,7 +23,7 @@ # Setup libusb ######################################################################## MESSAGE(STATUS "") -FIND_PACKAGE(USB1 REQUIRED) +FIND_PACKAGE(USB1) LIBUHD_REGISTER_COMPONENT("USB" ENABLE_USB ON "ENABLE_LIBUHD;LIBUSB_FOUND" OFF) diff --git a/host/lib/transport/vrt_packet_handler.hpp b/host/lib/transport/vrt_packet_handler.hpp index 278bcfeaa..dc29d1ae5 100644 --- a/host/lib/transport/vrt_packet_handler.hpp +++ b/host/lib/transport/vrt_packet_handler.hpp @@ -26,7 +26,7 @@ #include <uhd/types/otw_type.hpp> #include <uhd/types/metadata.hpp> #include <uhd/transport/vrt_if_packet.hpp> -#include <uhd/transport/convert_types.hpp> +#include <uhd/convert.hpp> #include <uhd/transport/zero_copy.hpp> #include <boost/function.hpp> #include <stdexcept> @@ -198,8 +198,9 @@ template <typename T> UHD_INLINE T get_context_code( } //copy-convert the samples from the recv buffer - uhd::transport::convert_otw_type_to_io_type( - state.copy_buffs[i], otw_type, io_buffs, io_type, nsamps_to_copy_per_io_buff + uhd::convert::input_type otw_buffs(1, state.copy_buffs[i]); + uhd::convert::otw_type_to_io_type( + io_type, otw_type, otw_buffs, io_buffs, nsamps_to_copy_per_io_buff ); //update the rx copy buffer to reflect the bytes copied @@ -337,8 +338,9 @@ template <typename T> UHD_INLINE T get_context_code( otw_mem += if_packet_info.num_header_words32; //copy-convert the samples into the send buffer - uhd::transport::convert_io_type_to_otw_type( - io_buffs, io_type, otw_mem, otw_type, num_samps + uhd::convert::output_type otw_buffs(1, otw_mem); + uhd::convert::io_type_to_otw_type( + io_type, otw_type, io_buffs, otw_buffs, num_samps ); //commit the samples to the zero-copy interface diff --git a/host/test/CMakeLists.txt b/host/test/CMakeLists.txt index bdbde4b2c..581799d98 100644 --- a/host/test/CMakeLists.txt +++ b/host/test/CMakeLists.txt @@ -22,7 +22,7 @@ SET(test_sources addr_test.cpp buffer_test.cpp byteswap_test.cpp - convert_types_test.cpp + convert_test.cpp dict_test.cpp error_test.cpp gain_group_test.cpp diff --git a/host/test/convert_types_test.cpp b/host/test/convert_test.cpp index 378e184de..de0245c1d 100644 --- a/host/test/convert_types_test.cpp +++ b/host/test/convert_test.cpp @@ -15,14 +15,14 @@ // along with this program. If not, see <http://www.gnu.org/licenses/>. // -#include <uhd/transport/convert_types.hpp> +#include <uhd/convert.hpp> #include <boost/test/unit_test.hpp> #include <boost/foreach.hpp> #include <boost/cstdint.hpp> -#include <boost/asio/buffer.hpp> #include <complex> #include <vector> #include <cstdlib> +#include <iostream> using namespace uhd; @@ -30,14 +30,6 @@ using namespace uhd; typedef std::complex<boost::int16_t> sc16_t; typedef std::complex<float> fc32_t; -//extract pointer to POD since using &vector.front() throws in MSVC -template <typename T> void * pod2ptr(T &pod){ - return boost::asio::buffer_cast<void *>(boost::asio::buffer(pod)); -} -template <typename T> const void * pod2ptr(const T &pod){ - return boost::asio::buffer_cast<const void *>(boost::asio::buffer(pod)); -} - #define MY_CHECK_CLOSE(a, b, f) if ((std::abs(a) > (f) and std::abs(b) > (f))) \ BOOST_CHECK_CLOSE_FRACTION(a, b, f) @@ -54,20 +46,19 @@ template <typename Range> static void loopback( Range &output ){ //item32 is largest device type - std::vector<boost::uint32_t> dev(nsamps); + std::vector<boost::uint32_t> interm(nsamps); - //convert to dev type - transport::convert_io_type_to_otw_type( - pod2ptr(input), io_type, - pod2ptr(dev), otw_type, - nsamps + convert::input_type input0(1, &input[0]), input1(1, &interm[0]); + convert::output_type output0(1, &interm[0]), output1(1, &output[0]); + + //convert to intermediate type + convert::io_type_to_otw_type( + io_type, otw_type, input0, output0, nsamps ); //convert back to host type - transport::convert_otw_type_to_io_type( - pod2ptr(dev), otw_type, - pod2ptr(output), io_type, - nsamps + convert::otw_type_to_io_type( + io_type, otw_type, input1, output1, nsamps ); } @@ -98,7 +89,7 @@ BOOST_AUTO_TEST_CASE(test_convert_types_be_sc16){ otw_type.width = 16; //try various lengths to test edge cases - for (size_t nsamps = 0; nsamps < 16; nsamps++){ + for (size_t nsamps = 1; nsamps < 16; nsamps++){ test_convert_types_sc16(nsamps, io_type, otw_type); } } @@ -110,7 +101,7 @@ BOOST_AUTO_TEST_CASE(test_convert_types_le_sc16){ otw_type.width = 16; //try various lengths to test edge cases - for (size_t nsamps = 0; nsamps < 16; nsamps++){ + for (size_t nsamps = 1; nsamps < 16; nsamps++){ test_convert_types_sc16(nsamps, io_type, otw_type); } } @@ -145,7 +136,7 @@ BOOST_AUTO_TEST_CASE(test_convert_types_be_fc32){ otw_type.width = 16; //try various lengths to test edge cases - for (size_t nsamps = 0; nsamps < 16; nsamps++){ + for (size_t nsamps = 1; nsamps < 16; nsamps++){ test_convert_types_fc32(nsamps, io_type, otw_type); } } @@ -157,7 +148,7 @@ BOOST_AUTO_TEST_CASE(test_convert_types_le_fc32){ otw_type.width = 16; //try various lengths to test edge cases - for (size_t nsamps = 0; nsamps < 16; nsamps++){ + for (size_t nsamps = 1; nsamps < 16; nsamps++){ test_convert_types_fc32(nsamps, io_type, otw_type); } } @@ -179,21 +170,20 @@ BOOST_AUTO_TEST_CASE(test_convert_types_fc32_to_sc16){ (std::rand()/float(RAND_MAX/2)) - 1, (std::rand()/float(RAND_MAX/2)) - 1 ); + std::vector<boost::uint32_t> interm(nsamps); + std::vector<sc16_t> output(nsamps); - //convert float to dev - std::vector<boost::uint32_t> tmp(nsamps); - transport::convert_io_type_to_otw_type( - pod2ptr(input), io_type_in, - pod2ptr(tmp), otw_type, - nsamps + convert::input_type input0(1, &input[0]), input1(1, &interm[0]); + convert::output_type output0(1, &interm[0]), output1(1, &output[0]); + + //convert float to intermediate + convert::io_type_to_otw_type( + io_type_in, otw_type, input0, output0, nsamps ); - //convert dev to short - std::vector<sc16_t> output(nsamps); - transport::convert_otw_type_to_io_type( - pod2ptr(tmp), otw_type, - pod2ptr(output), io_type_out, - nsamps + //convert intermediate to short + convert::otw_type_to_io_type( + io_type_out, otw_type, input1, output1, nsamps ); //test that the inputs and outputs match @@ -220,21 +210,20 @@ BOOST_AUTO_TEST_CASE(test_convert_types_sc16_to_fc32){ std::rand()-(RAND_MAX/2), std::rand()-(RAND_MAX/2) ); + std::vector<boost::uint32_t> interm(nsamps); + std::vector<fc32_t> output(nsamps); - //convert short to dev - std::vector<boost::uint32_t> tmp(nsamps); - transport::convert_io_type_to_otw_type( - pod2ptr(input), io_type_in, - pod2ptr(tmp), otw_type, - nsamps + convert::input_type input0(1, &input[0]), input1(1, &interm[0]); + convert::output_type output0(1, &interm[0]), output1(1, &output[0]); + + //convert short to intermediate + convert::io_type_to_otw_type( + io_type_in, otw_type, input0, output0, nsamps ); - //convert dev to float - std::vector<fc32_t> output(nsamps); - transport::convert_otw_type_to_io_type( - pod2ptr(tmp), otw_type, - pod2ptr(output), io_type_out, - nsamps + //convert intermediate to float + convert::otw_type_to_io_type( + io_type_out, otw_type, input1, output1, nsamps ); //test that the inputs and outputs match |