diff options
Diffstat (limited to 'host/lib/convert')
-rw-r--r-- | host/lib/convert/convert_common.hpp | 26 | ||||
-rw-r--r-- | host/lib/convert/convert_item32.cpp | 1 |
2 files changed, 27 insertions, 0 deletions
diff --git a/host/lib/convert/convert_common.hpp b/host/lib/convert/convert_common.hpp index c1051ba46..933978a8f 100644 --- a/host/lib/convert/convert_common.hpp +++ b/host/lib/convert/convert_common.hpp @@ -173,6 +173,19 @@ template <> UHD_INLINE item32_t xx_to_item32_sc8_x1( ; } +template <> UHD_INLINE item32_t xx_to_item32_sc8_x1( + const sc8_t &in0, const sc8_t &in1, const double +){ + boost::uint8_t real0 = boost::int8_t(in0.real()); + boost::uint8_t imag0 = boost::int8_t(in0.imag()); + boost::uint8_t real1 = boost::int8_t(in1.real()); + boost::uint8_t imag1 = boost::int8_t(in1.imag()); + return + (item32_t(real0) << 8) | (item32_t(imag0) << 0) | + (item32_t(real1) << 24) | (item32_t(imag1) << 16) + ; +} + template <xtox_t to_wire, typename T> UHD_INLINE void xx_to_item32_sc8( const std::complex<T> *input, @@ -221,6 +234,19 @@ template <> UHD_INLINE void item32_sc8_x1_to_xx( ); } +template <> UHD_INLINE void item32_sc8_x1_to_xx( + const item32_t item, sc8_t &out0, sc8_t &out1, const double +){ + out0 = sc8_t( + boost::int8_t(boost::int8_t(item >> 8)), + boost::int8_t(boost::int8_t(item >> 0)) + ); + out1 = sc8_t( + boost::int8_t(boost::int8_t(item >> 24)), + boost::int8_t(boost::int8_t(item >> 16)) + ); +} + template <xtox_t to_host, typename T> UHD_INLINE void item32_sc8_to_xx( const item32_t *input, diff --git a/host/lib/convert/convert_item32.cpp b/host/lib/convert/convert_item32.cpp index bcac74714..57bd64860 100644 --- a/host/lib/convert/convert_item32.cpp +++ b/host/lib/convert/convert_item32.cpp @@ -41,3 +41,4 @@ DECLARE_ITEM32_CONVERTER(sc16) DECLARE_ITEM32_CONVERTER(fc32) DECLARE_ITEM32_CONVERTER(fc64) +_DECLARE_ITEM32_CONVERTER(sc8, sc8) |